阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop安装lzo

86次阅读
没有评论

共计 12748 个字符,预计需要花费 32 分钟才能阅读完成。

我的运行环境:JDK1.6、RedHat6 32bit、apache Hadoop1.X(社区版本)–Hadoop CDH3、4 版本也适用. 如有差异文中会特别注明。
在没有特别指出的话,所有操作都是在 Namenode 中进行的. 安装完成后最后同步到集群其它节点,当然你也可以根据实际环境做相应删减

一、前提

因为安装 Lzo 及 Lzop 需要本地编译,所以需要安装编译环境,像 Gcc , Ant , Maven

1gcc的安装

主要是后面编译 Lzo 时用到,如果有安装就略过

  1. yum install lib* glibc* gcc*

 

2Ant、Maven的安装

如果使用 Twitter 的 hadoop-lzo 只需要安装 Maven 就行,如果使用 kevinweil 的 hadoop-lzo 则需要安装 Ant, 并且 最好 1.8.2 及以上版本,并设置好环境变量,两者选其一,安装都比较简单。

1).ant的安装:
删除旧版本:yum remove ant
安装新版本

  1. wget http://labs.renren.com/apache-mirror//ant/binaries/apache-ant-1.9.2-bin.tar.gz
  2. tar -jxvf apache-ant-1.9.2-bin.tar.bz2

 

添加 ANT 环境变量:

  1. vi /etc/profile.d/dev.sh
  2. export ANT_HOME=/usr/local/apache-ant-1.9.2
  3. export PATH=$PATH:$ANT_HOME/bin
  4. source /etc/profile 使配置文件生效

2) Maven 安装

maven 安装与 Ant 安装差不多,解压,然后配置环境变量,如:

  1. export MAVEN_HOME=/opt/modules/apache-maven-2.2.1
  2. export PATH=$MAVEN_HOME/bin:$PATH
  3. export ANT_HOME=/opt/modules/apache-ant-1.9.2
  4. export PATH=$ANT_HOME/bin:$PATH

说明:$MAVEN_HOME/conf/setting.xml 文件需要配置正常的仓库路径,以及本地路径。

 

二、安装 LZO

操作如下:

  1. wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
  2. export CFLAGS=-m32
  3. ./configure -enable-shared
  4. make && make install

 

完成之后,lib 库文件被默认安装到了 /usr/local/lib,我们需要进一步指定 lzo 库文件的路径,两个方法都可以:

1)拷贝 /usr/local/lib 目录下的 lzo 库文件到 /usr/lib(32 位平台),或 /usr/lib64(64 位平台)

2)在 /etc/ld.so.conf.d/ 目录下新建 lzo.conf 文件,只需写入 lzo 库文件的路径(/usr/local/lib),然后运行以下命令使配置生效:

  1. /sbin/ldconfig -v

 

三、安装 hadoop-LZO

 

提醒:lzo 目前有大概 2 个版本可选,Hadoop 1.x 的时候可以按照 cloudera 的文档在 https://github.com/kevinweil/hadoop-lzo 上编译,它是 fork 自 https://github.com/twitter/hadoop-lzo。kevinweil 这个版本在 hadoop1.0.3 上不适用,有些接口已经不能用了。因为 kevinweil 这个版本已经很久没有更新了,而且它是基于 Hadoop 0.20 去编译的,也不能用于 Hadoop2.x。而 twitter hadoop-lzo 在最近将 Ant 的编译方式切换为 Maven,默认的 dependency 中 Hadoop jar 包就是 2.x 的,所以要 clone twitter 的 hadoop-lzo,用 Maven 编译 jar 包和 native library。

 

1. 下载源码

 

https://github.com/kevinweil/hadoop-lzo

 

https://github.com/twitter/hadoop-lzo

 

 

 

2. 解压缩、进入项目目录

 

 

3. 编译

 

