`
cp1985chenpeng
  • 浏览: 44197 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hadoop-Streaming学习

阅读更多

 

 

1.概述

Hadoop Streaming Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或脚本文件作为 Mapper Reducer,例如:

       $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \

       -input /user/test/input \

       -output /user/test/output \

       -mapper “myMapper.sh” \

       -reducer “myReducer.sh”

        -input等都为该命令的参数。

 

2. 原理

mapper reducer 会从标准输入中读取用户数据,一行一行处理后发送给标准输出。 Streaming 工具会创建 MapReduce 作业,发送给各个 tasktracker ,同时监控整个作业的执行过程。

如果一个可执行文件或者脚本作为 mapper mapper 初始化时,每一个 mapper 任务会把该文件作为一个单独进程启动, mapper 任 务运行时,它把输入切分成行并把每一行提供给可执行文件进程的标准输入。 同时, mapper 收集可执行文件进程标准输出的内容,并把收到的每一行内容转化成 key/value 对,作为 mapper 的输出。 默认情况下,一行中第一个 tab 之前的部分作为 key ,之后的(不包括 tab )作为 value 如果没有 tab ,整行作为 key 值, value 值为 null

对于 reducer,类似。

3.Streaming 命令说明

3.1Streaming 命令

使用下面的命令运行 Streaming MapReduce程序:

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-stream.jar [args]

其中 args streaming参数,下面是参数列表

-input <path> :map输入数据的 hdfs路径; path可以是文件或者目录,可以使用 *通配符, -input选项可以使用多次指定多个文件或目录作为输入。

-output <path> :reduce输出结果的 hdfs路径; path必须不存在,而且执行作业的用户必须有创建该目录的权限, -output只能使用一次。

-mapper <filename> : mapper可执行文件或脚本;必须指定且唯一。

-reducer <filename> : reducer 可执行文件或脚本;必须指定且唯一。

-file <file> : 分发本地文件,先上传到 hdfs,然后再分发 到各个节点;

-cacheFIle <file>: hdfs上的文件分发到各个节点;

-cachArchive <file> : hdfs上的压缩文件分发到各个节点;

-numReduceTasks <num> : 系统中 reduce任务个数; 如果设置 -numReduceTasks 0或者 -reducer NONE则没有 reducer程序, mapper的输出直接作为整个 job的输出。

-D name=value : 配置系统参数;

1 mapred.map.tasks map task数目

2 mapred.reduce.tasks reduce task数目

3 stream.map.input.field.separator/stream.map.output.field.separator map task输入 /输出数据的分隔符 ,默认均为 \t

4)stream.num.map.output.key.fields:指定 map task输出记录中 key所占的域数目

5)stream.reduce.input.field.separator/stream.reduce.output.field.separator reduce task输入 /输出数据的分隔符,默认均为 \t

6 stream.num.reduce.output.key.fields:指定 reduce task输出记录中 key所占的域数目 -combiner <javaClass> : Combiner java类;对应的 Java类文件打包成 jar文件后用 -file分发。

-partitioner <javaClass> : Partitioner java类;

-inputformat <java class> : InputFormat java 类;用于读取输入数据,要实现 InputFormat接口。如果不指定,默认使用 TextInputFormat

         -outputformat <javaClass> : OutputFormat java 类;用于写入输出数据,要实现 OutputFormat接口。如果不指定,默认使用 TextOutputFormat

         -cmdenv NAME=VALUE:给 mapper reducer程序传递额外的环境变量, NAME是变量名, VALUE是变量值。

         -verbose :指定输出详细信息,例如分发哪些文件,实际作业配置参数值等,可以用于调试

 

分享到:
评论

相关推荐

    hadoop-0.21.0-streaming.jar

    hadoop-0.21.0-streaming.jar

    hadoop最新版本3.1.1全量jar包

    hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...

    hadoop-streaming-2.8.0_jar_2.8.0_hadoop_streaming_

    4. **HadoopStreaming.class**: 这个类是 Hadoop Streaming 的核心,它实现了 MapReduce 框架,使得用户可以使用非Java语言编写 Map 和 Reduce 部分。 Hadoop Streaming 的标签 "jar 2.8.0 hadoop streaming" 强调...

    Hadoop - Hadoop Streaming

    ### Hadoop Streaming Hadoop Streaming 是一种允许用户利用任何可执行脚本或程序(如 Python、Perl 或其他脚本语言)作为 Map 和 Reduce 进程的技术。它通过提供一个框架来实现这一目标,该框架可以读取来自标准...

    hadoop-3.1.3安装包

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合...

    Hadoop下载 hadoop-3.3.3.tar.gz

    HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 ...

    hadoop-2.2.0-x64.tar.gz part3

    [INFO] Apache Hadoop MapReduce Streaming ................. SUCCESS [4.999s] [INFO] Apache Hadoop Distributed Copy .................... SUCCESS [7.547s] [INFO] Apache Hadoop Archives .....................

    hadoop-3.3.0.tar.gz

    对于MapReduce作业,你可以编写Java程序或者使用Hadoop Streaming接口用其他语言(如Python)编写作业,然后提交给YARN执行。 总的来说,Hadoop 3.3.0是一个强大的大数据处理平台,它持续改进以适应不断变化的...

    使用hadoop-streaming运行Python编写的MapReduce程序.rar

    在大数据处理领域,Hadoop是不可...学习这些内容对于掌握大数据处理和Python在Hadoop中的应用非常有帮助,特别是在处理大量结构化和非结构化数据时。同时,这也是提升数据处理能力、理解和实践MapReduce模型的好途径。

    hadoop-2.6.0-cdh5.7.0.tar.gz

    它可以与Hadoop生态系统很好地集成,例如将Kafka作为数据源,通过Hadoop进行批处理,或者通过Spark Streaming进行实时处理。 总的来说,这个“hadoop-2.6.0-cdh5.7.0.tar.gz”压缩包为用户提供了全面的Hadoop环境,...

    hadoop-3.4.0-aarch64.tar.gz

    HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 ...

    hadoop-2.6.0-cdh5.7.0版本.zip

    7. **Hadoop应用开发**: 开发者可以使用Java编写MapReduce程序,或者利用Hadoop Streaming使用Python、Perl等语言进行处理。此外,还有基于Hadoop的高级框架,如Apache Spark,提供了更高效的数据处理模型。 8. **...

    hadoop-2.2.0-x64.tar.gz part2

    [INFO] Apache Hadoop MapReduce Streaming ................. SUCCESS [4.999s] [INFO] Apache Hadoop Distributed Copy .................... SUCCESS [7.547s] [INFO] Apache Hadoop Archives .....................

    hadoop-3.4.0.tar.gz

    HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 ...

    hadoop-2.7.3winutils.rar

    在Windows上使用Hadoop进行大数据处理,还需要了解如何使用Hadoop命令行工具,如hadoop fs系列命令来与HDFS交互,以及使用Hadoop Streaming或Pig、Hive等高级接口进行数据处理。同时,理解Hadoop的HDFS和MapReduce的...

    hadoop-mapreduce-examples-2.6.0

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据...

    hadoop 所用的jar包

    Hadoop是一个开源的分布式计算框架,它允许在大型计算机集群上处理海量数据。这个压缩包“hadoop jar包”包含了Hadoop项目所必需的Java库(JAR files),这些库支持Hadoop的核心功能以及相关模块的运行。在编程时,...

    hadoop-3.0.0.tar.gz

    HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。 Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。...

    hadoop-2.7.0.tar.gz( 64位)

    HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。 Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

    hadoop-streaming-2.6.0.jar

    java运行依赖jar包

Global site tag (gtag.js) - Google Analytics