MapReduce分布式编程框架
一、MapReduce分布式编程框架及yarn集群搭建
1.大数据解决的问题? 海量数据的存储:hadoop->分布式文件系统HDFS海量数据的计算:hadoop->分布式计算框架MapReduce2.什么是MapReduce?分布式程序的编程框架,java-->ssh ssm,目的:简化开发!是基于hadoop的数据分析应用的核心框架。mapreduce的功能:将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发的运行在hadoop集群上。3.MapReduce的优缺点优点:(1)易于编程(2)良好的拓展性(3)高容错性(4)适合处理PB级别以上的离线处理缺点:(1)不擅长做实时计算(2)不擅长做流式计算(mr的数据源是静态的)(3)不支持DAG(有向图)计算(spark)4.自动化调度平台yarn(MapReduce程序的运行平台)MapReduce程序应该在多台机器上运行启动,而且要先执行maptask,等待每个maptask都处理完成后还要启动很多个reducetask,这个过程要用户手动调用任务不太现实,需要一个自动化的任务调度平台-->hadoop当中2.x中提供了一个分布式调度平台-YARN5.搭建yarn集群(1)修改配置文件 yarn-site.xml<property><name>yarn.resourcemanager.hostname</name><value>hd09-1</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>(2)然后复制到每台机器 $PWD 当前目录scp yarn-site.xml root@hd09-2:$PWDscp yarn-site.xml root@hd09-3:$PWD(3)修改slaves文件然后在hd09-1上,修改hadoop的slaves文件,列入要启动nodemanager的机器然后将hd09-1到所有机器的免密登陆配置好(4)脚本启动yarn集群:启动:start-yarn.sh停止:stop-yarn.sh(5)访问web端口启动完成后,可以在windows上用浏览器访问resourcemanager的web端口:http://hd09-1:8088
二、WordCount代码实现
1.Mapper类
package com.css.wc;import java.io.IOException;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper;/*** 思路?* wordcount单词计数* <单词,1>* * 数据传输* * KEYIN:数据的起始偏移量0~10 11~20 21~30* VALUEIN:数据* * KEYOUT:mapper输出到reduce阶段k的类型* VALUEOUT:mapper输出到reduce阶段v的类型* <China,1><Beijing,1><love,1>*/ public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{// key 起始偏移量 value 数据 context 上下文 @Overrideprotected void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {// 1.读取数据String line = value.toString();// 2.切割 China loveString[] words = line.split(" ");// 3.循环的写到下一个阶段<China,1><love,1>for (String w : words) {context.write(new Text(w), new IntWritable(1));}} }
2.Reducer类
package com.css.wc;import java.io.IOException;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer;/*** 汇总<China,2> <Beijing,2> <love,2>*/ public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{@Overrideprotected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {// 1.统计单词出现的次数int sum = 0;// 2.累加求和for (IntWritable count : values) {// 拿到值累加sum += count.get();}// 3.结果输出context.write(key, new IntWritable(sum));} }
3.Driver类
package com.css.wc;import java.io.IOException;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;/*** 驱动类*/ public class WordCountDriver {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {// 1.获取job信息Configuration conf = new Configuration();Job job = Job.getInstance(conf);// 2.获取jar包job.setJarByClass(WordCountDriver.class);// 3.获取自定义的mapper与reducer类job.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.class);// 4.设置map输出的数据类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 5.设置reduce输出的数据类型(最终的数据类型)job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 6.设置输入存在的路径与处理后的结果路径 FileInputFormat.setInputPaths(job, new Path("c:/in1019"));FileOutputFormat.setOutputPath(job, new Path("c:/out1019"));// 7.提交任务boolean rs = job.waitForCompletion(true);System.out.println(rs ? 0 : 1);} }
4.输入的文件words.txt
I love Beijing I love China Beijing is the capital of China
5.输出的文件part-r-00000
Beijing 2 China 2 I 2 capital 1 is 1 love 2 of 1 the 1
转载于:https://www.cnblogs.com/areyouready/p/9853431.html
MapReduce分布式编程框架相关推荐
- MapReduce分布式编程模型
文章目录 MapReduce分布式编程模型 1.定义 2.优缺点 3.MapReduce核心思想 4.MapReduce进程 5.MapReduce编程规范 Hadoop序列化 1.什么是序列化 2. ...
- 第五章-分布式并行编程框架MapReduce
第五章-分布式并行编程框架MapReduce 文章目录 第五章-分布式并行编程框架MapReduce MapReduce概述 分布式并行编程 MapReduce模型和函数 MapReduce体系结构 ...
- 4 MapReduce编程框架
MapReduce编程框架 第 1 节 MapReduce思想 MapReduce思想在⽣活中处可见.我们或多或少都曾接触过这种思想.MapReduce的思想核⼼是分而治之,充分利用了并⾏处理的优势. ...
- 分布式处理框架MapReduce
分布式处理框架MapReduce 目录 1.MapReduce概述 2.MapReduce编程模型 3.MapReduce架构 4.MapReduce编程 本文是慕课网大数据的学习笔记与总结: 1.M ...
- Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化...
转自:http://blog.csdn.net/wh_springer/article/details/51842496 近十年来,随着Hadoop生态系统的不断完善,Hadoop早已成为大数据事实上 ...
- 再见 xxl-job!更强大的新一代分布式任务调度框架来了
因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 点击关注#互联网架构师公众号,领取架构师全套资料 都在这里 0.2T架构师学习资料干货分 ...
- [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark
[源码解析] 深度学习分布式训练框架 horovod (10) - run on spark 文章目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...
- 五种基于 MapReduce 的并行计算框架介绍及性能测试
并行计算模型和框架 目前开源社区有许多并行计算模型和框架可供选择,按照实现方式.运行机制.依附的产品生态圈等可以被划分为几个类型,每个类型各有优缺点,如果能够对各类型的并行计算框架都进行深入研究及适当 ...
- 【常见编程/框架介绍】
目录 一.C/C++ 1. 简介 2. 特点 3. 优点 4. 缺点 5. 常见使用场景 二.C# 三.cocos2d-x 四.go语言 1. 简介 2. 优点 3. 缺点 4. 就业方向 五.Had ...
- 轻量级分布式 RPC 框架
RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. RPC 可基于 HTTP 或 TCP 协议,Web Servi ...
最新文章
- 在线作图|如何绘制一张山脊图
- 《LeetCode力扣练习》第136题 只出现一次的数字 Java
- C# 7.1、7.2特性追踪
- Redis主从复制(Master-Slave Replication)
- Springboot的异步、定时、邮件任务
- zabbix3.4.4 监控系统安装部署
- ubuntu安装minisat_minisat 安装指南
- Java多线程系列 基础篇04 线程中断
- 深入浅出Linux设备驱动编程--引言
- Python开发Http代理服务器 - socketref,呆在autonavi.com - C++博客
- 《Mybatis 手撸专栏》第10章:使用策略模式,调用参数处理器
- oracle dbms_lob trim,ORACLE LOB处理
- 手机网页版JS压缩上传图片--base64位 兼容IOS和安卓
- Qt数据导出csv防止科学记数法
- 二分类资料校准曲线calibration curve的绘制
- 位域外部申明_(外部)域特定语言的完整指南
- 编码(NRZ、NRZI、曼彻斯特、4B
- 广东移动魔百盒M411A _905L3_线刷固件包
- 没想到,中国邮政卖奶茶:一铺开就是全国第一
- hydra的基本使用