集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > 大数据 >

成都学大数据教程--MapReduce

发布者: 成都达内     浏览次数:     发布时间:2019-04-16 10:38:18

Mapreduce是hadoop的运算框架,可以对hdfs中的数据分开进行计算,先执行很多maptask,在执行reducetask,这个过程中任务的执行需要一个任务调度的平台,就是yarn。...

  成都学大数据教程--MapReduce

  Mapreduce是hadoop的运算框架,可以对hdfs中的数据分开进行计算,先执行很多maptask,在执行reducetask,这个过程中任务的执行需要一个任务调度的平台,就是yarn。

  一、安装YARN集群

  yarn集群中有两个角色:

  主节点:Resource Manager 1台

  从节点:Node Manager N台

  Resource Manager一般安装在一台专门的机器上

  Node Manager应该与HDFS中的data node重叠在一起

  修改配置文件:yarn-site.xml

  成都学大数据教程--MapReduce

  然后scp到所有机器,修改主节点hadoop的slaves文件,列入要启动nodemanager的机器,配好免密

  然后,就可以用脚本启动yarn集群:

  sbin/start-yarn.sh

  停止:

  sbin/stop-yarn.sh

  页面:http://主节点:8088 看看node manager节点是否识别

  开发一个提交job到yarn的客户端类,mapreduce所有jar和自定义类,打成jar包上传到hadoop集群中的任意一台机器上,运行jar包中的(YARN客户端类

  hadoop jar ......JobSubmitter

  二、开发mapreduce程序

  主要需要开发:

  map阶段的进、出数据,

  reduce阶段的进、出数据,

  类型都应该是实现了HADOOP序列化框架的类型,如:

  String对应Text

  Integer对应IntWritable

  Long对应LongWritable

  例子wordcount代码:

  WordcountMapper

  public class WordcountMapper extends Mapper{

  @Override

  protected void map(LongWritable key, Text value, Context context)

  throws IOException, InterruptedException {

  // 切单词

  String line = value.toString();

  String[] words = line.split(" ");

  for(String word:words){

  context.write(new Text(word), new IntWritable(1));

  }

  }

  }

  WordcountReducer

  public class WordcountReducer extends Reducer{

  @Override

  protected void reduce(Text key, Iterable values,Context context) throws IOException, InterruptedException {

  int count = 0;

  Iterator iterator = values.iterator();

  while(iterator.hasNext()){

  IntWritable value = iterator.next();

  count += value.get();

  }

  context.write(key, new IntWritable(count));

  }

  }

  public class JobSubmitter {

  public static void main(String[] args) throws Exception {

  // 在代码中设置JVM系统参数,用于给job对象来获取访问HDFS的用户身份

  System.setProperty("HADOOP_USER_NAME", "root");

  Configuration conf = new Configuration();

  // 1、设置job运行时要访问的默认文件系统

  conf.set("fs.defaultFS", "hdfs://hdp-01:9000");

  // 2、设置job提交到哪去运行

  conf.set("mapreduce.framework.name", "yarn");

  conf.set("yarn.resourcemanager.hostname", "hdp-01");

  // 3、如果要从windows系统上运行这个job提交客户端程序,则需要加这个跨平台提交的参数

  conf.set("mapreduce.app-submission.cross-platform","true");

  Job job = Job.getInstance(conf);

  // 1、封装参数:jar包所在的位置

  job.setJar("d:/wc.jar");

  //job.setJarByClass(JobSubmitter.class);

  // 2、封装参数: 本次job所要调用的Mapper实现类、Reducer实现类

  job.setMapperClass(WordcountMapper.class);

  job.setReducerClass(WordcountReducer.class);

  // 3、封装参数:本次job的Mapper实现类、Reducer实现类产生的结果数据的key、value类型

  job.setMapOutputKeyClass(Text.class);

  job.setMapOutputValueClass(IntWritable.class);

  job.setOutputKeyClass(Text.class);

  job.setOutputValueClass(IntWritable.class);

  Path output = new Path("/wordcount/output");

  FileSystem fs = FileSystem.get(new URI("hdfs://hdp-01:9000"),conf,"root");

  if(fs.exists(output)){

  fs.delete(output, true);

  }

  // 4、封装参数:本次job要处理的输入数据集所在路径、最终结果的输出路径

  FileInputFormat.setInputPaths(job, new Path("/wordcount/input"));

  FileOutputFormat.setOutputPath(job, output); // 注意:输出路径必须不存在

  // 5、封装参数:想要启动的reduce task的数量

  job.setNumReduceTasks(2);

  // 6、提交job给yarn

  boolean res = job.waitForCompletion(true);

  System.exit(res?0:-1);

  }

  }

  MR还有一些高级的用法:自定义类型,自定义Partitioner,Combiner,排序,倒排索引,自定义GroupingComparator

  成都学大数据教程--MapReduce

  三、mapreduce与yarn的核心机制

  yarn是一个分布式程序的运行调度平台

  yarn中有两大核心角色:

  1、Resource Manager

  接受用户提交的分布式计算程序,并为其划分资源

  管理、监控各个Node Manager上的资源情况,以便于均衡负载

  2、Node Manager

  管理它所在机器的运算资源(cpu + 内存)

  负责接受Resource Manager分配的任务,创建容器、回收资源

  Mapreduce工作机制:

  划分输入切片——》 环形缓冲区 ——》 分区排序 ——》Combiner 局部聚合——》shuffle ——》GroupingComparator——》输出

  在这个世界上,最重要的不是你所处的位置,而是你前进的方向!

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市人民南路一段86号“城市之心”大厦26楼

联系电话:15023458194

公交路线:成都市人民南路(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56