MapReduce学习

什么是hadoop streaming

一开始是只能用java语言来编写mapreduce程序的。
hadoop streaming是一种框架,可以让我们使用其他的语言来编写mapreduce程序,而不止局限于Java。
hadoop streaming使用unix的standard streams作为我们的mr程序和MapReduce框架之间的接口。只要我们的mr程序可以再标准io上进行读写。

hadoop streaming的特点

  • map的输入是通过标准input一行一行接受数据的
  • map的输出必须是key-value对
  • reduce的输入是map的输出,也就是说,reduce的输入也必须是key-value对

什么是map reduce

map reduce是一种编程模型。分为map和reduce两个步骤。
map将一组key-value映射为一组新的key-value,然后交给并发的reduce。
key相同的key-value传入同一个reducer,reducer做进一步处理,并把结果输出到hdfs。

word count的map reduce原理

map接受的key是文件的名称,value是文件的内容。
map的输出key是词,value是1,表示找到的一个词。
map首先对一个文件分词,然后遍历这些词,每遇到一个词,就产生一个(kye=词,value=1)
相同词的key-value对,传输到同一个reducer,reducer累加得到该词出现的次数,并把计算结果输出到hdfs。

word count的程序运行步骤

  1. 将输入文件分成n片。n为mapper程序的数量。
  2. 每一片内容分给一个mapper程序进行计算。
  3. 每个mapper程序计算后,将结果交给reducer。
  4. 每个reducer汇总mapper的输入,各自输出一份结果。

使用streaming发布一个用python写的mr程序

hadoop jar /opt/hadoop-2.6.0/share/hadoop/tools/lib/hadoop-streaming-2.6.0.jar -mapper /home/hadoop/hadoop_wordcount/mapper.py -reducer /home/hadoop/hadoop_wordcount/reducer.py -input test.txt -output res.txt -jobconf mapred.map.tasks=4 -mapred.reduce.tasks=2

其中-mapper用于指定mapper程序,
-reducer用于指定reducer程序,
-input指定输入文件,
-output指定输出文件,
-jobconf mapred.map.tasks指定mapper的数量
-jobconf mapred.reduce.tasks指定reducer的数量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值