1. 程式人生 > >Hadoop LZO的安裝與配置

Hadoop LZO的安裝與配置

Hadoop支援好幾種壓縮演算法,包括:

Bzip2

Gzip

DEFLATE

Hadoop提供這些演算法的Java實現,所以可以很方便的通過FileSystem API來進行檔案的壓縮和解壓縮。這些壓縮演算法都有一個缺陷,那就是檔案不能被分片(splittable)。這就意味著採用這些演算法進行壓縮的檔案需要讀取整個檔案才能將檔案解壓縮。這對MapReduce會產生致命的影響,因為這意味著一個壓縮檔案必須由一個map來處理。這也正是LZO優越之處,LZO壓縮的檔案是可分片的(這要感謝Hadoop社群的不懈努力)。

LZO的安裝與配置步驟如下:

1.從https://github.com/kevinweil/hadoop-lzo下載Hadoop-LZO(注意Hadoop-LZO有兩個版本,分別由Cloudera和Twitter維護),一般建議採用Twitter版本。

2.安裝lzo和lzo-devel包。在聯網情況下可以非常方便的進行安裝。

在Red Hat下通過下面的命令:

#yum install liblzo-devel

在Ubuntu下通過下面的命令:

#apt-get install liblzo2-devel

如果是在斷網的情況下可以到網站http://www.oberhumer.com/opensource/lzo/下載lzo原始碼,下載完成後通過下面的命令完成LZO的安裝:

#tar -zxf lzo-2.06.tar.gz

#cd lzo-2.06

#./configure --enable-shared 

#make

#make install

安裝完成後要確保.so檔案放在/usr/lib和/usr/lib64資料夾下面(/usr/lib/liblzo2.so /usr/lib64/liblzo2.so)。LZO需要在叢集中的每一個節點進行安裝。

安裝完成後最好把LZOP也安裝上,以便在本地使用,LZOP的下載地址:http://www.lzop.org/。

3.編譯和安裝Hadoop-LZO

首先需要下載和安裝apache-ant,這裡不再做詳細的介紹。然後通過下面的命令進行編譯:

32位機器

#export CFLAGS=-m32

#export CXXFLAGS=-m32

#ant compile-native

64位機器

#export CFLAGS=-m64

#export CXXFLAGS=-m64

#ant compile-native tar

在編譯過程中需要ivy依賴解析,可以聯網活著將依賴包拷到機器上。

4.將編譯好的HADOOP-LZO拷貝到Hadoop安裝目錄下相應的資料夾。在Hadoop-LZO的主目錄下執行下面的相關命令:

#cp build/hadoop-lzo*.jar $HADOOP_HOME/lib/

#tar -cBf - -C build/hadoop-lzo-0.4.15/lib/native/ . | tar -xBvf - -C $HADOOP_HOME/lib/native

5.配置Hadoop,在core-site.xml中新增如下內容:

<property>

<name>io.compression.codecs</name>

<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec

</value>

</property>

<property>

<name>io.compression.codec.lzo.class</name>

<value>com.hadoop.compression.lzo.LzoCodec</value>

</property>

6.測試Hadoop-Lzo是否安裝成功

首先在本地壓縮一個檔案並將該檔案put到HDFS:

#lzop 20120229

#hadoop fs -put 20120229.lzo /testdir/

對測試檔案進行索引:

#hadoop jar hadoop-lzo-0.4.15.jar com.hadoop.compression.lzo.DistributedLzoIndexer  /testdir/20120229.lzo

檢視叢集上是否有20120229.lzo.index:

#hadoop fs -ls /testdir/

如果索引檔案存在則證明安裝成功。