千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:郑州千锋IT培训  >  行业资讯  >  郑州大数据培训学习笔记分享 MapReduce的执行

郑州大数据培训学习笔记分享 MapReduce的执行

来源:千锋教育
发布人:Yolanda
时间: 2018-10-29 16:32:00

  通过千锋郑州大数据培训一阶段课程的学习,我对于java se和java ee的开发有了新的认识。进入了二阶段的学习后,我们学习了分别在linux和windows系统上安装Java、mysql、hadoop等软件,学习了利用命令行来操作linux系统,以及Java和haoop在linux上的环境变量配置。接下来我就给大家分享一下MapReduce相关的学习笔记。

  我们在设置MapReduce输入格式的时候,会调用这样一条语句:

  [backcolor=rgb(255, 255, 255) !important][size=1em]

  job.setInputFormatClass(KeyValueTextInputFormat.class);

  其中block_size : hdfs的文件块大小,默认为64M,可以通过参数dfs.block.size设置;total_size : 输入文件整体的大小;input_file_num : 输入文件的个数。

图片1

  MapReduce的执行步骤

  这条语句保证了输入文件会按照我们预设的格式被读取。KeyValueTextInputFormat即为我们设定的数据读取格式。

  所有的输入格式类都继承自InputFormat,这是一个抽象类。其子类有例如专门用于读取普通文件的FileInputFormat,还有用来读取数据库的DBInputFormat等等。

  输入分片(Input Split):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组。

  在我们没有设置分片的范围的时候,分片大小是由block块大小决定的,和它的大小一样。比如把一个258MB的文件上传到HDFS上,假设block块大小是128MB,那么它就会被分成三个block块,与之对应产生三个split,所以最终会产生三个map task。 问题,第三个block块里存的文件大小只有2MB,而它的block块大小是128MB,那它实际占用Linux file system的多大空间?

  答案是实际的文件大小,而非一个块的大小。

  一个split的大小是由goalSize, minSize, blockSize这三个值决定的。computeSplitSize的逻辑是,先从goalSize和blockSize两个值中选出最小的那个(比如一般不设置map数,这时blockSize为当前文件的块size,而goalSize是文件大小除以用户设置的map数得到的,如果没设置的话,默认是1)

  hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数。但是通过这种方式设置map的个数,并不是每次都有效的。原因是mapred.map.tasks只是一个hadoop的参考数值,最终map的个数,还取决于其他的因素。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

大数据培训要花多少钱

2023-04-12

计算机前端怎么学

2023-04-12

大数据都需要学什么?难不难

2023-03-30

最新文章NEW

javaee是前端还是后端,都学什么

2023-03-24

it前端是做什么的

2023-03-24

大数据培训要多久?你了解多少

2023-03-09

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>