Mapreduce streaming
用hadoop,作为Java界的小残废,只能紧紧抱住Streaming框架的大腿,Hadoop MapReduce和HDFS采用Java实现,默认提供Java编程接口,另外提供了C++编程接口和Streaming框架。Streaming框架允许任何程序语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植。流处理嘛,keyvalue一行行的来,写个map程序分发出去,再写个reduce把一行行的数据处理掉,shuffle过程都由hadoop框架解决,轻松又愉快,开发效率和程序运行效率都很高,通过配置也方便资源控制,通过python接口调用的时候只比spark难用一点点。但同时Streaming默认只能处理文本数据,也不能处理多路数据输出。
通过脚本可以设置streaming的参数
streaming参数往往是mr中的难点所在,下面是参数列表:
-input |
输入数据路径 |
-output |
输出数据路径 |
-mapper |
mapper可执行程序或Java类 |
-reducer |
reducer可执行程序或Java类 |
-file |
分发本地文件 |
-cacheFile |
分发HDFS文件 |
-cacheArchive |
分发HDFS压缩文件 |
-numReduceTasks |
reduce任务个数 |
-jobconf | -D NAME=VALUE |