首页 > 代码库 > Intellij IDEA下远程调试hadoop

Intellij IDEA下远程调试hadoop

最近在开发新的MapReduce程序时,经常要打jar包上传到服务器,然后运行hadoop jar      balaba。。。。。。

看到网上都是在Eclipse下调试hadoop集群中MapReduce程序,而且描述的都是模模糊糊,有些根本就是错的,实在不忍心直视,其中有一篇关于idea下调试hadoop集群程序的博客,被疯狂转载,可是仔细看看,根本没用,因为他的平台是Linux。

使用Intellij IDEA+maven的开发hadoop的同学,如果想在本地直接运行,不去上传jar包,可以静下心来看看。

转载请注明出处:http://blog.csdn.net/qingmu0803/article/details/42124571

(1)确保你运行idea的用户和线上hadoop集群的用户一直,不然会报错。也可以在线上hdfs-site.xml中直接修改hdfs的权限,不建议这么做,不安全。

在你的idea安装目录下,新建一个批处理命令.bat文件,内容如下:

runas /user:你线上hadoop集群的用户名  /savecred idea.exe

解释以下  /savecred  这句是运行一次可以保存密码的命令

(2)使用maven打jar包,maven配置如下

<span style="font-family:Microsoft YaHei;font-size:14px;"><profile>
            <id>test</id>
            <properties>
                <env>test</env>
                <packing-type>jar</packing-type>
            </properties>
			 <build>
			  <resources>
            <resource>
                <directory>src/main/config/${env}</directory>
            </resource>
        	</resources>
		        <plugins> 
		            <plugin>
		                <artifactId>maven-assembly-plugin</artifactId>
		                <version>2.2.2</version>
                        <executions>  <!--执行器 mvn assembly:assembly-->
                            <execution>
                                <id>make-zip</id><!--名字任意 -->
                                <phase>package</phase><!-- 绑定到package生命周期阶段上 -->
                                <goals>
                                    <goal>single</goal><!-- 只运行一次 -->
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
		                    <archive>
		                        <manifest>
		                            <mainClass>test.Test</mainClass><!-- 你的主类 -->
		                        </manifest>
		                    </archive>
		                    
		                    <descriptorRefs>
		                        <descriptorRef>jar-with-dependencies</descriptorRef>
		                    </descriptorRefs>
                            <outputDirectory>./</outputDirectory><!-- 你的输出路径 -->
		                </configuration>
		            </plugin>
		        </plugins>
		    </build>
        </profile></span>
(3)在程序中配置线上hadoop的执行环境

<span style="font-family:Microsoft YaHei;font-size:14px;">        </span>
<span style="font-family:Microsoft YaHei;font-size:14px;">        conf.set("mapred.jar", "Test-1.0-SNAPSHOT-jar-with-dependencies.jar");
        conf.set("fs.default.name", "hdfs://192.168.111.1:9000");//namenode的地址
        conf.set("mapred.job.tracker", "192.168.111.1:9001");//namenode的地址</span>
在执行的Driver前,在全局的,注意是全局的Configuration中增加上面三句话

(4)配置运行的类

技术分享

配置你的输入参数即可。

需要注意的事项有:

(1)你的windows下必须有一个和线上hadoop集群一样的用户名

(2)确保你的hadoop程序中的所有jar都是compile

技术分享

先使用maven将程序打包,然后运行你的程序即可

技术分享

希望对大家的开发有所帮助

Intellij IDEA下远程调试hadoop