Hadoop壓縮之MapReduce中使用壓縮

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   使用   sp   on   檔案   

1.壓縮和輸入分區

     Hadoop中檔案是以塊的形式儲存在各個DataNode節點中,假如有一個檔案A要做為輸入資料,給MapReduce處理,系統要做的,首先從NameNode中找到檔案A儲存在哪些DataNode中,然後,在這些DataNode中,找到相應的資料區塊,作為一個單獨的資料分塊,作為map任務的輸入,這就是mapreduce處理的資料的粗略過程!但是,我們都知道,對於一些大型的資料,壓縮是很有用的,不僅能夠節省儲存空間,而且還能夠加快傳輸速率。把檔案壓縮後再存入資料節點中,這個很常見。那麼壓縮的資料作為MapReduce的輸入資料處理,這個可以不?

     假如現在有一個壓縮檔B,儲存在16個資料區塊中,但是,將每個資料區塊作為單獨的輸入分區是無法實現工作的,因為無法實現從gzip壓縮資料流的任意位置讀取資料,所以,讓多個map任務多裡運行是無法實現的。在這種情況下,MapReduce不會去切分gzip壓縮檔,而是由一個map任務去處理所有的資料區塊。因為它知道輸入的是gzip(副檔名)且不支援切分。那麼這麼做,帶來的缺點很明顯了:首先是犧牲了資料的本地性,一個map處理16個資料區塊,而其中大多數塊並沒有儲存在執行map任務的節點。其次,map任務少了,作業的粒度就較大,啟動並執行時間可能會更長!

     對於大檔案來說,不應該使用不支援切分整個檔案的壓縮格式,否則將失去資料的本地性,進而造成MapReduce應用效率低下!

 

2.資料本地性

     Hadoop中有幾樣東西比較珍貴,不是儲存硬碟,不是cpu,而是記憶體和頻寬!為什麼是記憶體和頻寬呢?NameNode中儲存的是目錄中繼資料,不懂的可以查看我的部落格《Hadoop中的namenode、輔助namenode、jobtracker、datenode等作用》,http://blog.sina.com.cn/s/blog_c09822a40102v9fp.html,而NameNode把這些存放在記憶體當中,所以,記憶體的大小也決定著DataNode中存放的資料多少,就算DataNode再多,NameNode的記憶體上不去,也儲存不了多少資料。還有網路頻寬,頻寬很貴,資料本地化就能夠節省網路頻寬。因為我們把資料是在本地處理的。處理完後,然後,再把處理後的結果,通過網路傳送個reduce所在的節點。而上面的經過gzip壓縮的資料,是把資料區塊全部傳送到map所在的節點,就喪失了資料本地化的優勢,佔用網路頻寬。尤其是對於大點的資料!統一時間要佔用多少頻寬。

3.在MapReduce中使用壓縮

     如果想對MapReduce作業的輸出進行壓縮操作,應在作業配置過程中,將mapred.output.compress屬性設定為true和mapred.output.compression.codec屬性設定為打算使用的壓縮codec的類名。

     由於map任務的輸出需要寫到磁碟並通過網路傳輸到reducer節點,所以如果使用LZO這樣的快速壓縮方式,是可以獲得效能提升的,因為需要傳輸的資料減少了。

屬性名稱 類型 預設值 描述
mapred.compress.map.out boolean false 對map任務輸出進行壓縮
mapred.map.output.compression.codec Class org.apache.hadoop.io.compress.DefaultCodec map輸出所用的壓縮codec

Hadoop壓縮之MapReduce中使用壓縮

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.