赞
踩
错误截图如下:
有个WARN提示hadoop不能加载本地库,网上搜了下,这个问题基本上是由于在apache hadoop官网上下载的hadoopXXX.bin.tar.gz实在32位的机器上编译的(蛋疼吧),我集群使用的64bit的,加载.so文件时出错,当然基本上不影响使用hadoop(如果你使用mahout做一些机器学习的任务时有可能会遇到麻烦,加载不成功,任务直接退出,所以还是有必要解决掉这个warn的)。
但是每次运行一个命令多有这么个WARN很不爽,想干掉也很简单:
1. 下载hadoop对应版本源码 2. 在集群的某台机器上编译 3. 替换之前的$HADOOP_HOME/lib/native为新编译的native
编译源码还是挺复杂的
简单的做法是找到编译好后的
hadoop-2.4.1-src/hadoop-dist/target/hadoop-2.4.1.tar.gz
注意:可以去网站:http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 下载对应的编译版本
另外我这还有编译好的2.6.5版本的,可以在这下载 http://pan.baidu.com/s/1bpxic2b
用这里面的lib替换掉原来的hadoop中的lib
并修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh
在最后加上:
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
换掉lib库,在hadoop-env.sh中增加配置文件后,在linux中输入HDFS shell时错误解决
但是用eclipse代码实现HDFS中的文件的上传与下载等操作时仍会报错
解决方法如下:
1 下载hadoop到本地,解压到D:\hadoop\hadoop-2.6.5 ,发现bin目录下没有winutils.exe文件
2 去github上 https://github.com/srccodes/hadoop-common-2.2.0-bin 下载bin文件,并将里面的winutils.exe拷贝到D:\hadoop\hadoop-2.6.5\bin目录下
3 在每一个需要对hdfs操作的类中加入如下代码块
- static {
- System.setProperty("hadoop.home.dir", "D:\\hadoop\\hadoop-2.6.5");
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。