启动Hadoop时,出现错误:Unable to load native-hadoop library for your platform

今天启动Hadoop时,发现以下问题:

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

网上搜索是说安装的hadoop-2.6.5是在32位的机子上编译的,但是现在运行在64位的机子上,所以出现了不能连接本地库的问题。所以要自己下Hadoop-2.6.5-scr.tar.gz源码,再进行编译。
作为Hadoop和lunix的新手,可谓是兜兜转转,查找资料。可以参考:
http://blog.csdn.net/njiang/article/details/43989551
首先 要有jdk1.7版的,因为我之前的jdk是1.8 的,所以最后没有编译成功。
还需要下载:
maven,libssl-dev,build-essential,pkgconf,cmake
(可以直接用apt-get install 下载安装)
将下载好的Hadoop-2.6.5-src.tar.gz解压tar -zxvf hadoop-2.6.5-src.tar.gz
然后cd /hadoop-2.6.5/目录下
最后就是编译 mvn package-DskipTests -Pdist,native
(ps:这个过程是漫长的,我等了31分钟)
编译好的项目在Hadoop-2.6.5-src/hadoop-dist/target目录下。其中Hadoop-2.6.5就是编译成功的文件。最后将这个文件下的lib/native将之前安装包里的lib/native替换掉!
最后在~/.bashrc里的加入下面的语句:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/native"

export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"

再source一下~/.bashrc,使其生效!
之前在网上看到的是在Hadoop-2.6.5下的Hadoop-env.sh中加上上面两句话。最后发现加了也没变化。还是在~/.bashrc中加入才可以!
再说一下HDFS分布式系统:
当我输入:Hadoop fs -ls 或者hadoop fs -ls .
都出现了错误:
root@Master:/usr/local/hadoop/hadoop-2.6.5# hadoop fs -ls .
ls: `.’: No such file or directory
root@Master:/usr/local/hadoop/hadoop-2.6.5#
不过输入 Hadoop fs -ls /
hadoop fs -ls /
Found 1 items
drwxr-xr-x - root supergroup 0 2016-11-02 07:30 /user
通过 hdfs dfs -mkdir /user或者hadoop fs -mkdir /data 都可以建立文件:
root@Master:/usr/local/hadoop/hadoop-2.6.5# hadoop fs -mkdir /data
root@Master:/usr/local/hadoop/hadoop-2.6.5# hadoop fs -ls /
Found 2 items
drwxr-xr-x - root supergroup 0 2016-11-02 08:40 /data
drwxr-xr-x - root supergroup 0 2016-11-02 07:30 /user

每天就被一个问题弄得崩溃,不过还好最后解决了!加油!

你可能感兴趣的:(大数据学习)