Hadoop集群环境部署

Hadoop 压缩/解压插件 lzo安装说明

1、所需软件
apache-ant-1.8.0-bin.tarant编译工具,必须大于1.7版本,否则有些属性不支持
kevinweil-hadoop-lzo-23e8370.tar用来编译hadoop-lzo-0.4.13.jar文件
hadoop-gpl-compression-0.1.0-rc0.tar.gz 上面的替代方案,经测试此方案更佳,建议使用
lzo-2.04.tarlzo动态库编译
lzop-1.03.tarlzo客户端工具,用来压缩解压生成.lzo文件,供测试
2、安装ant工具
apache官方网站下载1.7以上版本
解压之后放入/usr/local/apache-ant-1.8.0
ANT_HOME=/usr/local/apache-ant-1.8.0
PATH=$PATH:$ANT_HOME/bin

source /etc/profile
3、编译安装lzo库【集群中得每台机器都需要安装,应该复制库文件就可以】 在安装过程中遇到很多异常错误,所以建议每台机器上编译安装
wget
tar -zxvf lzo-2.04.tar.gz
./configure --enable-shared
make
make install

库文件默认安装到/usr/local/lib目录下

需要进行一下操作中的任意一项:
a、拷贝/usr/local/lib目录下得lzo库到/usr/lib【/usr/lib64】根据系统决定
b、在/etc/ld.so.conf.d/目录下面新建lzo.conf文件,写入库文件的路径,然后运行/sbin/ldconfig -v 使配置生效
4、安装编码解码器
https://github.com/kevinweil/hadoop-lzo上下载最新版本源码 目前为kevinweil-hadoop-lzo-23e8370.tar.gz
tar -zxvf kevinweil-hadoop-lzo-2ad6654.tar.gz 
cd kevinweil-hadoop-lzo-2ad6654 
ant compile-native tar

如果操作正确会生产相应的jar文件hadoop-lzo-0.4.13.jar用来部署到集群中

该步骤有几点注意:
a、如果遇到以下异常
/usr/bin/build-classpath: error: Could not find xml-commons-apis Java extension for this JVM
/usr/bin/build-classpath: error: Some specified jars were not found
  实为依赖插件没有正确安装,可以通过以下命令安装
  yum -y remove  xml-commons-apis
  yum -y install xml-commons-apis
b、Class org.apache.tools.ant.taskdefs.ConditionTask doesn't support the nested "typefound" element.
  原因:ant版本较低,升级到1.7.0以上版本  ant -version查看版本
  如果升级完成,环境变量也设置过还是出现以上异常 尝试绝对路径运行ant
  如:/usr/local/apache-ant-1.8.0/bin/ant compile-native tar
  
如果以上过程遇到错误,如下方案可行:
下载:
本文下载:hadoop-gpl-compression-0.1.0-rc0.tar.gz
按以上编译过程编译,如果运行正确,会生成hadoop-gpl-compression-0.1.0.jar
【注:】此jar包适合非cdh3版本的hadoop,因为cdh3修改了hadoop源码中得compression类,所以如果您是cdh用户的话参照最后一步

5、拷贝编码解码器和native库到hadoop集群中
cp build/hadoop-lzo-0.4.10.jar /usr/local/cdh3u0/hadoop-0.20.2-CDH3B4/lib/
tar -cBf - -C build/native . | tar -xBvf - -C /usr/local/cdh3u0/hadoop-0.20.2-CDH3B4/lib/native

网上有文档说直接cp也可以
cd kevinweil-hadoop-lzo-2ad6654/build/native/Linux-amd64-64/lib 
cp * $HADOOP_HOME/lib/native/Linux-amd64-64 
cp * $HBASE_HOME/lib/native/Linux-amd64-64

6、配置hadoop集群配置文件 core-site.xml,mapred-site.xml

core-site.xml
<property>  
<name>io.compression.codecs</name>  
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,com.hadoop.compression.lzo.LzopCodec</value> 
</property> 

<property>  
<name>io.compression.codec.lzo.class</name>  
<value>com.hadoop.compression.lzo.LzoCodec</value> 
</property>  

mapred-site.xml

<property>  
<name>mapred.map.output.compress</name>  
<value>true</value>  
</property> 
 
<property>  
<name>mapred.child.env</name>  
<value>JAVA_LIBRARY_PATH=/usr/local/cdh3u0/hadoop-0.20.2-cdh3u1/lib/native/Linux-amd64-64</value>  
</property> 
 
<property>  
<name>mapred.map.output.compress.codec</name>  
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property> 

7、lzo文件生成工具安装用于生成一些lzo压缩文件,供测试

wget  
tar -zxvf lzop-1.03  
cd lzop-1.03  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib  
./configure  
make && make install

安装成功之后运行:
lzop -U -9 lzo-test.txt  将.txt文件压缩成.lzo文件
hadoop fs -copyFromLocal /home/hadoop/likl/lzo-test.txt.lzolzo-test-in

【至关重要的一步】
下载lzo相关的native库(hadoop-gpl-compression-0.1.0-rc0.tar.gz)
解包,里面根目录有hadoop-gpl-compression-0.1.0.jar,lib目录下有相应的native库,

将hadoop-gpl-compression-0.1.0.jar拷贝到 hadoop的lib目录
将lib/native目录下面的库拷贝至hadoop/lib/native下面

********如果hadoop用的是cdh3版本,cloudora改写了compression类,所以需要在以上基础上修改源码进行重新编译
添加如下代码段:
import org.apache.hadoop.conf.Configuration;
public void reinit(Configuration conf) {
// do nothing  


ant重新编译后 将生成hadoop-gpl-compression-0.1.0-dev.jar拷贝至/hadoop/lib目下替换以前的包

【FAQ】?redir=1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/wyyzdy.html