百度的老大總是使用hadoop streaming,他也經常以 hadoop 的資深老用戶自居,凡是 他在百度 hadoop 平臺能用的功能,他自然也會要求 這里可以實現。所以被趕著 學會了一些新技能
老大在使用HS 用到 一些 分桶 資源限制等配置聲明,自然我相信 連隔壁老王兒子都有的玩具,作為 hadoop 親兒子原生jvm 語言 程序自然也是應該支持的,而且 都是 我們玩了剩下恩恩才給隔壁老王兒子玩。
先來了解 hadoop streaming 的tutorial
https://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/HadoopStreaming.html
其實看了看 streaming 還是非常簡單實用,其中的option 的配置聲明是亮點,streaming 經常可以是cpu 和內存的占用非常有效
有這么幾個類我們經常碰到
mapper org.apache.hadoop.mapred.lib.FieldSelectionMapReduce \ -reducer org.apache.hadoop.mapred.lib.FieldSelectionMapReduce \ -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
按圖索驥,我們在 IDEA中 ctrl +o 也是搜索到了這些類的詳細內容
我們在執行job 的時候經常會遇到就是任務傾斜,所謂的任務傾斜 大致就是 大部分任務都已經完成了,卡在了一個或少部分的Reduce任務上,造成job 遲遲不能結束,一直停留在 比如93.5%上
這個我們就需要去設置 Reduce Task 的個數,這個在job的聲明中就可以配置
job.setNumReduceTasks(40)
在job 中 可以設置分桶
job.setPartitionerClass(classOf[customPartitioner])