Win7+Eclipse+Hadoop2.4.1+Lunx RedHat集群开发环境配置

时间:2021-01-11 17:18:04

Win7+Eclipse+Hadoop2.4.1+Lunx RedHat集群开发环境配置


由于使用的hadoop版本比较新,所以网上的资料很少。

不过 点击打开链接 这篇文章给了很多提示,也遇到了很多类似的问题。


以下就做一个小总结:


第一 hadoop2.4.1 环境搭建 


请参考 : http://blog.csdn.net/zhoujj303030/article/details/38109571

第二 安装eclipse插件

由于hadoop2.4.1对应的eclipse目前还没有发布,所以需要自己手动的去编译插件 ,当然也可以使用目前现有的  hadoop-eclipse-2.**版本 ,我就是使用这个版本的。
Location name (取个名字)
Map/Reduce Master (Job Tracker的IP和端口,根据mapred-site.xml中配置的mapreduce.jobhistory.webapp.address来填写)
DFS Master (Name Node的IP和端口,根据core-site.xml中配置的fs.default.name来填写)


安装完成以后是这样的结构。


第三,遇到的问题

  上面一步完成后,创建一个MapReduce Project,运行时发现出问题了。

 
 
  • 错误一:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.NullPointerException
at java.lang.ProcessBuilder.start(Unknown Source)
at org.apache.hadoop.util.Shell.runCommand(Shell.java:404)
at org.apache.hadoop.util.Shell.run(Shell.java:379)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:678)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:661)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:639)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:435)
at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:277)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:125)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:344)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1268)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1265)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Unknown Source)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1265)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1286)
at org.apache.hadoop.examples.WordCount.main(WordCount.java:84)

我在hadoop集群里配的是yarn框架,那么在win7 eclipse指定hadoop安装路径时就得指定到 ../hadoop-2.4.1/share/hadoop/yarn这里  而我只指定到了../hadoop-2.4.1(因为这样在创建mr工程时可以自动导入jar包 所以总觉得这样是对的,会出现上述的问题)  当我更正为前者路径时,虽然不能自动导包,但程序能正常运行,


 
 
  • 第二个错误
出现null\bin\winutils.exe
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.  
 跟代码就去发现是HADOOP_HOME的问题。如果HADOOP_HOME为空,必然fullExeName为null\bin\winutils.exe。解决方法配置环境变量吧,或者在MapReduce程序里加上System.setProperty("hadoop.home.dir", "...");暂时缓缓。
这个时候得到完整的地址fullExeName,我机器上是C:\hadoop-2.4.1\bin\winutils.exe。继续执行代码又发现了错误

Could not locate executable C:\hadoop-2.4.1\bin\winutils.exe in the Hadoop binaries.  
 就去一看,没有winutils.exe这个东西。去https://github.com/srccodes/hadoop-common-2.2.0-bin下载一个,放就去即可hadoop2.4.1可以使用2.2.0的。

 
 
  • 第三个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z  

 显然缺少dll文件,还记得https://github.com/srccodes/hadoop-common-2.2.0-bin下载的东西吧,里面就有hadoop.dll,放在System32文件夹下面,并在环境变量里配置PATH=HADOOP_HOME/bin,同样hadoop2.4.1可以使用2.2.0dll文件.



总结,出现了这么多问题,主要还是要自己去研究。

我的libhdfs.so.0.0.0 文件是自己在hadoop集群上的namenode编译的,是64位的hadoop2.4.1源代码编译

编译完成的64位libhdfs.so.0.0.0 文件下载地址: