- 主题:MapReduce简介
Do your friends ever have a conversation and you just nod along even though you're not really sure what they're talking about? 看完Michael G. Noll的文章,你就基本明白MapReduce了。原文请搜"Writing An Hadoop MapReduce Program In Python".
写个词频统计程序,例如foo foo quux labs foo bar quux,foo出现3次,bar1次。
# mapper.py
for line in sys.stdin:
for word in line.strip().split():
print '%s\t%s' % (word, 1)
# reducer.py
cur_word, cur_cnt, word = None, 0, None
for line in sys.stdin:
word, count = line.strip().split('\t')
count = int(count)
if cur_word == word:
cur_cnt += count
else:
if cur_word:
print '%s\t%s' % (cur_word, cur_cnt)
cur_cnt = count
cur_word = word
if cur_word == word:
print '%s\t%s' % (cur_word, cur_cnt)
$ cat data | mapper.py | sort -k1,1 | reducer.py
# sort -k1,1对第一个field排序,就是foo, bar这样的词而不是1, 2这样的词频。
$ bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar \
-file /home/hduser/mapper.py -mapper /home/hduser/mapper.py \
-file /home/hduser/reducer.py -reducer /home/hduser/reducer.py \
-input /user/hduser/gutenberg/* -output /user/hduser/gutenberg-output
为什么不用python的字典,而要这么绕?因为要处理的数据很大。例如,假设有5万个词,词的2-gram(二元语法模型),就可能有5万*5万个词-词对。谷歌机器翻译用到了5-gram,如果有10万个词,就有10^25个词-词-词-词-词对,以上均为最大值。
有了Hadoop这个框架,你就进入了体制内,专心写好mapper和reducer就行,别的组织会安排的,例如把你的程序复制到机群里的n台机器上运行。
MapReduce was first popularized as a programming model in 2004 by Jeffery Dean and Sanjay Ghemawat of Google. 我的猜测是:有需求,有旧东西例如The Carnegie Mellon Statistical Language Modeling (CMU SLM) Toolkit is a set of unix software tools designed to facilitate language modeling work in the research community有foo 1这样的做法,Dean有想法—凝练出个通用的模型,有能力实现,有老板支持,事就成了。
一个音字转换用语言模型的例子:解决shi ji wen ti,shi ji=实际,比世纪、史记、试剂可能性大(化学论文例外),把"解决实际"当词存起来是土办法。
再看个图温故吧:
<图>
最后: mapreduce为什么被淘汰了?<链接>
https://zhuanlan.zhihu.com/p/145639231
--
FROM 106.121.141.*
MapReduce 就是又一个垃圾 Java 砖家重新发明的让世界增加更多的 Java 垃圾以保证垃圾 Java 程序员的饭碗的垃圾概念。
【 在 billybear04 () 的大作中提到: 】
: Do your friends ever have a conversation and you just nod along even though you're not really sure what they're talking about? 看完Michael G. Noll的文章,你就基本明白MapReduce了。原文请搜"Writing An Hadoop MapReduce Program In Python".
:
: 写个词频统计程序,例如foo foo quux labs foo bar quux,foo出现3次,bar1次。
:
--
FROM 138.19.103.*
发明的人是垃圾那你是什么?蛆?
你是发明了个更好的还是搞了个比Google大的公司还是发了几篇science?
【 在 fanci 的大作中提到: 】
: MapReduce 就是又一个垃圾 Java 砖家重新发明的让世界增加更多的 Java 垃圾以保证垃圾 Java 程序员的饭碗的垃圾概念。
--
FROM 58.251.92.*
同意,Java都是垃圾
【 在 fanci 的大作中提到: 】
: MapReduce 就是又一个垃圾 Java 砖家重新发明的让世界增加更多的 Java 垃圾以保证垃圾 Java 程序员的饭碗的垃圾概念。
--
FROM 117.136.67.*
又不是java特有的,人家谷歌自己实现不一定用java
【 在 fanci (大葡萄) 的大作中提到: 】
: MapReduce 就是又一个垃圾 Java 砖家重新发明的让世界增加更多的 Java 垃圾以保证垃圾 Java 程序员的饭碗的垃圾概念。
:
: 【 在 billybear04 () 的大作中提到: 】
: : Do your friends ever have a conversation and you just nod along even though you're not really sure what they're talking about? 看完Michael G. Noll的文章,你就基本明白MapReduce了。原文请搜"Writing An Hadoop MapReduce Program In Python".
--
FROM 124.202.217.*
这不是谷歌的论文提出的概念么?没开源原始实现。
【 在 fanci 的大作中提到: 】
: MapReduce 就是又一个垃圾 Java 砖家重新发明的让世界增加更多的 Java 垃圾以保证垃圾 Java 程序员的饭碗的垃圾概念。
--
FROM 155.64.23.*
Google自己家实现的好像是C++
是先有Google的实现,他们用了一段时间之后才发的paper,paper出来后,Cutting 才写的Hadoop的mapreduce
【 在 alittlebaby (小萌派子) 的大作中提到: 】
:
: 原以为,一年级语文初学写字掌握横平竖直,基本的结构均衡,字形协调即可。过度强调每一笔画的精确位置,对于刚学写字的小孩每个字都要求记忆每一笔画的起始位置,角度,以及每个字形结构之间的位置比例,过于苛刻也没有必要。
: 以下是娃的作业,本以为算是规范,结果还被返回,要求修改很多字体细节。
: 所以想请教大家,是不是我的认识一些偏差,需要修正,感谢
--
FROM 117.136.38.*
那你算什么垃圾?难道不知道其他语言也能写MapReduce吗?为了怼而怼只有弱智才能干的出来,你内心太阴暗了吧。
【 在 fanci 的大作中提到: 】
:
: MapReduce 就是又一个垃圾 Java 砖家重新发明的让世界增加更多的 Java 垃圾以保证垃圾 Java 程序员的饭碗的垃圾概念。
:
: :
: --
发自「今日水木 on iOS」
--
FROM 61.148.243.*
实际上其他语言写mapreduce没一个像java这么费劲的。
【 在 chrisin (chrisin) 的大作中提到: 】
: 标 题: Re:MapReduce简介
: 发信站: 水木社区 (Thu Jun 4 22:05:12 2020), 站内
:
: 那你算什么垃圾?难道不知道其他语言也能写MapReduce吗?为了怼而怼只有弱智才能干的出来,你内心太阴暗了吧。
: 【 在 fanci 的大作中提到: 】
: :
: : MapReduce 就是又一个垃圾 Java 砖家重新发明的让世界增加更多的 Java 垃圾以保证垃圾 Java 程序员的饭碗的垃圾概念。
: :
: : :
: : --
:
: 发自「今日水木 on iOS」
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 61.148.243.*]
--
FROM 106.39.150.*