hadoop 流streaming跑python程序

先放上命令:

hadoop jar /usr/hadoop-1.2.1/contrib/streaming/hadoop-streaming-1.2.1.jar -mapper mapper.py -file mapper.py -reduce reduce.py -file reduce.py -file params.txt -file params2.txt -input /data/* -output /output

其中output不存在才可以。

mapper.py的输出直接传给reduce.py

比如在hadoop的集群中,/data/目录下有如下几个文件:

[[email protected] program]# hadoop fs -ls /data/
Found 10 items
-rw-r--r--   3 root supergroup      35596 2015-06-18 16:45 /data/cars-00
-rw-r--r--   3 root supergroup      35592 2015-06-18 16:45 /data/cars-01
-rw-r--r--   3 root supergroup      35588 2015-06-18 16:45 /data/cars-02
-rw-r--r--   3 root supergroup      35584 2015-06-18 16:45 /data/cars-03
-rw-r--r--   3 root supergroup      35584 2015-06-18 16:45 /data/cars-04
-rw-r--r--   3 root supergroup      35596 2015-06-18 16:45 /data/cars-05
-rw-r--r--   3 root supergroup      35588 2015-06-18 16:45 /data/cars-06
-rw-r--r--   3 root supergroup      35586 2015-06-18 16:45 /data/cars-07
-rw-r--r--   3 root supergroup      35584 2015-06-18 16:45 /data/cars-08
-rw-r--r--   3 root supergroup      35574 2015-06-18 16:45 /data/cars-09

对于任何一个文件,如果在本地可以这样完成操作即可:

cat cars-00 | ./mapper.py | ./reduce.py
时间: 2024-10-09 02:39:51

hadoop 流streaming跑python程序的相关文章

hadoop streaming 中跑python程序,自定义模块的导入

今天在做代码重构,以前将所有python文件放到一个文件夹下,上传到hadoop上跑,没有问题:不过随着任务的复杂性增加,感觉这样甚是不合理,于是做了个重构,建了好几个包存放不同功能的python文件,历程如下: 1. 刚开始的时候,在IDE里搞,点击运行,正确.非常赞: 2. 然后搬到服务器上搞,出现了这样的问题: ImportError: no module named XXX 啊,看样子是包引用中路径不对,于是找文章解决: python中,每个py文件被称之为模块,每个具有__init__

用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控

写在前面 前文:用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 为了方便,这篇文章里的例子均为伪分布式运行,一般来说只要集群配置得当,在伪分布式下能够运行的程序,在真实集群上也不会有什么问题. 为了更好地模拟集群环境,我们可以在mapred-site.xml中增设reducer和mapper的最大数目(默认为2,实际可用数目大约是CPU核数-1). 假设你为Hadoop安装路径添加的环境变量叫$HADOOP_HOME(如果是$HAD

用python + hadoop streaming 编写分布式程序(三) -- 自定义功能

又是期末又是实训TA的事耽搁了好久……先把写好的放上博客吧 前文: 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 使用额外的文件 假如你跑的job除了输入以外还需要一些额外的文件(side data),有两种选择: 大文件 所谓的大文件就是大小大于设置的local.cache.size的文件,默认是10GB.这个时候可以用-fil

hadoop streaming anaconda python 计算平均值

原始Liunx 的python版本不带numpy ,安装了anaconda 之后,使用hadoop streaming 时无法调用anaconda python  , 后来发现是参数没设置好... 进入正题: 环境: 4台服务器:master slave1  slave2  slave3. 全部安装anaconda2与anaconda3, 主环境py2 .anaconda2与anaconda3共存见:Ubuntu16.04 Liunx下同时安装Anaconda2与Anaconda3 安装目录:/

在Hadoop平台跑python脚本

1.开发IDE,我使用的是PyCharm. 2.运行原理       使用python写MapReduce的“诀窍”是利用Hadoop流的API,通过STDIN(标准输入).STDOUT(标准输出)在Map函数和Reduce函数之间传递数据.我们唯一需要做的是利用Python的sys.stdin读取输入数据,并把我们的输出传送给sys.stdout.Hadoop流将会帮助我们处理别的任何事情. 3.Map阶段 [[email protected] ~]$ vim mapper.py #!/usr

5.hadoop流原理、实例和新旧API下Wordcount详解

前四篇文章讲了Hadoop的配置和测试以及eclipse下的使用,有兴趣的可以先看下. 1.Hadoop流简介 用可执行文件作为Mapper和Reducer,接受的都是标准输入,输出的都是标准输出. 当一个可执行文件作为Mapper时,每一个Map任务会以一个独立的进程启动这个可执行文件,然后在Map任务运行时,会把输入切分成行提供给可 执行文件,并作为它的标准输入(stdin)内容.当可执行文件运行出结果时,Map从标准输出(stdout)中收集数据,并将其转化 为<key, value>对

用Bash Script编写Hadoop MapReduce Streaming

用Bash Script编写Hadoop MapReduce Streaming 标签(空格分隔): hadoop mapreduce bash MapReduce对外提供一个多语言编写MR的功能,就是Hadoop Streaming.我们可以通过自己喜欢的语言来编写Mapper和Reducer函数,运行MapReduce job. 根据Hadoop Streaming的定义,只要我们能够从标准输入(standard input)读入数据,然后从标准输出(standard output)读出数据

CSDN日报20170319——《人工智能风口, Python 程序员的狂欢与企业主的哀嚎》

[程序人生]人工智能风口, Python 程序员的狂欢与企业主的哀嚎 作者:赖勇浩 人工智能风口有多火?估计很多人已经感受到了,我在这里引用一下新智元的报道: "2017年短短不到三个月的时间,国内AI获投项目已有36个,千万级别融资占据半数以上." 嗯,就是那么霸道.两会刚刚结束,"人工智能"首次被列入政府工作报告,随之而来的是人工智能板块领跑大盘涨势,无疑,这一切将刺激人工智能在多个领域的全面发展. [深度学习]NeuralFinder :集成人工生命和遗传算法

人工智能风口,Python程序员的狂欢与企业主的哀嚎。

人工智能风口有多火?估计很多人已经感受到了,我在这里引用一下新智元的报道: 2017年短短不到三个月的时间,国内AI获投项目已有36个,千万级别融资占据半数以上. 嗯,就是那么霸道.两会刚刚结束,"人工智能"首次被列入政府工作报告,随之而来的是人工智能板块领跑大盘涨势,无疑,这一切将刺激人工智能在多个领域的全面发展. 大量融资的风口企业,绝对会把钱拿到招揽人才.而现在最流行的人工智能技术栈就是 TensorFlow 和 PyTorch,使用它们就是一份 Python 编程开发工作.一时