要在hadoop中啟用壓縮,可以配置如下引數:
compressioncodec有兩個方法可以用於輕鬆地壓縮或解壓縮資料。
要想對正在被寫入乙個輸出流的資料進行壓縮,我們可以使用createoutputstream(outputstreamout)方法建立乙個compressionoutputstream,將其以壓縮格式寫入底層的流。
相反,要想對從輸入流讀取而來的資料進行解壓縮,則呼叫createinputstream(inputstreamin)函式,從而獲得乙個compressioninputstream,從而從底層的流讀取未壓縮的資料。
即使你的mapreduce的輸入輸出檔案都是未壓縮的檔案,你仍然可以對map任務的中間結果輸出做壓縮,因為它要寫在硬碟並且通過網路傳輸到reduce節點,對其壓縮可以提高很多效能,這些工作只要設定兩個屬性即可。
public
class
wordcountdriver
{public
static
void
main
(string[
] args)
throws ioexception, classnotfoundexception, interruptedexception {
//在driver中設定
// 開啟map端輸出壓縮
conf.
setboolean
("mapreduce.map.output.compress"
,true);
// 設定map端輸出壓縮方式
conf.
setclass
("mapreduce.map.output.compress.codec"
, bzip2codec.
class
,compressioncodec.
class
);
//在driver類中
// 設定reduce端輸出壓縮開啟
fileoutputformat.
setcompressoutput
(job,
true);
// 設定壓縮的方式
fileoutputformat.
setoutputcompressorclass
(job, bzip2codec.
class);
fileoutputformat.
setoutputcompressorclass
(job, bzip2codec.
class);
// fileoutputformat.setoutputcompressorclass(job, gzipcodec.class);
// fileoutputformat.setoutputcompressorclass(job, defaultcodec.class);
//對fileoutputformat 修改
odec.class);
//對fileoutputformat 修改
MapReduce資料壓縮
壓縮格式 壓縮格式 演算法副檔名 切分換成壓縮格式後,原來的程式是否要修改 deflate 是,直接使用 deflate default 否和文字處理一樣,不需要修改 gzip 是,直接使用 deflate gz否 和文字處理一樣,不需要修改 bzip2 是,直接使用 bzip2 bz2 是和文字處...
mapreduce 容錯相關引數
每個map task最大重試次數,一旦重試引數超過該值,則認為map task執行失敗,預設值 4。每個reduce task最大重試次數,一旦重試引數超過該值,則認為map task執行失敗,預設值 4。當失敗的map task失敗比例超過該值為,整個作業則失敗,預設值為0.如果你的應用程式允許丟...
MapReduce設定引數防止超時
mapreduce設定引數防止超時 1.如果碰到異常 task attempt failed to report status for seconds.killing 最可能是碰到死迴圈了。2.如果沒有死迴圈 控制超時的屬性是 mapred.task.timeout,預設600000ms,即600s...