博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Python来写MapReduce的实际应用程序
阅读量:4163 次
发布时间:2019-05-26

本文共 2987 字,大约阅读时间需要 9 分钟。

前几篇介绍了MapReduce环境的搭建,我们来做些更有实际意义的事情吧,用Python来写分布式的程序。这样速度快。便于调试,更有实际意义。

个人感觉MapReduce适合于对文本文件的处理及数据挖掘用:

  在每台机器上:

su - hadoop
wget http://www.python.org/ftp/python/3.0.1/Python-3.0.1.tar.bz2
tar jxvf Python-3.0.1.tar.bz2
cd Python-3.0.1
./configure --prefix=/home/hadoop/python;make;make install

vi /home/hadoop/mapper.py

#!/home/hadoop/python/bin/python3.0 import sys for line in sys.stdin:     line = line.strip()     words = line.split()     for word in words:         print ("%st%s" % (word, 1))

vi /home/hadoop/reduce.py

#!/home/hadoop/python/bin/python3.0 from operator import itemgetter import sys word2count = {} for line in sys.stdin:     line = line.strip()     word, count = line.split('t', 1)     try:         count = int(count)         word2count[word] = word2count.get(word, 0) + count     except ValueError:         pass sorted_word2count = sorted(word2count.items(), key=itemgetter(0)) for word, count in sorted_word2count:     print ("%st%s" % (word, count))

  测测好不好用:

echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py
foo 1
foo 1
quux 1
labs 1
foo 1
bar 1
quux 1

echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py | sort | /home/hadoop/reduce.py

bar 1
foo 3
labs 1
quux 2

  在各个节点上都要准备好这两个文件啊!!!

  在master主节点上执行:

# 拷贝conf目录到hdfs文件系统中
$ cd /home/hadoop/hadoop-0.19.1
$ bin/hadoop dfs -copyFromLocal conf 111

  # 查看一下是否已经拷过去了

$ bin/hadoop dfs -ls
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2009-05-18 15:27 /user/hadoop/111

  # 分布计算

$ bin/hadoop jar contrib/streaming/hadoop-0.19.1-streaming.jar -mapper /home/hadoop/mapper.py -reducer /home/hadoop/reduce.py -input 111/* -output 111-output
additionalConfSpec_:null
null=@@@userJobConfProps_.get(stream.shipped.hadoopstreaming
packageJobJar: [/tmp/hadoop-hadoop/hadoop-unjar29198/] [] /tmp/streamjob29199.jar tmpDir=null
[...] INFO mapred.FileInputFormat: Total input paths to process : 12
[...] INFO streaming.StreamJob: getLocalDirs(): [/tmp/hadoop-hadoop/mapred/local]
[...] INFO streaming.StreamJob: Running job: job_200905191453_0001
[...] INFO streaming.StreamJob: To kill this job, run:
...
[...]
[...] INFO streaming.StreamJob: map 0% reduce 0%
[...] INFO streaming.StreamJob: map 43% reduce 0%
[...] INFO streaming.StreamJob: map 86% reduce 0%
[...] INFO streaming.StreamJob: map 100% reduce 0%
[...] INFO streaming.StreamJob: map 100% reduce 33%
[...] INFO streaming.StreamJob: map 100% reduce 70%
[...] INFO streaming.StreamJob: map 100% reduce 77%
[...] INFO streaming.StreamJob: map 100% reduce 100%
[...] INFO streaming.StreamJob: Job complete: job_200905191453_0001
[...] INFO streaming.StreamJob: Output: 111-output [hadoop@wangyin4 hadoop-0.19.1]$
$ bin/hadoop dfs -ls 111-output
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2009-05-19 14:54 /user/hadoop/111-output/_logs
-rw-r--r-- 2 hadoop supergroup 30504 2009-05-19 16:26 /user/hadoop/111-output/part-00000
$ bin/hadoop dfs -cat 111-output/part-00000
you 3
you've 1
your 1
zero 3
zero, 1
Over,搞定。大家可以拓展这个例子,写出自己的应用来。

 

转自:

转载地址:http://uztxi.baihongyu.com/

你可能感兴趣的文章
C语言,也有正则表达式
查看>>
C语言小例子__马里奥碰到花朵变身
查看>>
年薪50万的C++程序员不知道字符数组!网友直呼:我能拿年薪100万!
查看>>
世界排名前五位的女程序员
查看>>
程序员女装史——从入门到穿女装,到底发生了什么?
查看>>
20张图表达程序员的心酸
查看>>
程序员加班写代码,错过了77万
查看>>
不会管理的程序员,永远只是一个大兵
查看>>
程序员年龄增大后的职业出路是什么?
查看>>
C语言10个经典小程序——小白必备!
查看>>
抖音很火的告白编程程序,C语言一样也能做
查看>>
资源——C语言书籍分享!
查看>>
年薪30万才能算码农,你顶多就是码畜...
查看>>
学会这12种语言,再也不会找不到工作了!
查看>>
关于C/C+指针的5个问题
查看>>
9部最值得一看的黑客电影
查看>>
一流程序员靠数学,二流程序员靠算法,低端看高端就是黑魔法!网友:我是七流靠复制
查看>>
程序员入职头条月薪五万,3天后意外收到谷歌的offer,问如何离职?
查看>>
程序员:中专学历月薪2万3,出去能值多少钱?网友:大厂都在裁员!听话别动!
查看>>
996程序员入职一年多,同事涨了4千他没涨,跟领导提涨薪,回复愣了
查看>>