hadoop streaming实现分布式grep

需求是这样的,我们是个数据仓库,线上数据最终查询结果有问题的时候就需要一步一步追溯数据生成。在写hbase的时候,为了提高效率,我们把数据计算和写入分成了两个步骤,第一步是计算数据,然后以key/value的结构写到一个sequenceFile里,然后在用另一个mr把生成的数据load到hbase。

于是为了验证我们中间这个sequence file的结果,我们需要把有问题那条grep出来,因为量非常大,肯定不能hadoop fs -text |grep,这里就利用了hadoop streaming来进行分布式grep。

hadoop streaming 支持调用各种脚本,也支持调用shell原生命令,grep写法如下

1
2
3
4
5
6
7
8
hadoop jar hadoop-streaming-2.7.1.jar \
-input input \
-inputformat org.apache.hadoop.mapred.SequenceFileInputFormat \
-output output \
-mapper "grep id" \
-jobconf mapre.job.name="grep-test" \
-jobconf stream.non.zero.exit.is.failure=false \
-jobconf mapred.reduce.tasks=1

具体参数可以查看文档,另外一篇介绍也可以用来入门


本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证,欢迎转载,但转载请注明来自http://thousandhu.github.io,并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文链接:http://thousandhu.github.io/2016/06/24/hadoop-streaming实现分布式grep/