一、IDEA开发hadoop项目配置

1.新建工程:

    

idea与hadoop集成 idea搭建hadoop_jar包

2.选择maven,勾上create from archetype,选择quickstart:

    

idea与hadoop集成 idea搭建hadoop_jar_02

3.填写maven的坐标,“groupId”,“artifactId”,以及“version”,其中groupId是公司域名的反写,而artifactId是项目名或模块名,而version就是该项目或模块所对应的版本号,点击next:


    

idea与hadoop集成 idea搭建hadoop_jar_03


4.可以使用本地的maven,直接点击next。或者下载maven,勾选第一个Override,使用下载的settings目录:

    

idea与hadoop集成 idea搭建hadoop_hadoop_04

5.写项目名,项目位置:

    

idea与hadoop集成 idea搭建hadoop_idea与hadoop集成_05

6.点击finish,修改pom.xml,添加Hadoop依赖,添加完后点击右下角弹出的import changes,会自动添加依赖的jar包:

     

idea与hadoop集成 idea搭建hadoop_jar_06

    

idea与hadoop集成 idea搭建hadoop_jar_07

7.项目配置完成。

二、IDEA开发hadoop项目打包

1.右击项目名称,选择Open Module Settings

    

idea与hadoop集成 idea搭建hadoop_jar包_08

2.选择Artifacts,点击中间绿色的+号,选择JAR,再选择第二个选项

idea与hadoop集成 idea搭建hadoop_jar包_09

3.点击Main Class右边的小方块选择主类,下一个选项如果要打成一个压缩包选择第一个,如果其他依赖包要分开放也就是最后是多个jar包选择第二个选项。我选第一个,然后点击OK

    

idea与hadoop集成 idea搭建hadoop_idea与hadoop集成_10

4.勾选include in project build,点击+和-号添加最后jar包内的其他jar包,主要是将项目依赖的jar包导入,如果一开始配置好了,直接点OK就行。

    

idea与hadoop集成 idea搭建hadoop_jar_11

5.然后点击Build按钮,选择Build Artifacts... 

    

idea与hadoop集成 idea搭建hadoop_jar包_12

6.出现以下选择框,第一次使用选择Build,非第一次选Rebuild

    

idea与hadoop集成 idea搭建hadoop_hadoop_13

7.Build完之后多出了out目录与target目录,接着就可以去本地out目录下找已经完成的jar包

idea与hadoop集成 idea搭建hadoop_idea与hadoop集成_14

三、出现过的问题

    按以上步骤完成的jar包在使用hadoop jar命令会出现奇怪的问题,如果你的MapReduce程序的输入路径,输出路径写死的话不会出现问题,但是如果输入路径和输出路径接受的是参数的话会报错。具体情况如下:

    比如使用hadoop jar   /本地目录/包名.jar    包名.主类名   输入路径   输出路径。

    会首先报出FileAlreadyExistsException: Output directory  输入路径,也就是把输入路径当成了输出路径

    删除输入路径后会报出InvalidInputException: Input path does not exist  /hdfs目录名/包名.主类名

    由此可以判定hadoop jar命令将包名.主类名当成了输入路径,把输入路径当成了输出路径,输出路径多余。

解决办法:

不要选择主类,让它空着。hadoop jar命令的第二个参数需要你输入主类的名称,如果你打包时选择了主类的名称,它就会将你的包名.主类名当成输入路径,因为它已经知道主类是什么了,所以会产生这样的错误。