Hadoop Streaming自帶參數解析

排序、hash分組、壓縮格式、內存設定
-Option:

  1. -input:輸入文件路徑
  2. -output:輸出文件路徑
  3. -mapper:用戶自己寫的mapper程序,可以是可執行文件或者腳本
  4. -reducer:用戶自己寫的reducer程序,可以是可執行文件或者腳本
  5. -file:打包文件到提交的作業中,可以是mapper或者reducer要用的輸入文件,如配置文件,字典等,將客戶端本地文件打成jar包上傳到HDFS然後分發到計算節點。
  6. -cacheFile hdfs://host:port/path/to/file#linkname 分發HDFS文件到本地。在計算節點緩存文件,Streaming程序通過./linkname在本地訪問文件
  7. -cacheArchive <file> Optional 指定一個上傳到HDFS的jar文件,這個jar文件會被自動解壓縮到當前工作目錄下
  8. -partitioner:用戶自定義的partitioner程序
  9. -combiner:用戶自定義的combiner程序(必須用java實現)
  10. -cluster name:在本地Hadoop集羣與一個或多個遠程集羣間切換
  11. -additionalconfspec specfile :用一個類似於hadoop-site.xml的XML文件保存所有配置,從而不需要用多個"-D name=value"類型的選項單獨爲每個配置變量賦值
  12. -numReduceTasks <num> Optional reduce任務個數
  13. -combiner Combiner聚合類,對map的輸出進行本地聚合,對map端的輸出 先做一次合併 ,以 減少在map和reduce節點之間的數據傳輸量 ,以 提高網絡IO性能 ,是MapReduce的一種 優化手段之一
  14. -cmdenv <n>=<v> 傳給mapper和reducer的環境變量
  15. -mapdebug mapper 失敗時運行的debug程序
  16. -reducedebug reducer失敗時運行的debug程序
  17. -verbose Optional 詳細輸出模式
  18. -D作業配置
    mapred.job.name作業名
    mapred.job.priority 作業優先級
    mapred.job.map.capacity 最多同時運行map任務數
    mapred.job.reduce.capacity 最多同時運行reduce任務數
    hadoop.job.ugi 作業執行權限
    mapred.map.tasks map任務個數
    mapred.reduce.tasks reduce任務個數
    mapred.job.groups 作業可運行的計算節點分組
    mapred.task.timeout 任務沒有響應(輸入輸出)的最大時間
    stream.non.zero.exit.is.failure=true #任務失敗重啓
    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所佔有的列數
    mapred.output.compress reduce的輸出是否壓縮
    mapred.output.compression.type:壓縮類型,有NONE, RECORD和BLOCK,默認值RECORD。
    mapred.output.compression.codec reduce的輸出壓縮方式, 默認值org.apache.hadoop.io.compress.DefaultCodec
    stream.reduce.output.field.separator 指定reduce輸出時的分割符
    stream.num.reduce.output.key.fields 指定輸出按照分隔符切割後,key所佔有的列數
    map.output.key.field.separator=. #分桶分隔符:指定map輸出<key,value>對之後,其中key內部的分割符
    num.key.fields.for.partition=2 #指定分桶時,按照分隔符切割後,用於分桶key所佔的列數
    mapred.job.reduce.memory.mb #每個map Task需要的內存量
    mapred.job.reduce.memory.mb #每個reduce Task需要的內存量
    mapreduce.job.reduce.slowstart.completedmaps 當Map Task完成的比例達到該值後纔會爲Reduce Task申請資源,默認是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的任務結束時合併小文件
set hive.merge.mapredfiles = true #在Map-Reduce的任務結束時合併小文件
set hive.merge.size.per.task = 256*1000*1000 #合併文件的大小
set hive.merge.smallfiles.avgsize=16000000 #當輸出文件的平均大小小於該值時,啓動一個獨立的map-reduce任務進行文件merge


作者:analanxingde
鏈接:https://www.jianshu.com/p/ce0c14190f6f
來源:簡書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章