一.MapReduce是什么?"Map(映射)"和"Reduce(归约)
1.它是一种编程模型(一般是体系比较强的东西),是面向大数据并行处理的模型,框架,和平台.
2.是一个基于集群的高性能并行计算平台
3.是一个并行计算与运行的软件框架
4.是一个并行程序设计模型与方法
并行和并发的区别和练习?
联系:都是多个主体同时参与工作一件事,提高工作效率
区别:共行是多个主题同时去做
并发是多个主体看上去是同时,实际是有先后顺序的.
二.MapReduce基本特点?
1.分步可靠,
2.封装了实现的细节,基于框架的api
3.提供了跨语言编程的能力
三.MapReduce的主要功能?
1.数据划分和计算任务的调度
划分为多个数据块,
2.数据/代码互相定位
3.系统优化
减少数据通信的开销
4.出错检测和回复
假如有一个坏了需要调度其他的jar继续计算
四.MapReduce的运行流程?(集群分主从,主备,无中心集群)
1.提交数据代码,对输入的数据源进行切片
2.master执行调度woker执行,map打散任务
3.worker当中的map任务读取输入源切片
4.worker执行map任务,将任务输出保存在本地
5.master执行调度worker执行reduce聚合任务,reduce worker读取map任务的输出文件
6.执行reduce聚合任务,将该任务的输出保存到HDFS
五.MapReduce java API
WordCount
1.map类的编写:
1>.继承Mapper:是MapReduce计算框架中Map过程的封装
2>.创建Text:用于hdoop对文本字符串的处理
3>.创建IntWritable:用于hdoop对整形的处理
4>.覆写核心map方法,逐个<k,v>处理
5>.用StringTokenizer初始化字符串,并以什么分割,默认为空格
6>循环读取每个元素,并将每个元素放到 Text中,通过context对象 将map的输出逐个输出
2.reduce类编写:
1>.继承Reducer:Reducer:是MapReduce额度侧计算框架Reduce过程的封装
2>.核心rerduce方法具体实现,逐个处理
3>.创建一个变量用来接受计算总和
4>.加强for型for循环,获取迭代器中的元素,将key组中的每个词的频数加起来
5>.将总和放到result IntWritable中,使可以输出结果
6>.通过context对象 将map的输出逐个输出
3.Driver类的编写
1>启动driver方法,获取集群的配置参数
2>设置到job中
3>指定本次执行的主类,指定map类,combiner类,reducer类
4>指定job输出的key和value的类型
5>.指定输入输出的路径,输出路径一定不存在
6>.指定job的执行模式.