Hadoop Streaming 实战: grep

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

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

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

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

   2. 运行检索:
        $ hadoop streaming -input /user/hadoop/hadoopfile -output /user/hadoop/result -mapper "grep hello" -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

你可能感兴趣的:(hadoop,Hadoop,Streaming实战)