Hadoop分佈式文件系統——LZO

    Hadoop提供了bzip2、gzip、DEFALTE等多種傳統壓縮算法,亦實現了這些算法的JAVA實現。因爲,既可以用FileSystem API對文件進行壓縮和解壓,也可以通過MapReduce輸入輸出格式化來實現。這些算法的缺點是:壓縮格式不可分割,即不可分片!
    然而,Hadoop的一個作業流程中,是由輸入文件字節數與數據塊的字節數(默認數據塊是64MB)決定mapper啓動的數量。亦即每個mapper都將接收到需要處理的數據塊,稱之爲數據分片。於是,LZO壓縮算法隨之產生。
    操作步驟:
        1、安裝lzo和lzo-devel包。

Red Hat Linux:# yum install liblzo-devel
Ubuntu:apt-get install liblzo2-devel

        2、進入hadoop-lzo源碼解壓的路徑編譯:

# cd kevinweil-hadoop-lzo-6bb1b7f/
# export JAVA_HOME=/path/to/jdk 
# ./setup.sh
# BUILD SUCCESSFUL ----編譯成功

        3、複製編譯好的JAR文件到集羣上的hadoop類庫目錄下,以及core-site.xml、hadoop-env.sh的配置:

# cp build/hadoop-lzo*.jar /path/to/hadoop/lib/
# tar -cBf - -C build/hadoop-lzo-0.4.15/lib/native/ . | tar -xBvf -C /path/to/hadoop/lib/native

-------start 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>
-------end core-site.xml--------
-------start hadoop-env.sh--------
export HADOOP_CLASSPATH=/path/to/hadoop/lib/hadoop-lzo-X.X.XX.jar
export JAVA_LIBRARY_PATH=/path/to/hadoop/lib/native/hadoop-lzo-native-lib:/path/to/hadoop/lib/native/other-native-libs
-------end hadoop-env.sh--------

        4、測試並試用:

# lzop 88_99.txt ###壓縮數據
# hadoop fs -put 88_99.txt.lzo /tt/88_99.txt.lzo ###上傳
# hadoop java /usr/lib/hadoop/lib/hadoop-lzo-0.4.15.jar com.hadoop.compression.lzo.DistributedLzoIndexer /tt/88_99.txt.lzo ###創建索引
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章