1. 程式人生 > >hadoop2.2支援snappy壓縮安裝及配置

hadoop2.2支援snappy壓縮安裝及配置

由於我們的生產環境沒有root使用者使用許可權,且為了不在所有主機上安裝一些依賴外掛,因此我啟用了使用hadoop native本地庫,即在core-site.xml中配置了:

<property>
        <name>hadoop.native.lib</name>
        <value>true</value>
</property>

就因為這個配置,導致按照網上的方式不成功,靈機一動想到這點,才將問題解決,下面詳細介紹,基於google snappy官方介紹https://code.google.com/p/hadoop-snappy/,我稍微做下改動,這個改動也是因為啟用 native本地庫才做的改動。

1. Requirements: gcc c++, autoconf, automake, libtool, Java 6, JAVA_HOME set, Maven 3

yum install  gcc c++, autoconf, automake, libtool
jdk,我使用的是java7,配置環境變數就可
maven,下載tar.gz包解壓後設置環境變數可直接使用
2. Build/install Snappy (http://code.google.com/p/snappy/)

解壓後configure && make && make install

3. Build Hadoop Snappy

$ mvn package 
4.拷貝編譯好的檔案到hadoop環境

$cp -r /opt/hadoop-snappy-master/target/hadoop-snappy-0.0.1-SNAPSHOT-tar/hadoop-snappy-0.0.1-SNAPSHOT/lib/hadoop-snappy-0.0.1-SNAPSHOT.jar $HADOOP_HOME/lib/
$cp -r /opt/hadoop-snappy-master/target/hadoop-snappy-0.0.1-SNAPSHOT-tar/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-i386-32/* $HADOOP_HOME/lib/native/
5.修改配置檔案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,
          org.apache.hadoop.io.compress.SnappyCodec
        </value>
</property>

6.修改配置檔案mapred-site.xml(我只是增加了下面的一項,還有一項可配置mapreduce.output.fileoutputformat.compress)

  <property>
    <name>mapreduce.map.output.compress</name>
    <value>true</value>
  </property>

  <property>
    <name>mapreduce.map.output.compress.codec</name>
    <value>org.apache.hadoop.io.compress.SnappyCodec</value>
  </property>

7.重啟yarn和hdfs

8.實驗

hadoop jar ./hadoop-mapreduce-examples-2.2.0.jar wordcount hdfs://node1:8020/input hdfs://node1:8020/output2(wordcount程式,都知道怎麼用吧?)

如果不報錯,證明就安裝成功了。