Hadoop Streaming自帶參數(shù)解析

排序、hash分組、壓縮格式、內(nèi)存設(shè)定
-Option:

  1. -input:輸入文件路徑
  2. -output:輸出文件路徑
  3. -mapper:用戶(hù)自己寫(xiě)的mapper程序,可以是可執(zhí)行文件或者腳本
  4. -reducer:用戶(hù)自己寫(xiě)的reducer程序,可以是可執(zhí)行文件或者腳本
  5. -file:打包文件到提交的作業(yè)中,可以是mapper或者reducer要用的輸入文件,如配置文件,字典等,將客戶(hù)端本地文件打成jar包上傳到HDFS然后分發(fā)到計(jì)算節(jié)點(diǎn)。
  6. -cacheFile hdfs://host:port/path/to/file#linkname 分發(fā)HDFS文件到本地。在計(jì)算節(jié)點(diǎn)緩存文件,Streaming程序通過(guò)./linkname在本地訪問(wèn)文件
  7. -cacheArchive <file> Optional 指定一個(gè)上傳到HDFS的jar文件,這個(gè)jar文件會(huì)被自動(dòng)解壓縮到當(dāng)前工作目錄下
  8. -partitioner:用戶(hù)自定義的partitioner程序
  9. -combiner:用戶(hù)自定義的combiner程序(必須用java實(shí)現(xiàn))
  10. -cluster name:在本地Hadoop集群與一個(gè)或多個(gè)遠(yuǎn)程集群間切換
  11. -additionalconfspec specfile :用一個(gè)類(lèi)似于hadoop-site.xml的XML文件保存所有配置,從而不需要用多個(gè)"-D name=value"類(lèi)型的選項(xiàng)單獨(dú)為每個(gè)配置變量賦值
  12. -numReduceTasks <num> Optional reduce任務(wù)個(gè)數(shù)
  13. -combiner Combiner聚合類(lèi),對(duì)map的輸出進(jìn)行本地聚合,對(duì)map端的輸出 先做一次合并 ,以 減少在map和reduce節(jié)點(diǎn)之間的數(shù)據(jù)傳輸量 ,以 提高網(wǎng)絡(luò)IO性能 ,是MapReduce的一種 優(yōu)化手段之一
  14. -cmdenv <n>=<v> 傳給mapper和reducer的環(huán)境變量
  15. -mapdebug mapper 失敗時(shí)運(yùn)行的debug程序
  16. -reducedebug reducer失敗時(shí)運(yùn)行的debug程序
  17. -verbose Optional 詳細(xì)輸出模式
  18. -D作業(yè)配置
    mapred.job.name作業(yè)名
    mapred.job.priority 作業(yè)優(yōu)先級(jí)
    mapred.job.map.capacity 最多同時(shí)運(yùn)行map任務(wù)數(shù)
    mapred.job.reduce.capacity 最多同時(shí)運(yùn)行reduce任務(wù)數(shù)
    hadoop.job.ugi 作業(yè)執(zhí)行權(quán)限
    mapred.map.tasks map任務(wù)個(gè)數(shù)
    mapred.reduce.tasks reduce任務(wù)個(gè)數(shù)
    mapred.job.groups 作業(yè)可運(yùn)行的計(jì)算節(jié)點(diǎn)分組
    mapred.task.timeout 任務(wù)沒(méi)有響應(yīng)(輸入輸出)的最大時(shí)間
    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輸出時(shí)的分割符
    stream.num.map.output.key.fields=4 指定map輸出按照分隔符切割后,key所占有的列數(shù)
    mapred.output.compress reduce的輸出是否壓縮
    mapred.output.compression.type:壓縮類(lèi)型,有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輸出時(shí)的分割符
    stream.num.reduce.output.key.fields 指定輸出按照分隔符切割后,key所占有的列數(shù)
    map.output.key.field.separator=. #分桶分隔符:指定map輸出<key,value>對(duì)之后,其中key內(nèi)部的分割符
    num.key.fields.for.partition=2 #指定分桶時(shí),按照分隔符切割后,用于分桶key所占的列數(shù)
    mapred.job.reduce.memory.mb #每個(gè)map Task需要的內(nèi)存量
    mapred.job.reduce.memory.mb #每個(gè)reduce Task需要的內(nèi)存量
    mapreduce.job.reduce.slowstart.completedmaps 當(dāng)Map Task完成的比例達(dá)到該值后才會(huì)為Reduce Task申請(qǐng)資源,默認(rèn)是0.05
    常見(jiàn)的例子:
 按照前四位進(jìn)行排序,前兩列進(jìn)行分組
 -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é)束時(shí)合并小文件
set hive.merge.mapredfiles = true #在Map-Reduce的任務(wù)結(jié)束時(shí)合并小文件
set hive.merge.size.per.task = 256*1000*1000 #合并文件的大小
set hive.merge.smallfiles.avgsize=16000000 #當(dāng)輸出文件的平均大小小于該值時(shí),啟動(dòng)一個(gè)獨(dú)立的map-reduce任務(wù)進(jìn)行文件merge
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容