当前位置: > Linux集群 > Hadoop >

Hadoop Streaming 实战: grep

时间:2015-01-20 00:12来源:linux.it.net.cn 作者:IT

streaming支持shell 命令的使用。但是,需要注意的是,对于多个命令,不能使用形如cat; grep 之类的多命令,而需要使用脚本,后面将具体介绍。

  下面示例用grep检索巨量数据:

   1. 待检索的数据放入hdfs 
       $ hadoop fs -put localfile /user/hadoop/hadoopfile 

       使用方法:hadoop fs -put ... 
        从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统。

   2. 运行检索: 
        $ hadoop jar /home/hadoop/hadoop/contrib/streaming/hadoop-0.20.2-streaming.jar -input data/*.* -output out11 -mapper "grep is" -jobconf mapre.job.name="grep-test" -jobconf stream.non.zero.exit.is.failure=false -jobconf mapred.reduce.tasks=1 
        
         说明: 
           -input  /user/hadoop/hadoopfile : 待处理文件目录 
           -output /user/hadoop/result   :处理结果存放目录 
-mapper "grep hello" :map程序 
            -jobconf mapre.job.name="grep-test" :任务名 
            -jobconf stream.non.zero.exit.is.failure=false  : map-reduce程序返回值不做判断;streaming默认的情况下,mapper和reducer的返回值不是0,被认为异常任务,将被再次执行,默认尝试4次都不是0,整个job都将失败。而grep在没有匹配结果时返回1。 
            -jobconf mapred.reduce.tasks=1 : reduce任务数。 此处也可配置为0,为0配置表示告诉Map/reduce框架不要创建reducer任务

   3.  查看结果: 
        $ hadoop fs –cat /user/hadoop/result/part-00000

(责任编辑:IT)
------分隔线----------------------------