知识点
相关文章
更多最近更新
更多Hadoop Streaming
2019-03-28 14:00|来源: 网络
Hadoop版本:Hadoop-0.20.204
Hadoop的Streaming框架允许任何程序语言实现的可执行程序或者脚本在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植。Streaming的原理是用Java实现一个包装用户程序的MapReduce程序,该程序负责调用MapReduce Java接口获取key/value对输入,创建一个新的进程启动包装的用户程序,将数据通过管道传递给包装的用户程序处理,然后调用MapReduce Java接口将用户程序的输出切分成key/value对输出。Mapper重-input中读入数据(默认是一行一行读),然后提交到output。
如:
- $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-0.20.204.0.jar \
- -input myInputDirs \
- -output myOutputDir \
- -mapper /bin/cat \
- -reducer /bin/wc
上面的四个参数是最基本的,
- -input myInputDirs:指定作业输入,myInputDirs可以是文件或者目录,可以使用*通配符,-input选项可以使用多次指定多个文件或目录作为输入。
- -output myOutputDir:指定作业输出目录,myOutputDir必须不存在,而且执行作业的用户必须有创建该目录的权限,-output只能使用一次。
- -mapper:指定mapper可执行程序或脚本,当然也可以是java类,必须指定且唯一。
- -reducer:指定reducer可执行程序或脚本,同样也可以是java类,必须指定且唯一。
其他更详细的参数如下:
其中:
- -file, -cacheFile, -cacheArchive:分别用于向计算节点分发本地文件(特别是当可执行文件在本地时,一定要记得指定)、HDFS文件和HDFS压缩文件。
- -inputformat, -outputformat:指定inputformat和outputformat Java类,用于读取输入数据和写入输出数据,分别要实现InputFormat和OutputFormat接口。如果不指定,默认使用TextInputFormat和TextOutputFormat。
- -numReduceTasks:指定reducer的个数,如果设置-numReduceTasks 0或者-reducer NONE则没有reducer程序,mapper的输出直接作为整个作业的输出。
- -combiner:指定combiner Java类,对应的Java类文件打包成jar文件后用-file分发。
- -partitioner:指定partitioner Java类,Streaming提供了一些实用的partitioner实现。
- -cmdenv NAME=VALUE:给mapper和reducer程序传递额外的环境变量,NAME是变量名,VALUE是变量值。
相关问答
更多-
我假设您使用的是Spark 1.2或更早版本。 如果从master更改为1.2分支,您将看到此重载不存在。 事实上, FileInputDStream本身并不接受这个作为构造函数参数,直到1.3 I am assuming that you are using Spark 1.2 or older. If you change from master to the 1.2 branch, you will see that this overload does not exist. In fact, Fil ...
-
我试图在python中使用线程,Global Interpreter Lock存在问题。 使用多处理模块的移植代码,内部hadoop分配与集群中的核心一样多的映射器,因此如果需要加速,多处理是不可行的。 如果执行正确的多线程可能会带来一些加速 I tried to use threading with python, there were issues with the Global Interpreter Lock. Ported code to use the multiprocessing modul ...
-
OrcNewInputformat作为hadoop流的输入格式(OrcNewInputformat as a inputformat for hadoop streaming)[2022-04-06]
现在我的工作正常,我给错了类名。 IT is working fine now I was giving wrong classname. -
其他输入/输出格式也可以与Hadoop Streaming一起使用。 为Hadoop Streaming添加了Avro 支持 。 见AVRO-808和AVRO-830 。 此线程也可能有用。 我找不到ProtoBuf的InputFormat和OutputFormat类。 因此,他们需要自定义创建 。 Other input/output formats can also be used along with Hadoop Streaming. Avro support had been added for ...
-
你有没有安装最新的pymongo_hadoop连接器? 你正在运行的其他软件的版本是什么? Have you got the latest pymongo_hadoop connector installed? What versions of the other software are you running?
-
它正在使用hadoop 2.7.3 这是您需要运行的命令 [Linux] $ hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar -file /home/python/mapper.py /home/python/reducer.py -mapper “python mapper.py”-reducer“python reducer1.py”-input / tmp / word_i -output / ...
-
您始终可以使用通配符选择许多文件,而无需显式列出它们。 You can always use wildcard to select many files without need to explicitly list them.
-
Oozie Hadoop Streaming(Oozie Hadoop Streaming)[2022-04-18]
能够通过在Workflow.xml中添加以下内容来解决此问题 HADOOP_USER_NAME = $ {WF:用户()} Able to fix this by adding below in Workflow.xml HADOOP_USER_NAME=${wf:user()} -
如何在Hadoop Streaming中使用“typedbytes”或“rawbytes”?(How to use “typedbytes” or “rawbytes” in Hadoop Streaming?)[2022-11-22]
好吧,我发现了一个有效的组合,但这很奇怪。 根据文档或模仿typedbytes.py ,在本地文件系统中准备有效的typedbytes文件。 使用 hadoop jar path/to/streaming.jar loadtb path/on/HDFS.sequencefile < local/typedbytes.tb 将typedbytes包装在SequenceFile中并将其放入HDFS中,只需一步即可完成。 使用 hadoop jar path/to/streaming.jar -inputfor ... -
如果你正在使用cloudera发行版,那么它很可能在/usr/lib/hadoop ,否则它可能在任何地方(由你的系统管理员决定)。 您可以使用一些技巧来尝试找到它: locate hadoop-env.sh (假设已经安装了locate并且最近已经运行了updatedb) 如果你运行它的机器正在运行hadoop服务(例如数据节点,作业跟踪器,任务跟踪器,名称节点),那么你可以执行一个进程列表和grep for hadoop命令: ps axww | grep hadoop ps axww | grep h ...