1. 程式人生 > >hadoop 壓縮 gzip biz2 lzo snappy

hadoop 壓縮 gzip biz2 lzo snappy

    整合snappy和LZO壓縮格式的一般步驟如下:

  • 1)編譯hadoop-xxx-master.zip得到一個hadoop-xxx-0.0.1-SNAPSHOT.jar和native/Linux-amd64-64/*.so等檔案;
  • 2)拷貝上面的jar和so檔案到hadoop或者hbase的目錄
    優雅的做法是:
  • 1)編譯hadoop-xxx-master.zip得到一個hadoop-xxx-0.0.1-SNAPSHOT.jar和native/Linux-amd64-64/*.so等檔案;
  • 2)拷貝上面的jar到hadoop或者hbase的目錄
  • 3)配置環境變數LD_LIBRARY_PATH,把所有的相關so檔案目錄都放進去,比如export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native:/usr/local/lib:/usr/local/lzo-2.10/lib

1.Apache hadoop預設安裝包不支援Snappy和LZO原因

    Apache hadoop官網提供的hadoop版本本身就支援Bzip2、Gzip、DEFLATE3種壓縮格式,不支援Snappy和LZO格式,原因是Snappy和LZO的程式碼庫擁有GPL開源協議許可,而不是Apache開源協議許可,關於Snappy和LZO需要hadoop運維或者hadoop提供商自己整合。關於開原始碼協議GPL、BSD、MIT、Mozilla、Apache和LGPL的區別詳見下圖:

2.hadoop壓縮優點

  • 減少了儲存檔案所需的空間
  • 加速了網路、磁碟或磁碟的資料傳輸

3.選擇hadoop檔案壓縮格式考慮三個因素

  • 檔案壓縮比例
  • 檔案解壓縮效率
  • 該壓縮格式的檔案是否可被切分,不能切分直接影響mapreduce的map的個數,從而導致mapreduce效率低下

4.壓縮格式優缺點以及應用場景

預設Apache hadoop官網下載的安裝檔案預設就支援Bzip2、Gzip、DEFLATE3種壓縮格式,但是不支援Snappy和LZO壓縮格式。因為Snappy和LZO程式碼庫擁有GPL許可,所以沒有包含在Apache的發行版本中。

4.1 DEFLATE壓縮

    DEFLATE是一個標準壓縮演算法,該演算法的標準實現是zlib。沒有可用於生成EFLATE檔案的常用linux命令工具,因為通常都不會用這個格式,而用gzip格式。gzip檔案格式只是在DEFLATE格式上增加了檔案頭和一個檔案尾。其檔案以.deflate結尾。

4.2 gzip壓縮

  優點:

  • 壓縮率比較高,而且壓縮/解壓速度也比較快;
  • hadoop本身支援,在應用中處理gzip格式的檔案就和直接處理文字一樣
  • hadoop native庫
  • 大部分linux系統都自帶gzip命令,使用方便
  缺點:
  • 不支援split
  應用場景:     當每個檔案壓縮之後在130M以內的(1個塊大小內),都可以考慮用gzip壓縮格式。譬如說一天或者一個小時的日誌壓縮成一個gzip檔案,執行mapreduce程式的時候通過多個gzip檔案達到併發。hive程式,streaming程式,和java寫的mapreduce程式完全和文字處理一樣,壓縮之後原來的程式不需要做任何修改。

  4.3 bzip2壓縮

  優點:
  • 支援split
  • 具有很高的壓縮率,比gzip壓縮率都高;
  • hadoop本身支援,但不支援native
  • 在linux系統下自帶bzip2命令,使用方便
  缺點:
  • 壓縮/解壓速度慢;
  • 不支援native
  應用場景:     適合對速度要求不高,但需要較高的壓縮率的時候,可以作為mapreduce作業的輸出格式;或者輸出之後的資料比較大,處理之後的資料需要壓縮存檔減少磁碟空間並且以後資料用得比較少的情況;或者對單個很大的文字檔案想壓縮減少儲存空間,同時又需要支援split,而且相容之前的應用程式(即應用程式不需要修改)的情況。

  4.4 lzo壓縮

  優點:
  • 壓縮/解壓速度也比較快,合理的壓縮率;
  • 支援split,是hadoop中最流行的壓縮格式;
  • 支援hadoop native庫
  • 可以在linux系統下安裝lzop命令,使用方便
  缺點:
  • 壓縮率比gzip要低一些;
  • hadoop本身不支援,需要安裝
  • 在應用中對lzo格式的檔案需要做一些特殊處理(為了支援split需要建索引,還需要指定inputformat為lzo格式
  應用場景:     一個很大的文字檔案,壓縮之後還大於200M以上的可以考慮,而且單個檔案越大,lzo優點越越明顯

  4.5 LZ4壓縮

  優點:
  • 高速壓縮解壓庫, 壓縮率為 zlib 2/3, 但速度很高
  缺點:
  • linux系統下沒有對應的命令
  • 不支援split
  • 不支援流式操作

  4.6 snappy壓縮

  優點:
  • 高速壓縮速度和合理的壓縮率;
  • 支援hadoop native庫
  缺點:
  • 不支援split;
  • 壓縮率比gzip要低;
  • hadoop本身不支援,需要安裝
  • linux系統下沒有對應的命令
  應用場景:     當mapreduce作業的map輸出的資料比較大的時候,作為map到reduce的中間資料的壓縮格式;或者作為一個mapreduce作業的輸出和另外一個mapreduce作業的輸入。

5.整合LZO到Apache hadoop中

    關於LZO如何整合到Apache hadoop可以詳見GitHub上hadoop-lzo的原始碼https://github.com/twitter/hadoop-lzo說明,這裡下面的步驟也是我參照原始碼經過實踐得來,關於更詳細的內容(必須的依賴庫,如何安裝,如何處理安裝中LZO找不到,如何去使用LZO)請參見原始碼說明。     如果你在hadoop權威指南里看到LZO的原始碼庫為https://github.com/kevinweil/hadoop-lzo,不足為奇,這個原始碼庫依然在GitHub中,它採用的是ant進行編譯,不過已經6年未更新了,新的hadoop-lzo原始碼已經轉移到https://github.com/twitter/hadoop-lzo,如果你非得使用https://github.com/kevinweil/hadoop-lzo,請參見本文的第7節進行整合。

  5.2 原始碼編譯前的準備工作

    (1) linux庫LZO的安裝     ubuntu中使用apt-get install lzo安裝,centos中使用yum -y install lzo安裝,這裡我個人習慣下載lzo原始碼然後編譯安裝。     注意:這裡的linux庫LZO需要在hadoop叢集的每個節點都需要安裝。
#linux安裝lzo
#下載並解壓linux庫lzo原始碼
cd /root
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
tar -zxvf lzo-2.10.tar.gz
#編譯安裝linuxlzo原始碼
cd /root/lzo-2.10
#這裡我指定安裝linux的lzo庫到linux機器的/usr/local/lzo-2.10目錄
./configure --enable-shared --prefix /usr/local/lzo-2.10
make
make install
    (2)JDK安裝
#安裝jdk-7u65-linux-x64.gz
#下載jdk-7u65-linux-x64.gz放置於/opt/java/jdk-7u65-linux-x64.gz並解壓
cd /opt/java/
tar -zxvf jdk-7u65-linux-x64.gz
#配置linux系統環境變數
vi /etc/profile
#在檔案末尾追加如下內容
export JAVA_HOME=/opt/java/jdk1.7.0_65 
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin 
#使配置生效
source /etc/profile
#檢查JDK環境是否配置成功
java -version
    (3)MAVEN安裝
#1.下載apache-maven-3.3.3.tar.gz放置於/opt/下並解壓
cd /opt
tar zxvf apache-maven-3.3.3.tar.gz
#2.配置環境變數
vi /etc/profile
#新增如下內容
MAVEN_HOME=/opt/apache-maven-3.3.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
#3.使配置生效
source /etc/profile
#4.檢測maven是否安裝成功
mvn -version
#5.配置maven倉庫映象,目前國內maven映象建議使用阿里雲庫
vi /home/hadoop/.m2/settings.xml
#內容如下:
<?xml version="1.0" encoding="UTF-8"?>  
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  <!--預設下載依賴放置於/home/hadoop/.m2/repository目錄下,這裡我指定我想存放於/opt/maven-localRepository-->  
  <localRepository>/opt/maven-localRepository</localRepository>  
  <pluginGroups></pluginGroups>  
  <proxies></proxies>  
  <servers></servers>  
  <mirrors>  
  <!--add by aperise start-->  
    <mirror>  
      <id>alimaven</id>  
      <name>aliyun maven</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
      <mirrorOf>central</mirrorOf>          
    </mirror>    
  <!--add by aperise end-->  
  </mirrors>  
  <profiles>  
  </profiles>  
</settings>  

  5.3 hadoop-lzo庫編譯安裝

#下載並解壓原始碼hadoop-lzo-master
cd /home/hadoop
wget https://github.com/twitter/hadoop-lzo/archive/hadoop-lzo-master.zip
unzip hadoop-lzo-master.zip
cd /home/hadoop/hadoop-lzo-master
#注意以下三行一起執行,前兩行是指定LZO庫檔案所在位置,注意和之前安裝的linux庫LZO所在位置保持一致
C_INCLUDE_PATH=/usr/local/lzo-2.10/include \
LIBRARY_PATH=/usr/local/lzo-2.10/lib \
mvn clean package -DskipTests
    編譯完成後會在/home/hadoop/hadoop-lzo-master/target下得到如下檔案:     其中hadoop-lzo-0.4.21-SNAPSHOT.jar和native就是我們需要的jar和庫檔案,在後面只需要拷貝jar和native下面的庫檔案到hadoop下即可完成整合,這裡在/home/hadoop/hadoop-lzo-master/target/native/Linux-amd64-64/lib的庫檔案如下:

  5.4 整合hadoop-lzo庫到hadoop-2.7.4

    需要拷貝hadoop-lzo-0.4.21-SNAPSHOT.jar到/home/hadoop/hadoop-2.7.4/share/hadoop/common/lib/下面,需要拷貝/home/hadoop/hadoop-lzo-master/target/native/Linux-amd64-64/lib/下的檔案到/home/hadoop/hadoop-2.7.4/lib/native/下面
cp -r /home/hadoop/hadoop-lzo-master/target/native/Linux-amd64-64/lib/* /home/hadoop/hadoop-2.7.4/lib/native/
cp -r /home/hadoop/hadoop-lzo-master/target/hadoop-lzo-0.4.21-SNAPSHOT.jar /home/hadoop/hadoop-2.7.4/share/hadoop/common/lib/

6.整合Snappy到Apache hadoop中

    關於Snappy如何整合到Apache hadoop可以詳見GitHub上hadoop-snappy的原始碼https://github.com/electrum/hadoop-snappy說明,這裡下面的步驟也是我參照原始碼經過實踐得來,關於更詳細的內容(必須的依賴庫,如何安裝)請參見原始碼說明。

  6.2 原始碼編譯前的準備工作

    (1) linux庫Snappy的安裝     ubuntu中使用apt-get install snappy安裝,centos中使用yum -y install snappy安裝,這裡我個人習慣下載snappy原始碼然後編譯安裝。     注意:這裡的linux庫LZO需要在hadoop叢集的每個節點都需要安裝。 (2)JDK安裝
#安裝jdk-7u65-linux-x64.gz
#下載jdk-7u65-linux-x64.gz放置於/opt/java/jdk-7u65-linux-x64.gz並解壓
cd /opt/java/
tar -zxvf jdk-7u65-linux-x64.gz
#配置linux系統環境變數
vi /etc/profile
#在檔案末尾追加如下內容
export JAVA_HOME=/opt/java/jdk1.7.0_65 
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin 
#使配置生效
source /etc/profile
#檢查JDK環境是否配置成功
java -version
    (3)MAVEN安裝
#1.下載apache-maven-3.3.3.tar.gz放置於/opt/下並解壓
cd /opt
tar zxvf apache-maven-3.3.3.tar.gz
#2.配置環境變數
vi /etc/profile
#新增如下內容
MAVEN_HOME=/opt/apache-maven-3.3.3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
#3.使配置生效
source /etc/profile
#4.檢測maven是否安裝成功
mvn -version
#5.配置maven倉庫映象,目前國內maven映象建議使用阿里雲庫
vi /home/hadoop/.m2/settings.xml
#內容如下:
<?xml version="1.0" encoding="UTF-8"?>  
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  <!--預設下載依賴放置於/home/hadoop/.m2/repository目錄下,這裡我指定我想存放於/opt/maven-localRepository-->  
  <localRepository>/opt/maven-localRepository</localRepository>  
  <pluginGroups></pluginGroups>  
  <proxies></proxies>  
  <servers></servers>  
  <mirrors>  
  <!--add by aperise start-->  
    <mirror>  
      <id>alimaven</id>  
      <name>aliyun maven</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
      <mirrorOf>central</mirrorOf>          
    </mirror>    
  <!--add by aperise end-->  
  </mirrors>  
  <profiles>  
  </profiles>  
</settings>  

  6.3 hadoop-snappy庫編譯安裝

#下載並解壓原始碼hadoop-snappy-master
cd /home/hadoop
wget https://github.com/electrum/hadoop-snappy/archive/hadoop-snappy-master.zip
unzip hadoop-snappy-master.zip
cd /home/hadoop/hadoop-snappy-master
#編譯中如果遇到問題,請參見http://www.cnblogs.com/shitouer/archive/2013/01/14/2859475.html進行解決
mvn package
     編譯完成後會在/home/hadoop/hadoop-snappy-master/target下得到如下檔案:
    其中hadoop-snappy-0.0.1-SNAPSHOT.tar.gz就是我們需要的檔案,裡面包含hadoop-snappy-0.0.1-SNAPSHOT.jar和相關庫檔案。

  6.4 整合hadoop-snappy庫到hadoop-2.7.4

   需要拷貝hadoop-snappy-0.0.1-SNAPSHOT.jar到/home/hadoop/hadoop-2.7.4/share/hadoop/common/lib/下面,需要拷貝/home/hadoop/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64/下的檔案到/home/hadoop/hadoop-2.7.4/lib/native/下面
#解壓hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
cp /home/hadoop/hadoop-snappy-master/target/hadoop-snappy-0.0.1-SNAPSHOT.tar.gz /home/hadoop/
cd /home/hadoop
tar -zxvf hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
#拷貝jar和庫到
cp -r /home/hadoop/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64/* /home/hadoop/hadoop-2.7.4/lib/native/
cp -r /home/hadoop/hadoop-snappy-0.0.1-SNAPSHOT/lib/hadoop-snappy-0.0.1-SNAPSHOT.jar /home/hadoop/hadoop-2.7.4/share/hadoop/common/lib

7.整合LZO到Apache hadoop中(另一個hadoop-lzo庫,GitHub已經6年未更新,不建議用,因為hadoop權威指南提到,這裡把實踐的整合記錄一下)

    關於LZO如何整合到Apache hadoop可以詳見GitHub上hadoop-lzo的原始碼https://github.com/kevinweil/hadoop-lzo說明,這裡下面的步驟也是我參照原始碼經過實踐得來,關於更詳細的內容(必須的依賴庫,如何安裝,如何處理安裝中LZO找不到,如何去使用LZO)請參見原始碼說明。

  7.2 原始碼編譯前的準備工作

    (1) linux庫LZO的安裝     ubuntu中使用apt-get install lzo安裝,centos中使用yum -y install lzo安裝,這裡我個人習慣下載lzo原始碼然後編譯安裝。     注意:這裡的linux庫LZO需要在hadoop叢集的每個節點都需要安裝。
#linux安裝lzo
#下載並解壓linux庫lzo原始碼
cd /root
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
tar -zxvf lzo-2.10.tar.gz
#編譯安裝linuxlzo原始碼
cd /root/lzo-2.10
./configure --enable-shared
make
make install
    (2)JDK安裝
#安裝jdk-7u65-linux-x64.gz
#下載jdk-7u65-linux-x64.gz放置於/opt/java/jdk-7u65-linux-x64.gz並解壓
cd /opt/java/
tar -zxvf jdk-7u65-linux-x64.gz
#配置linux系統環境變數
vi /etc/profile
#在檔案末尾追加如下內容
export JAVA_HOME=/opt/java/jdk1.7.0_65 
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin 
#使配置生效
source /etc/profile
#檢查JDK環境是否配置成功
java -version
    (3)ANT安裝
#下載並解壓apache-ant-1.8.2-bin.zip
cd /home/hadoop
wget http://mirrors.tuna.tsinghua.edu.cn/apache//ant/binaries/apache-ant-1.8.2-bin.zip
unzip apache-ant-1.8.2-bin.zip
#編輯/home/hadoop/.bashrc,在檔案末尾追加如下內容
vi /home/hadoop/.bashrc
export ANT_HOME=/opt/apache-ant-1.8.2
export PATH=${PATH}:${ANT_HOME}/bin
#使得/home/hadoop/.bashrc配置生效
source /home/hadoop/.bashrc
#測試ant是否生效
ant -version

  7.3 hadoop-lzo庫編譯安裝

#編譯安裝hadoop-lzo-master
cd /home/hadoop
wget https://github.com/kevinweil/hadoop-lzo/archive/hadoop-lzo-master.zip
unzip hadoop-lzo-master.zip
cd /home/hadoop/hadoop-lzo-master
#注意以下三行一起執行,前兩行是指定LZO庫檔案所在位置
CFLAGS=-m64 \
CXXFLAGS=-m64 \
ant compile-native tar
    編譯完成後會在/home/hadoop/hadoop-lzo-master/build下得到如下檔案:
    其中hadoop-lzo-0.4.15-SNAPSHOT.jar和native就是我們需要的jar和庫檔案,在後面只需要拷貝jar和native下面的庫檔案到hadoop下即可完成整合,這裡在/home/hadoop/hadoop-lzo-master/build/native/Linux-amd64-64/lib的庫檔案如下:

  7.4 整合hadoop-lzo庫到hadoop-2.7.4

    需要拷貝hadoop-lzo-0.4.15-SNAPSHOT.jar到/home/hadoop/hadoop-2.7.4/share/hadoop/common/lib/下面,需要拷貝/home/hadoop/hadoop-lzo-master/target/native/Linux-amd64-64/lib/下的檔案到/home/hadoop/hadoop-2.7.4/lib/native/下面
cp -r /home/hadoop/hadoop-lzo-master/build/native/Linux-amd64-64/lib/* /home/hadoop/hadoop-2.7.4/lib/native/
cp -r /home/hadoop/hadoop-lzo-master/build/hadoop-lzo-0.4.15-SNAPSHOT.jar /home/hadoop/hadoop-2.7.4/share/hadoop/common/lib/

    7.5 遇到的問題([javah] Error: Class org.apache.hadoop.conf.Configuration could not be found)

    編譯中遇到的問題錯誤資訊如下:
ivy-retrieve-common:
[ivy:retrieve] :: retrieving :: com.hadoop.gplcompression#Hadoop-GPL-Compression
[ivy:retrieve]  confs: [common]
[ivy:retrieve]  0 artifacts copied, 3 already retrieved (0kB/6ms)
[ivy:cachepath] DEPRECATED: 'ivy.conf.file' is deprecated, use 'ivy.settings.file' instead
[ivy:cachepath] :: loading settings :: file = /opt/hadoop-lzo-master/ivy/ivysettings.xml

init:

compile-java:
    [javac] /opt/hadoop-lzo-master/build.xml:243: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

check-native-uptodate:

compile-native:
    [javah] Error: Class org.apache.hadoop.conf.Configuration could not be found.

BUILD FAILED
/opt/hadoop-lzo-master/build.xml:266: compilation failed
    解決辦法如下,修改/opt/hadoop-lzo-master/build.xml中如下內容:
  <target name="compile-native" depends="compile-java,check-native-uptodate" unless="native.uptodate">
    <mkdir dir="${build.native}/lib"/>
    <mkdir dir="${build.native}/src/com/hadoop/compression/lzo"/>

    <javah classpath="${build.classes}"
  	   destdir="${build.native}/src/com/hadoop/compression/lzo"
           force="yes"
  	   verbose="yes">
      <class name="com.hadoop.compression.lzo.LzoCompressor" />
      <class name="com.hadoop.compression.lzo.LzoDecompressor" />
    </javah>
為ant的target=compile-native指定classpath,修改後為:
  <target name="compile-native" depends="compile-java,check-native-uptodate" unless="native.uptodate">
    <mkdir dir="${build.native}/lib"/>
    <mkdir dir="${build.native}/src/com/hadoop/compression/lzo"/>

    <javah classpath="${build.classes}"
  	   destdir="${build.native}/src/com/hadoop/compression/lzo"
           force="yes"
  	   verbose="yes">
      <class name="com.hadoop.compression.lzo.LzoCompressor" />
      <class name="com.hadoop.compression.lzo.LzoDecompressor" />
      <classpath refid="classpath"/>
    </javah>

8.Apache hadoop中配置壓縮

  8.1HDFS配置壓縮

   注意:這裡可以配置多個     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.LzoCodec,   
  com.hadoop.compression.lzo.LzopCodec,  
  org.apache.hadoop.io.compress.Lz4Codec,  
  org.apache.hadoop.io.compress.SnappyCodec  
  </value>  
  <description>A comma-separated list of the compression codec classes that can  
  be used for compression/decompression. In addition to any classes specified  
  with this property (which take precedence), codec classes on the classpath  
  are discovered using a Java ServiceLoader.</description>  
</property>  
    注意:hadoop是根據檔案的字尾去尋找編解碼用哪個,之前認為com.hadoop.compression.lzo.LzoCodec對應的字尾為".lzo"是錯誤的,查看了hadoop-lzo原始碼發現".lzo"對應的編解碼為com.hadoop.compression.lzo.LzopCodec,查看了原始碼發現".lzo_deflate"對應的編解碼為com.hadoop.compression.lzo.LzoCodec

  8.2 MAPREDUCE配置壓縮

   注意:這裡只能配置採用一種    mapred-site.xml增加配置: 
<property>
  <name>mapreduce.output.fileoutputformat.compress</name>
  <value>true</value>
  <description>Should the job outputs be compressed?
  </description>
</property>
<property>
  <name>mapreduce.output.fileoutputformat.compress.type</name>
  <value>RECORD</value>
  <description>If the job outputs are to compressed as SequenceFiles, how should
               they be compressed? Should be one of NONE, RECORD or BLOCK.
  </description>
</property>
<property>
  <name>mapreduce.output.fileoutputformat.compress.codec</name>
  <value>org.apache.hadoop.io.compress.SnappyCodec</value>
  <description>If the job outputs are compressed, how should they be compressed?
  </description>
</property>
<property>
  <name>mapreduce.map.output.compress</name>
  <value>true</value>
  <description>Should the outputs of the maps be compressed before being
               sent across the network. Uses SequenceFile compression.
  </description>
</property>
<property>
  <name>mapreduce.map.output.compress.codec</name>
  <value>org.apache.hadoop.io.compress.SnappyCodec</value>
  <description>If the map outputs are compressed, how should they be 
               compressed?
  </description>
</property>

相關推薦

hadoop 壓縮 gzip biz2 lzo snappy

    整合snappy和LZO壓縮格式的一般步驟如下: 1)編譯hadoop-xxx-master.zip得到一個hadoop-xxx-0.0.1-SNAPSHOT.jar和native/Linux-amd64-64/*.so等檔案;2)拷貝上面的jar和so檔案到ha

Hadoop 壓縮格式 gzip/snappy/lzo/bzip2 比較

目前在Hadoop中常用的幾種壓縮格式:lzo,gzip,snappy,bzip2,主要特性對比如下: 壓縮格式 codec類 演算法 副檔名 多檔案 splitable native 工具

hadoop 壓縮-snappy

下載安裝Apache hadoop-1.2.1(bin.tar.gz檔案)搭建集群后,在執行wordcount 時報警告 WARN snappy.LoadSnappy: Snappy native library not loaded。 我們想要給Hadoop叢集增加sna

Hadoop壓縮演算法snappy

Snappy的前身是Zippy。雖然只是一個數據壓縮庫,它卻被Google用於許多內部專案程,其中就包括BigTable,MapReduce和RPC。Google宣稱它在這個庫本身及其演算法做了資料處理速度上的優化,作為代價,並沒有考慮輸出大小以及和其他類似工具的相容性問

java壓縮 GZIP進行簡單壓縮,ZIP進行多文件保存

div ade test ipo fill pop str tput rac java壓縮 GZIP進行簡單壓縮,ZIP進行多文件保存 package org.rui.io.compress; import java.io.BufferedOutputStrea

[Linux] Nginx響應壓縮gzip

img png gzip expire pla 不支持 啟用 bsp ica 壓縮和解壓縮 1.本節介紹如何配置響應的壓縮或解壓縮以及發送壓縮文件。 gzip on; 2.NGINX僅使用MIME類型text / html壓縮響應 gzip_types text/pl

hadoop 壓縮和解壓

 Hadoop對於壓縮檔案的支援 如果我們壓縮的檔案有相應壓縮格式的副檔名(比如lzo,gz,bzip2等),hadoop就會根據副檔名去選擇解碼器解壓。 hadoop對每個壓縮格式的支援,詳細見下表: 如果壓縮的檔案沒有副檔名,則需 要在執行mapreduce任務

Hadoop學習筆記之lzo檔案格式

LZO(LZO是Lempel-Ziv-Oberhumer的縮寫)是一種高壓縮比和解壓速度極快的編碼,它的特點是解壓縮速度非常快,無失真壓縮,壓縮後的資料能準確還原,lzo是基於block分塊的,允許資料被分解成chunk,能夠被並行的解壓 一、下載、安裝

hadoop原始碼包編譯驗證 snappy 詳細流程

下載安裝依賴包yum -y install lzo-devel zlib-devel gcc gcc-c++ autoconf automake libtool openssl-devel fuse-devel cmake使用root使用者安裝protobuf ,進入p

hadoop壓縮演算法的總結

1. 壓縮成為必須 對資料的3個關鍵特徵描述 3V:volume、variety和value。 volume,資料量與日俱增,在於智慧手機、Internet和感知器等的使用。 variety,大資料的資料格式,音訊、視訊、影象等。 value,資料近乎實時的產生以使得有用資

java 壓縮和解壓lzo檔案

1、依賴 <dependency> <groupId>org.anarres.lzo</groupId> <artifactId>lzo-core&

tar gzip biz2 的使用,解壓tar.gz檔案,執行.sh指令碼

bzip2的簡單使用方法和gzip一樣:壓縮不用引數,解壓引數-d gzip的使用: gzip 壓縮的時候不用引數,直接使用就好了 gzip file -v 可以使用-v引數來檢視壓縮率 gzip -v file注意:用gzip壓縮的檔案,可以在windows下用winRar

過濾器(Filter)應用:全站壓縮----Gzip網頁壓縮輸出

Filter應用-7 實現壓縮的輸出流。 •現在的網路,流量就是錢。所以,如果能在很少的流量的情況下,檢視相同的資料內容,那何樂而不為呢? •實現方案: •使用者在呼叫response.getOutputStream()時讓獲取自己的輸出流對像, 我們將資訊寫到事先準

C++壓縮解壓之snappy

To use Snappy from your own C++ program, include the file "snappy.h" from your calling file, and link against the compiled library.There are many ways to c

Hadoop壓縮與解壓

1 壓縮 一般來說,計算機處理的資料都存在一些冗餘度,同時資料中間,尤其是相鄰資料間存在著相關性,所以可以通過一些有別於原始編碼的特殊編碼方式來儲存資料, 使資料佔用的儲存空間比較小,這個過程一般叫壓縮。和壓縮對應的概念是解壓縮,就是將被壓縮的資料從特殊編碼方式

Linux 檔案的解壓和壓縮 —— gzip命令

一、gzip 命令的用途 gzip 是在 Linux 系統中經常使用的一個對檔案進行壓縮和解壓縮的命令 減少檔案大小有兩個明顯的好處,一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的時間

hadoop 壓縮解壓

先放程式碼package com.huawei.hdfs.compress; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.IOUtils; import org.apach

Hadoop壓縮的圖文教程

近期由於Hadoop叢集機器硬碟資源緊張,有需求讓把 Hadoop 叢集上的歷史資料進行下壓縮,開始從網上查詢的都是關於各種壓縮機制的對比,很少有關於怎麼壓縮的教程(我沒找到。。),再此特記錄下本次壓縮的過程,方便以後查閱,利己利人。   本文涉及的所有 jar包、指令碼、native lib 見文

Snappy數據壓縮 配置到Hadoop

nbsp ould 安裝 官方文檔 toc ora automake java_home -o 依賴庫:yum -y install gcc+ gcc-c++ 官方文檔中提到編譯前提需要:gcc c++, autoconf, automake, libtool, Java

Hadoop支援Lzo壓縮

1.前置要求 編譯安裝好hadoop java & maven 安裝配置好 安裝前置庫 yum -y install lzo-devel zlib-devel gcc autoconf automake libtool 2.安裝