排序信峻、hash分組漫萄、壓縮格式应结、內(nèi)存設(shè)定
-Option:
- -input:輸入文件路徑
- -output:輸出文件路徑
- -mapper:用戶自己寫的mapper程序,可以是可執(zhí)行文件或者腳本
- -reducer:用戶自己寫的reducer程序专缠,可以是可執(zhí)行文件或者腳本
- -file:打包文件到提交的作業(yè)中,可以是mapper或者reducer要用的輸入文件淑仆,如配置文件涝婉,字典等,將客戶端本地文件打成jar包上傳到HDFS然后分發(fā)到計算節(jié)點蔗怠。
- -cacheFile hdfs://host:port/path/to/file#linkname 分發(fā)HDFS文件到本地墩弯。在計算節(jié)點緩存文件,Streaming程序通過./linkname在本地訪問文件
- -cacheArchive <file> Optional 指定一個上傳到HDFS的jar文件寞射,這個jar文件會被自動解壓縮到當(dāng)前工作目錄下
- -partitioner:用戶自定義的partitioner程序
- -combiner:用戶自定義的combiner程序(必須用java實現(xiàn))
- -cluster name:在本地Hadoop集群與一個或多個遠程集群間切換
- -additionalconfspec specfile :用一個類似于hadoop-site.xml的XML文件保存所有配置渔工,從而不需要用多個"-D name=value"類型的選項單獨為每個配置變量賦值
- -numReduceTasks <num> Optional reduce任務(wù)個數(shù)
- -combiner Combiner聚合類,對map的輸出進行本地聚合桥温,對map端的輸出 先做一次合并 引矩,以 減少在map和reduce節(jié)點之間的數(shù)據(jù)傳輸量 ,以 提高網(wǎng)絡(luò)IO性能 侵浸,是MapReduce的一種 優(yōu)化手段之一
- -cmdenv <n>=<v> 傳給mapper和reducer的環(huán)境變量
- -mapdebug mapper 失敗時運行的debug程序
- -reducedebug reducer失敗時運行的debug程序
- -verbose Optional 詳細輸出模式
- -D作業(yè)配置
mapred.job.name作業(yè)名
mapred.job.priority 作業(yè)優(yōu)先級
mapred.job.map.capacity 最多同時運行map任務(wù)數(shù)
mapred.job.reduce.capacity 最多同時運行reduce任務(wù)數(shù)
hadoop.job.ugi 作業(yè)執(zhí)行權(quán)限
mapred.map.tasks map任務(wù)個數(shù)
mapred.reduce.tasks reduce任務(wù)個數(shù)
mapred.job.groups 作業(yè)可運行的計算節(jié)點分組
mapred.task.timeout 任務(wù)沒有響應(yīng)(輸入輸出)的最大時間
stream.non.zero.exit.is.failure=true #任務(wù)失敗重啟
mapred.compress.map.output map的輸出是否壓縮
mapred.map.output.compression.codec map的輸出壓縮方式
stream.map.output.field.separator 指定map輸出時的分割符
stream.num.map.output.key.fields=4 指定map輸出按照分隔符切割后旺韭,key所占有的列數(shù)
mapred.output.compress reduce的輸出是否壓縮
mapred.output.compression.type:壓縮類型,有NONE, RECORD和BLOCK通惫,默認(rèn)值RECORD茂翔。
mapred.output.compression.codec reduce的輸出壓縮方式, 默認(rèn)值org.apache.hadoop.io.compress.DefaultCodec
stream.reduce.output.field.separator 指定reduce輸出時的分割符
stream.num.reduce.output.key.fields 指定輸出按照分隔符切割后,key所占有的列數(shù)
map.output.key.field.separator=. #分桶分隔符:指定map輸出<key,value>對之后履腋,其中key內(nèi)部的分割符
num.key.fields.for.partition=2 #指定分桶時珊燎,按照分隔符切割后,用于分桶key所占的列數(shù)
mapred.job.reduce.memory.mb #每個map Task需要的內(nèi)存量
mapred.job.reduce.memory.mb #每個reduce Task需要的內(nèi)存量
mapreduce.job.reduce.slowstart.completedmaps 當(dāng)Map Task完成的比例達到該值后才會為Reduce Task申請資源遵湖,默認(rèn)是0.05
常見的例子:
按照前四位進行排序悔政,前兩列進行分組
-D stream.map.output.field.separator=. \
-D stream.num.map.output.key.fields=4 \
-D map.output.key.field.separator=. \
-D mapreduce.partition.keypartitioner.options=-k1,2 \
merge合并輸出的小文件們
set hive.merge.mapfiles = true #在Map-only的任務(wù)結(jié)束時合并小文件
set hive.merge.mapredfiles = true #在Map-Reduce的任務(wù)結(jié)束時合并小文件
set hive.merge.size.per.task = 256*1000*1000 #合并文件的大小
set hive.merge.smallfiles.avgsize=16000000 #當(dāng)輸出文件的平均大小小于該值時,啟動一個獨立的map-reduce任務(wù)進行文件merge