搭建hadoop和spark中遇到的问题及解决办法

搭建hadoop遇到的问题

运行Hadoop出现警告

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

解决办法

解决方案是在文件hadoop-env.sh中增加:

1
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

运行spark-shell中遇到同样的警告

util.NativeCodeLoader: Unable to load native-hadoop library for your platform

解决办法

这个提示分两种情况

第一种是在较早的时候,apache官网下载的hadoop的程序中的native库是32位的,如果你是64位的系统,那就会报这个错,这个的检验方法为:

1
2
3
spark@master:~/usr/local/hadoop/lib/native$ file libhadoop.so.1.0.0 
libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked,
BuildID[sha1]=f10b72d3bd2583ab9b126ede6ca886c3c9cc8a88, not stripped

如果命令输出为i386,就是这个问题了,如果是上面这种输出,就不是这个问题导致的,直接跳到第二步。

  1. 输出是i386的解决办法:
    本地编译源码
    具体操作可参考:http://blog.csdn.net/young_kim1/article/details/50269501
    最后编译完以后,目标在
    hadoop-2.7.1-src/hadoop-dist/target/hadoop-2.7.1下,将此目录下的lib/nativede>替换掉$HADOOP_HOME/lib/native
  2. 配置环境变量
    在/etc/profile中,添加下面配置:
    1
    2
    3
    4
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_HOME=/home/hadoop/labc/hadoop-2.7.1
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
    export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/:$LD_LIBRARY_PATH
    并把相同配置添加到hadoop-env.sh文件末尾
    最后记得使配置生效:source /etc/profile
    再执行spark-shell,就没有这个警告了。
打赏

请我喝杯咖啡吧~

支付宝
微信