编译分 kevinweil 和 twitter 两个版本分别说明。主要是编译方式不同,一个使用 ant,twitter 使用 maven。

 

kevinweil:

 

  1. # 32 位 OS
  2. export CFLAGS=-m32
  3. export CXXFLAGS=-m32
  4. ant compile-native tar
  5. # 64 位 OS
  6. export CFLAGS=-m64
  7. export CXXFLAGS=-m64
  8. ant compile-native tar

 

 

 
  1. # 将本地库以及 Jar 包拷贝到 hadoop 对应的目录下,并分发到各节点上
  2. cd build
  3. cp hadoop-lzo-0.4.18.jar /opt/modules/hadoop/hadoop-1.0.3/lib/
  4. cp –r native/Linux-i386-32/* /opt/modules/hadoop/hadoop-1.0.3/lib/native/Linux-i386-32/ #64 位系统则是 64 位的路径目录 Linux-amd64-64
  5. # 或者用命令:tar -cBf – -C native . | tar -xBvf – -C /opt/modules/hadoop/hadoop-1.0.3/lib/native

 

 

Twitter:

 

  1. export CFLAGS=-m32 #64 位的使用 m64
  2. export CXXFLAGS=-m32
  3. export C_INCLUDE_PATH=/usr/local/include/lzo
  4. export LIBRARY_PATH=/usr/local/lib
  5. mvn clean package -Dmaven.test.skip=true
  6. tar -cBf – -C native/Linux-i386-32/lib . | tar -xBvf – -C /opt/modules/hadoop/hadoop-1.0.3/lib/native/
  7. cp target/hadoop-lzo-0.4.19-SNAPSHOT.jar /opt/modules/hadoop/hadoop-1.0.3/lib

 

 

最终确保 $HADOOP_HOME/lib/native/Linux-i386-32/ 目录下有 libhadoop.*、及 libgplcompression.*

 

注:如果编译不过,尝试执行:

 

  1. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

 

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

四、安装 lzop

LZOP 是使用 lzo 库写的一个程序,通过 shell 命令直接可以压缩、解压缩文件。

  1. # 下载
  2. Wget http://www.lzop.org/download/lzop-1.03.tar.gz
  3. # 解压缩、进入项目目录(略过)
  4. ./configure
  5. make
  6. make install

 

用一下 lzop 的压缩解压功能, 成功安装后可直接使用 lzop 命令对文件进行解压缩操作了。

# 压缩

  1. lzop 20110915.log #生成 lzop 20110915.log.lzo 文件

 

# 解压,并输出文件内容

  1. lzop -cdpv.txt.lzo |more

五、配置 core-site.xml、mapred-site.xml

core-site.xml

  1. <property>
  2. <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.LzoCodec,com.hadoop.compression.lzo.LzopCodec</value>
  3. <!– 配置 Hadoop 压缩包 –>
  4. </property>
  5. <property>
  6. <name>io.compression.codec.lzo.class</name>
  7. <value>com.hadoop.compression.lzo.LzoCodec</value>
  8. </property>

说明:主要是增加 LzoCodec 的编码解码器。

mapred-site.xml

  1. <property>
  2. <name>mapred.compress.map.output</name>
  3. <value>true</value>
  4. <!– map 和 reduce 输出中间文件默认开启压缩 –>
  5. </property>
  6. <property>
  7. <name>mapred.map.output.compression.codec</name>
  8. <value>com.hadoop.compression.lzo.LzoCodec</value>
  9. </property>
  10. <property>
  11. <name>mapred.child.env</name>
  12. <value>LD_LIBRARY_PATH=/opt/modules/hadoop/hadoop-1.0.2/lib/native/Linux-i386-32</value>
  13. </property>

说明:主要是设置开启压缩,以及环境变量 

PS. 如果上述方式设置的 LD_LIBRARY_PATH 没有生效(通过“ps -ef |grep tasktracker”查看),可能需要通过 bin/hadoop 里设置 JAVA_LIBRARY_PATH。

解决办法:在 $hadoop_home/bin/hadoop 文件中增加如下一行即可 export JAVA_LIBRARY_PATH=$hadoop_home/lib/native/ Linux-i386-32

如果还有问题请关注下一篇博文。

六、集群节点同步

同步之前先在各节点安装 LZO 包、LZOP、LZO 编码解码器. 再把配置同步过去(mapred-site.xml、core-site.xml 文件)

注:如果你是单机伪分布式的环境,则不需要此步,直接启动 hadoop 即可。 

 

七、测试 LZO

 

启动之后怎么才能知道我们的 LZO 在 hadoop 中发挥作用了呢?可以运行以下命令进行测试,先使用 lzop 制作一个 lzo 文件并上传到 HDFS 中,然后进入 $HADOOP_HOME 目录执行

单机:

  1. hadoop jar lib/hadoop-lzo-0.4.19-SNAPSHOT.jar com.hadoop.compression.lzo.LzoIndexer /test/

Mapreduce 方式生成 index 命令:

  1. hadoop jar lib/hadoop-lzo-0.4.19-SNAPSHOT.jar com.hadoop.compression.lzo.DistributedLzoIndexer /test/

执行一个 mapred 程序,如 wordcount 添加参数 ”-inputformat com.hadoop.mapred.DeprecatedLzoTextInputFormat”

说明:以上命令 lib/ hadoop-lzo-0.4.19-SNAPSHOT.jar 是你编译后拷贝过来的 jar 文件,my_big_file.lzo 文件需要提前上传上 HDFS 的 /test 目录下。执行成功后会生成 index 文件。

在程序中使用:

  1. conf.set(“io.compression.codecs”, “org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,com.hadoop.compression.lzo.LzopCodec”);
  2. conf.set(“io.compression.codec.lzo.class”, “com.hadoop.compression.lzo.LzoCodec”);

至此,hadoop 安装 lzo 已经完成,如果安装过程中出现 Could not load native gpl library,请看下一篇的文章 http://www.linuxidc.com/Linux/2014-03/98603.htm

我的运行环境:JDK1.6、RedHat6 32bit、apache Hadoop1.X(社区版本)–Hadoop CDH3、4 版本也适用. 如有差异文中会特别注明。
在没有特别指出的话,所有操作都是在 Namenode 中进行的. 安装完成后最后同步到集群其它节点,当然你也可以根据实际环境做相应删减

一、前提

因为安装 Lzo 及 Lzop 需要本地编译,所以需要安装编译环境,像 Gcc , Ant , Maven

1gcc的安装

主要是后面编译 Lzo 时用到,如果有安装就略过

  1. yum install lib* glibc* gcc*

 

2Ant、Maven的安装

如果使用 Twitter 的 hadoop-lzo 只需要安装 Maven 就行,如果使用 kevinweil 的 hadoop-lzo 则需要安装 Ant, 并且 最好 1.8.2 及以上版本,并设置好环境变量,两者选其一,安装都比较简单。

1).ant的安装:
删除旧版本:yum remove ant
安装新版本

  1. wget http://labs.renren.com/apache-mirror//ant/binaries/apache-ant-1.9.2-bin.tar.gz
  2. tar -jxvf apache-ant-1.9.2-bin.tar.bz2

 

添加 ANT 环境变量:

  1. vi /etc/profile.d/dev.sh
  2. export ANT_HOME=/usr/local/apache-ant-1.9.2
  3. export PATH=$PATH:$ANT_HOME/bin
  4. source /etc/profile 使配置文件生效

2) Maven 安装

maven 安装与 Ant 安装差不多,解压,然后配置环境变量,如:

  1. export MAVEN_HOME=/opt/modules/apache-maven-2.2.1
  2. export PATH=$MAVEN_HOME/bin:$PATH
  3. export ANT_HOME=/opt/modules/apache-ant-1.9.2
  4. export PATH=$ANT_HOME/bin:$PATH

说明:$MAVEN_HOME/conf/setting.xml 文件需要配置正常的仓库路径,以及本地路径。

 

二、安装 LZO

操作如下:

  1. wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
  2. export CFLAGS=-m32
  3. ./configure -enable-shared
  4. make && make install

 

完成之后,lib 库文件被默认安装到了 /usr/local/lib,我们需要进一步指定 lzo 库文件的路径,两个方法都可以:

1)拷贝 /usr/local/lib 目录下的 lzo 库文件到 /usr/lib(32 位平台),或 /usr/lib64(64 位平台)

2)在 /etc/ld.so.conf.d/ 目录下新建 lzo.conf 文件,只需写入 lzo 库文件的路径(/usr/local/lib),然后运行以下命令使配置生效:

  1. /sbin/ldconfig -v

 

三、安装 hadoop-LZO

 

提醒:lzo 目前有大概 2 个版本可选,Hadoop 1.x 的时候可以按照 cloudera 的文档在 https://github.com/kevinweil/hadoop-lzo 上编译,它是 fork 自 https://github.com/twitter/hadoop-lzo。kevinweil 这个版本在 hadoop1.0.3 上不适用,有些接口已经不能用了。因为 kevinweil 这个版本已经很久没有更新了,而且它是基于 Hadoop 0.20 去编译的,也不能用于 Hadoop2.x。而 twitter hadoop-lzo 在最近将 Ant 的编译方式切换为 Maven,默认的 dependency 中 Hadoop jar 包就是 2.x 的,所以要 clone twitter 的 hadoop-lzo,用 Maven 编译 jar 包和 native library。

 

1. 下载源码

 

https://github.com/kevinweil/hadoop-lzo

 

https://github.com/twitter/hadoop-lzo

 

 

 

2. 解压缩、进入项目目录

 

 

3. 编译

 

编译分 kevinweil 和 twitter 两个版本分别说明。主要是编译方式不同,一个使用 ant,twitter 使用 maven。

 

kevinweil:

 

  1. # 32 位 OS
  2. export CFLAGS=-m32
  3. export CXXFLAGS=-m32
  4. ant compile-native tar
  5. # 64 位 OS
  6. export CFLAGS=-m64
  7. export CXXFLAGS=-m64
  8. ant compile-native tar

 

 

 
  1. # 将本地库以及 Jar 包拷贝到 hadoop 对应的目录下,并分发到各节点上
  2. cd build
  3. cp hadoop-lzo-0.4.18.jar /opt/modules/hadoop/hadoop-1.0.3/lib/
  4. cp –r native/Linux-i386-32/* /opt/modules/hadoop/hadoop-1.0.3/lib/native/Linux-i386-32/ #64 位系统则是 64 位的路径目录 Linux-amd64-64
  5. # 或者用命令:tar -cBf – -C native . | tar -xBvf – -C /opt/modules/hadoop/hadoop-1.0.3/lib/native

 

 

Twitter:

 

  1. export CFLAGS=-m32 #64 位的使用 m64
  2. export CXXFLAGS=-m32
  3. export C_INCLUDE_PATH=/usr/local/include/lzo
  4. export LIBRARY_PATH=/usr/local/lib
  5. mvn clean package -Dmaven.test.skip=true
  6. tar -cBf – -C native/Linux-i386-32/lib . | tar -xBvf – -C /opt/modules/hadoop/hadoop-1.0.3/lib/native/
  7. cp target/hadoop-lzo-0.4.19-SNAPSHOT.jar /opt/modules/hadoop/hadoop-1.0.3/lib

 

 

最终确保 $HADOOP_HOME/lib/native/Linux-i386-32/ 目录下有 libhadoop.*、及 libgplcompression.*

 

注:如果编译不过,尝试执行:

 

  1. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

 

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计12748字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中