百度的老大总是使用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])