win10操作虚拟机中hadoopIntelliJIDEA直接运⾏代码(不需要打jar包)
IntelliJ IDEA 2018.2.3 (Ultimate Edition)+Maven
VMware中CentOS6.5
Hadoop2.7.1
上课的时候⽼师使⽤的是Eclipse编译器,使⽤了 eclipse-hadoop的插件。可以直接在eclipse⾥运⾏,省去了先⽣成jar再发送的虚拟机中执⾏的过程。
由于编译器IDEA没有这种插件所以⾃⼰在⽹上了⼀些帖⼦,对编译器进⾏配置,达到的效果是可以直接在IDEA中运⾏MapperReducer 等代码并查看代码报错,但是不可以看到hdfs上的⽂件夹结构(可以在⾥浏览器使⽤虚拟机ip50070端⼝查看),也不可以查看⽂件内容,只是免去了⼀直⽣成jar包的繁琐过程如果⼤家有可以在idea中可视化⽂件结构的⽅法或者其他补充欢迎在下⾯留⾔
下⾯介绍⼀下操作流程和我遇到的错误:
操作流程
下载对应的Hadoop包
在win10环境变量中添加hadoop包所在的路径(⼀定要在,其他不确定必不必要)
环境变量怎么?打开windows的设置然后搜索环境变量,之后在⾼级设置中打开就可以看到了。
到之后,在⽤户或者系统环境变量中添加HOME_HADOOP(名字可以⾃⼰起)
然后在Path中添加%HADOOP_HOME%\bin
注意这⾥\bin是因为我的和hadoop.dll⽂件在hadoop所在路径的\bin⽬录下。这个路径要能到和hadoop.dll⽂件就可以了。
然后把hadoop.dll⽂件复制到C:\Windows\System32下(需要管理员权限),然后重启电脑,因为修改了环境变量要给系统⼀个重新认识⾃⼰的过程。
在Maven项⽬的POM⽂件中添加hadoop和junit的dependencies如下
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
intellijidea<artifactId>hadoop-hdfs</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
<version>2.7.1</version>
</dependency>
<!-- mvnrepository/artifact/org.apache.hadoop/hadoop-mapreduce-client-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-common</artifactId>
<version>2.7.1</version>
</dependency>
</dependencies>
之后直接在IDEA运⾏Driver⾥的main⽅法就可以啦。
这是我的⼀个简单例⼦。
个⼈理解是需要为IDEA指明hadoop调⽤的地⽅,它只要得到就可以在win下运⾏hadoop,再在代码中指明虚拟机中hadoop的ip地址就可以正常操作了。
常见错误
1.没有打印⽇志⽂件直接结束运⾏
⽅法:在项⽬properties包下添加log4j.properties
下⾯是我的log4j.properties⾥的内容
###\u8BBE\u7F6E ###
###\u8F93\u51FA\u4FE1\u606F\u5230\u63A7\u5236\u62AC ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
2.空指针异常
估计是环境变量或者系统⾥的hadoop.dll没有被识别到。确认hadoop.dll在C:\Windows\System32下并且环境变量⾥的路径可以到windows本机hadoop的路径之后重启电脑
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论