发布时间:2017-01-11
如果大家直接在官方网站下载Hadoop 安装包,然后安装启动Hadoop集群,会报本地库找不到的警告,但是不影响集群的运行,警告如下所示:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
上面这个警告就是因为缺少Hadoop本地库,我们可以下载Hadoop对应版本的源码进行编译,生成我们需要的本地库,然后替换集群上面的本地库就可以了。
特别提醒
1、保证你的jdk的版本是1.7而不是1.8
2、在编译hadoop源码之前,替换掉./maven/conf目录下的setting.xml
点击这里下载settings文件
我们通过以下几个步骤即可完成Hadoop源码的编译以及Snappy安装。
在root用户下在线下载:
yum -y install gcc-c++
下载并解压apache-maven-3.3.3-bin.tar.gz
tar -zxvf apache-maven-3.3.3-bin.tar.gz
配置环境变量
vi /etc/profile MAVEN_HOME=/usr/java/apache-maven-3.3.3 PATH=$MAVEN_HOME/bin: $PATH Export MAVEN_HOME
文件生效
source /etc/profile
查看是否安装成功
mvn –v
tar -zxvf protobuf-2.5.0.tar.gz mv protobuf-2.5.0 protobuf cd protobuf ./configure --prefix=/usr/local/protobuf make make check make install
配置环境变量
vi /etc/profile PROTOBUF_HOME=/usr/local/protobuf PATH=$PROTOBUF_HOME/bin:$PATH export PROTOBUF_HOME
使文件生效
source /etc/profile
查看是否安装成功
protoc --version
yum -y install cmake
1.1.5 zlib安装
yum -y install zlib
1.1.6 openssl devel
yum -y install openssl-devel
1.1.7 安装snappy
下载并解压snappy-1.1.3.tar.gz
tar -zxvf snappy-1.1.3.tar.gz mv snappy-1.1.3 snappy cd snappy ./configure make make install
下载并解压hadoop-2.6.0-src.tar.gz,然后进入hadoop-2.6.0-src目录编码Hadoop源码和Snappy压缩。当然,大家选择其它版本的Hadoop也是可以的。
///usr/local/lib是Snappy默认安装目录 mvn package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib
编译成功之后,在hadoop-2.6.0-src/hadoop-dist/target目录找到编译后的hadoop 安装包,然后安装启动Hadoop集群,会报本地库找不到的警告,解压编译后的hadoop 安装包,替换hadoop 集群所有节点native本地库即可。
我们进入Hadoop 集群任意一个节点,切换到native目录下(./hadoop/lib/native),检查本地库是否安装成功。
到这里,Hadoop 源码编译完毕,下面我们来配置Snappy压缩。
Hadoop 配置Snappy压缩比较简单,主要分为以下几步:
修改hadoop-env.sh配置文件,增加以下配置
export HADOOP_HOME=/usr/java/hadoop 安装目录 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native
1.2.2 配置core-site.xml
修改core-site.xml配置文件,增加以下配置
io.compression.codecsorg.apache.hadoop.io.compress.SnappyCodec
1.1.1 配置mapred-site.xml
如果MR中间结果需要使用snappy压缩,修改mapred-site.xml