在xbox配置hadoop伪分布中主要遇到的问题以及解决的办法
热度 1已有 977 次阅读2015-6-21 13:42
|个人分类:hadoop配置
通过了一周多的时间,终于把hadoop的伪分布集群在虚拟机上搭建好了,我只搭建了两个节点的集群,主要用来学习hadoop和测试一下代码。具体的安装过程我就不多介绍,主要是介绍我在配置过程中出现的一些问题和解决方法。
我是在redhat5.3的linux安装的hadoop1.0.3的,安装linux操作系统,配置网络,最好用桥接的方式。安装java,在把hadoop软件放上去,最近hadoop几个配置文档进行配置。对于hadoop的安装都没有问题。安装好后,hadoop的进程可以起来。
接下来就是用eclipse这个开发工具去开发hadoop的mapreduce,配置的过程中就出现了问题。配置的过程中,最重要的是要用到hadoop-eclipse-plugin-1.0.3.jar这个包。而且这个包里面必须有commons-cli-1.2.jar、commons-configuration-1.6.jar、commons-httpclient-3.0.1.jar、commons-lang-2.4.jar、hadoop-core.jar、jackson-core-asl-1.0.1.jar、jackson-mapper-asl-1.0.1.jar这些包。如果少了这些包,在测试WordCount的代码是就会报错。我把这些都配置好了。很遗憾在跑WordCount的代码时,还是报错了,报错如下:
15/06/16 11:19:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/06/16 11:19:32 ERROR security.UserGroupInformation: PriviledgedActionException as:ANZHENG cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-ANZHENG\mapred\staging\ANZHENG2064170338\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-ANZHENG\mapred\staging\ANZHENG2064170338\.staging to 0700
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
这个问题,我上网找了很久,最好才发现是eclipse版本的问题,我第一次用过的最新的eclipse版本,一直报错。然后我把eclips的版换成3.7.2的;终于可以报WordCount跑成功了。
配置好了eclipse之前,我们在eclipse写好代码,必须把代码打包成jar的文件,然后上传到hadoop服务器端,用hadoop jar xxxx.jar input ouput的命令去跑这些包。我在eclipse把代码打包成jar,上传到hadoop的namenode,用hadoop jar 。。。。的命令去执行,可是报错了,报错如下:
[hadoop@master hadoop-1.0.3]$ bin/hadoop jar jarfile/WordCount1.jar /user/hadoop/input01 /user/hadoop/output02
15/06/19 22:23:09 INFO input.FileInputFormat: Total input paths to process : 2
15/06/19 22:23:09 INFO mapred.JobClient: Cleaning up the staging area hdfs://192.168.1.140:9000/home/hadoop/sysdata/tmp/mapred/staging/hadoop/.staging/job_201506192220_0001
Exception in thread "main" java.lang.IllegalArgumentException: Compression codec
org.apache.hadoop.io.compress.BZip2Codec not found.
at org.apache.hadoop.io.compress.CompressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:96)
at org.apache.hadoop.io.compress.CompressionCodecFactory.<init>(CompressionCodecFactory.java:134)
at org.apache.hadoop.mapreduce.lib.input.TextInputFormat.isSplitable(TextInputFormat.java:46)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:258)
at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:962)
at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:979)
at org.apache.hadoop.mapred.JobClient.access$600(JobClient.java:174)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:897)
。。。。。
这个报错还是挺明显,缺少org.apache.hadoop.io.compress.BZip2Codec类,上网找的资料,在hadoop上安装lzo就可以了。
安装完lzo之后,终于执行成功了。
到这里所有的hadoop配置都OK了,可以自己写mapreduce去跑了。