大数据 第二章 mapreduce入门到实践

mapreduce

概念

1.mapreduce是分布式计算框架,分为maptask和reducetask,maptask负责读取hdfs中文件的内容,并将内容进行自定义处理。reducetask负责将maptask中返回的结果内容进行统计。
2.每个maptask是读取hdfs文件中block的数据。
3.在编码过程中,需要自定义maptask的处理逻辑,每次都是将一行数据返回,然后将这一行数据简单处理之后返回给reducetask,以keyvalue的形式,reducetask同样的key交给同一个服务来处理,最后要将相同key的数据进行自定义处理。
4.maptask和reducetask之间涉及到网络传输,需要将数据序列化,hadoop将各个类型的数据进行了封装,Long封装为LongWritable,Integer封装为IntWritable,String封装为Text,Float封装为FloatWritable。
5.具体代码流程:
比如要统计一个文件中单词的数量,需要继承Mapper,需要定义入参的LongWritable,Text,出参的Text,LongWitable,入参是LongWritable读取文件的偏移量,Text是每行读取的内容,出参Text是单词,LongWritable是该单词出现的次数。
6.重写map方法,入参是LongWritable,Text。将每行读取到的数据进行单词切分,最后context.write(new Text(word),new IntWritable(1));
7.新建一个类继承Reduce,重写reduce方法,入参是map方法的key出参,value的迭代器,出参是自定义的keyvalue类型。在方法中将value的迭代器中的内容进行累加处理,最后赋值给key,最后context.write(key,value)即可。
8.mapreduce运行时需要一个调度平台yarn。yarn集群中分为一个resource managere和若干个node manager,resource manager负责任务调度,node
manager负责创建容器运行程序。node manager一般和data node放到同样的机器上,这样读取文件有可能不需要网络传输。
9.启动node manager需要指定resource manager的机器。
10.写一个JobSumbmitter,制定resource manager的位置,指定是yarn方式调度,设置mapper和reduce的实现类,制定输出的参数类型,指定输入输出的文件路径。指定reducetask的数量,最后提交job给yarn。如果需要等待任务最后完成可以job.waitForCompletion(true)。该类的主要工作是封装本次job的必要参数,并启动yarn。
11.需要将job的jar包放到linux上运行,如果在window中运行,job中去启动linux中的yarn,需要加上跨平台的参数为true。job需要将本身的jar包真实地发送给yarn,才能读取到mapper和reduce的实现类。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值