Some Questions about MapReduce
一、MapReduce作业在计算过程中会使用和产生哪些数据?这些数据是如何存储的,目前MapReduce提供哪些安全机制保护这些数据的机密性和完整性?
使用源数据,产生MR中间结果数据,以及每次RDD操作中持久化的数据。
如何存储:源数据数据和最终的结果都保存在HDFS上,中间结果存在本地中间结果使用完就会被删除;
通过hdfs的块本分机制和RDD的依机制来保证完整性,当发生错误的时候可以及时恢复。在机密性方面,Hadoop在用户和hadoop服务之间的RPC连接上采用了KerberosRPC认证,通过访问控制列表来控制用户组队HDFS上文件的访问,采用访问控制令牌控制用户对数据块的访问,以及网络加密等手段来保证安全性;
二、MapReduce Map任务的划分与输入数据大小的关系如何?Map任务的节点分配与输入数据的位置有什么关系?请简述任务调度过程中的代码、数据互定位策略。
Hadoop中任务所包含的数据数量的大小主要由下面三种情况决定的
- InputFormat在默认情况下回根据DFS块的大小自动对数据块进行分片
- 通过设置mapred.min.split.size参数设置每个map任务的分片大小
- mapred.map.tasks设置tabks数量,然后用数据块的大小除以该参数得到每个map处理数据量的大小
Map任务分配的节点一般与输入数据的节点是同一个节点或者尽可能相近,这样可以避免网络开销,让计算跟 着数据走;
代码、数据互定位策略:
为了减少数据通信,一个基本原则是本地化数据处理,即一个计算节点尽可能处理其本地磁盘上所分布存储的数据,这实现了代码向数据的迁移;当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻找可用节点以减少通信延迟。
三、MapReduce的Partition划分与Reduce数量的关系如何?
一般情况下有多少个Partition就对应多少个Reduce
四、Shuffle过程主要任务是什么?如何减少Shuffle过程带宽的消耗以及磁盘I/O?
Shuffler是MR作业中的一个特定阶段,当Mapper的输出结果需要被Reducer使用时,输出的结果会根据key进行哈希,Shuffle的任务就是将这些结果分发到各个Reducer上。
减少shuffle带宽和IO消耗的方法;
- 提前对RDD进行分区,这样在shuffle的过程中相同的key对应的数据可能仍在一个RDD或一个节点上中,从而避免的跨节点的shuffle操作
- 在正确的时机使用正确的算子操作,比如在适当的时候用reduceBykey来代替groupByKey
- 在Mapper和Reducer上选择适合的缓冲区大小数量,Mapper上不同的Task作业可以根据Partition进行公用从而避免的Reducer在Mapper进行数据拉取时进行频繁和大量的IO;在Reducer上也可使用适当的缓冲区,Reducer拉取到一定量的数据时再写到磁盘上,这样也避免了频繁的IO操作。
- Reducer尽可能从与其邻近的Reducer上拉取数据,避免数据传输中的网络开销;
- 在Mapper上使用Combiner函数,在Mapper上先进行Reducer减少网络传输
五、MapReduce作业在计算过程中如何监测节点的失效情况?如果发生节点失效情况,它又如何处理节点上的计算任务?
各个节点通过心跳机制向mater汇报自己节点的健康情况,发生节点失效时,在其他节点上重新执行在失效节点上已经执行完和还未执行完的任务。
六、MapReduce作业完成情况取决于最慢执行的任务,最慢任务产生的原因是什么?如何监控这种状态?又该如何处理这种情况?
原因可能是该任务所在的节点其他job占用了资源,或者磁盘损坏或者软件错误导致数据传输很慢;通过心跳机制监控,分发任务后如果指定时间内没有返回结果,就可以判定该节点是执行缓慢的节点;
解决办法:任务接近结束时,在其他节点上生成备份任务,谁先完成就用谁的结果。
Some Questions about MapReduce相关推荐
- Hadoop:mapreduce的splitsize和blocksize
参考: Hadoop MapReduce中如何处理跨行Block和UnputSplit https://stackoverflow.com/questions/17727468/hadoop-inpu ...
- MapReduce 踩坑 - hadoop No FileSystem for scheme: file/hdfs
一.场景 hadoop-3.0.2 + hbase-2.0.0 一个mapreduce任务,在IDEA下本地提交到hadoop集群可以正常运行. 现在需要将IDEA本地项目通过maven打成jar包, ...
- 网络智能和大数据公开课Homework3 Map-Reduce编程
Web Intelligence and Big Data by Dr. Gautam Shroff 这门课是关于大数据处理,本周是第一次编程作业,要求使用Map-Reduce对文本数据进行统计.使 ...
- 课程、问题-利用mincemeat编写简单的MapReduce程序-by小雨
最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--课程.问题- 本文例子为Coursera上web intelligence and big data的课程业作. 问题描述: Downl ...
- MapReduce过程卡在reduce处的67%
MapReduce过程卡在reduce处的67% 原网址: https://stackoverflow.com/questions/19592744/hadoop-reduce-stops-runni ...
- [转]使用Python MrJob的MapReduce实现电影推荐系统
[原文]:http://www.sobuhu.com/archives/567 最近发现一个很好玩的Python库,可以方便的使用在Python下编写MapReduce任务,直接使用Hadoop St ...
- [python]使用python实现Hadoop MapReduce程序:计算一组数据的均值和方差
这是参照<机器学习实战>中第15章"大数据与MapReduce"的内容,因为作者写作时hadoop版本和现在的版本相差很大,所以在Hadoop上运行python写的Ma ...
- MapReduce中的自定义多目录/文件名输出HDFS
转载自 http://my.oschina.net/leejun2005/blog/94706 最近考虑到这样一个需求: 需要把原始的日志文件用hadoop做清洗后,按业务线输出到不同的目录下去,以供 ...
- mapreduce理解_大数据
map:对不同的数据进行同种操作 reduce:按keys 把数据规约到一起 看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop 与MapReduce的整体有所了解了. [前言 ...
最新文章
- ORM操作models一对多、多对多关系
- HDU2988(Kruskal算法模版)
- ADO.NET 快速入门(四):从数据库填充 DataSet
- 解决Matlab Help文档需要登录才能查看的问题
- spring事务传播属性与隔离级别
- 数据流DataInput(Output)Stream 和 字节数组流 ByteArrayInput(Output) Stream
- 牛式 Prime Cryptarithm
- python科学计算笔记(一)NumPy中ndarray对象、ufunc运算、矩阵运算
- k8s mysql数据同步_K8s——MySQL实现数据持久化
- 厉害了!这家国产厂商2018年在印度高端手机市场销量第一
- 蓝桥杯入门训练Fibonacci数列
- 2018-11-13#Hive外表创建和加载数据
- 征集 | AAAI 2021线下论文预讲会讲者征集
- SRv6技术课堂(一):SRv6概述
- 写论文时introduction and realted works部分如何写别人的工作,论文写作常用词
- 最新BIOS设置中英文对照表
- 天正cad计算机快捷键,天正CAD快捷键大全
- 关于人大金仓数据库连接数量问题
- 建设容器云平台之前不能忽视3个评估,你的企业能得多少分? | 某银行最佳实践分享
- 决策树——员工离职预测模型搭建