hadoop的一个坑

版权声明:本文为sam的原创文章,转载请添加出处:http://blog.csdn.net/samed https://blog.csdn.net/samed/article/details/51728041

最近搞搞hadoop,感觉还不错。

但是就是在VirtualBox里面装完hadoop后,每次执行命令,都会提示一个WARNING:

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


是每一个命令都会提示,不能忍啊,更何况我有“轻微的”强迫症。

上网搜索了一下,根据文献1,原来坑爹的是apache,官网上编译好的hadoop是32位的。

这……

我想爆粗~~~~现在哪家公司的服务器还用32位的啊?

解决方案暴力直接:下载源码重新编译,然后替换native库。


呃,如果真的很简单我就不多说了,可是还是稍微有点麻烦。



分几步走:

一、下载

1. 下载对应版本的hadoop源码,这里以当前最新的2.6.4版本为例(http://hadoop.apache.org/releases.html)。

2. 下载protoc2.5.0版本(http://protobuf.googlecode.com/files/protobuf-2.5.0.zip)。

3. 下载maven最新版本,以3.3.9为例(http://maven.apache.org/download.cgi)。

4. 预先装好jdk等东西(这个是hadoop安装的前提,我就不多说了哈)。

二、安装protoc

这个东西最难还是在下载这一步,因为yum没发安装,而网上贴的都是官网或者github的链接,github的源码下来了也不懂安装啊。

而官网只有2.6版本的,不行啊,一定要2.5.0。

找啊找啊找朋友,终于找到了1.2 的那个链接的2.3.0版本,机智的我改了一下版本号,居然可以下载。

安装简单:

unzip protobuf-2.5.0.zip

cd protobuf-2.5.0

./configure

make

make install

三、安装maven

说是安装,其实就是解压和配路径。

tar xf apache-maven-3.3.9-bin.tar.gz

mv apache-maven-3.3.9 maven       #

cp -R maven /opt/                                 # 个人习惯和建议,因为linux和windows不同,不同用户访问权限不一样的,还是放在一个公共目录,大家都能用。

chmod 755 /opt/maven

rm -rf maven                                          # 删除当前解压出来的东西。

vi .bashrc

# 进行路径配置

PATH=/opt/maven/bin:$PATH          # 请根据实际情况处理

export PATH

vi /opt/maven/conf/settings.xml

# 进行仓库路径的配置

# 在 settings 标签里面添加如下内容:

<localRepository>/opt/maven/.m2/repository</localRepository>

# 结果应该和下面这张图类似:


# 这一步的作用是配置好maven的仓库路径,这样服务器上所有用户都能用这个仓库,不用每个人都重新下载。

四、编译hadoop:

tar xf hadoop-2.6.4-src.tar.gz

cd hadoop-2.6.4-src

mvn package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar

然后经过漫长的等待之后(如果下载速度过慢,可以自行按照参考文献1配置国内的源:开源中国,这样会快点,公司自备等云梯,我就不配置了),

可以看到:

[INFO] BUILD SUCCESS

表示编译完成。

进入hadoop-dist/target目录,把刚刚的编译好的包拷贝出来找到native库并替换掉:

cd $HADOOP_HOME/lib

tar cf native.tar.gz native                 # 养成良好习惯,先备份

mkdir -p ~/tmp

cp hadoop-2.6.4.tar.gz ~/tmp/

cd ~/tmp

tar xf hadoop-2.6.4.tar.gz

cd hadoop-2.6.4/lib

cp -Rf native $HADOOP_HOME/lib

然后在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 文件末尾加上如下这句话:

vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh 

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"

五、重启hadoop:

stop-all.sh

start-all.sh

六、测试:

hdfs dfs -ls



可能会有的报错:

如果你按照我上面这样子来做,不会报错的啦,报错就留言吧。



-----------------------------------

参考文献:

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



猜你喜欢

转载自blog.csdn.net/samed/article/details/51728041
今日推荐