MapReduce地特性.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MapReduce地特性

MapReduce的特性 贺争盛 2013 年 6月 23日 星期日 浙江大学计算机学院数字媒体 计数器 排序 连接 Contents 1 · 目录一 1 2 3 5 边数据分布 MapReduce库类 Contents 2 · 目录二 4 计数器 一种收集作业统计信息的有效手段,由于质量控制或应用统计。计数器还可辅助诊断系统故障。 获取计数器值比输出日志更为方便 内置计数器 用户定义的java计数器 用户定义的streaming计数器 内置计数器 Hadoop内置的计数器,记录作业执行情况和记录情况。 MapReduce框架、文件系统、作业计数三大类 计数器由关联任务维护,定期传递给tasktracker,再由tasktracker传给jobtracker。 计数器可以被全局聚集。内置的作业计数器实际上由jobtracker维护,不必在整个网络中传递。 一个任务的计数器值每次都是完整传输的 用户定义的Java计数器 多个计数器由一个Java枚举(enum)类型来定义 MapReduce框架将跨所有map和reduce聚集这些计数器,并在作业结束时产生一个最终结果。 用户定义的Java计数器 动态计数器 incrCounter(String group,String counter,long amount) 不由java枚举类型定义的计数器 两种创建和访问计数器方法——枚举类型和string类型——事实上等价 获取计数器 两种获取计数器的方法 1.  hadoop job –counter 指令 2.通过java API,在作业运行完成后,计数器稳定后获取。 使用job.getCounters()得到Counters 排序 排序是MapReduce的核心技术 准备 要用顺序文件存储数据,Intwritable键代表气温(排序),text值就是数据行。 每个map创建并输出一个块压缩的顺序文件 部分排序 基于分区的MapFile查找技术 全排序 产生一个全局排序的文件 只有一个分区可以实现,但无法利用并行的优势 替代方案: 1、  创建一系列排好序的文件 2、  串联这些文件, 3、  生成一个全局排序的文件 思路:使用一个partitioner来描述全局排序的输出。 全排序 关键点在于如何划分各个分区。尽量使各分区的记录数相等。 1、  可以写一个MapReduce程序来计算各个范围数据的分布,用来做评估。但性能较低 2、  可以通过对键空间进行采样,获取键的近似分布。 全排序 辅助排序 主要解决对键所对应的值的排序 1、  定义包括自然键和自然值的组合键 2、  键的comparator根据组合键对记录进行排序,即同时利用自然键和自然值进行排序 3、  针对组合键的comparator和分组comparator在进行分区和分组时均只考虑自然键 连接 连接 连接操作的具体实现技术取决于数据集的规模和分区方式 1、  如果一个数据集很大,一个数据集很小,则将集合分发到集群中每一个节点,从而实现连接 2、  对两个数据集都很大,则需要根据数据的组织方式,来决定是在map端连接还是在reduce端连接。 Map端连接 在两个大规模输入数据集之间的map端连接会在数据到达map函数之前就执行连接操作。 相同数量分区,按相同键排序(连接键) reduce端连接 Reduce端连接并不要求输入数据集符合特定结构,因而reduce端连接比ap端连接更为常用。但由于两个数据集均需经过MapReduce的shuffle过程,所以reduce端连接的效率往往更低一些。 基本思路:mapper为各个记录标记源,并且使用连接健作为map输出键,使键相同的记录放在同一个reducer中。 边数据分布 “边数据”(side data)是作业所需的额外的只读数据,以辅助处理主数据集。 如何让所有map或reduce任务方便而高效使用边数据。 利用JobConf来配置作业 如果只需向任务传递少量元数据则非常有用。如果想获取任务的值,只需覆盖Mapper或Reducer类的configure()方法,并调用传入JobConf对象的getter方法即可。 分布式缓存 Hadoop的分布式缓存拷贝机制,它能够在任务运行过程中及时将文件和存档复制到任务节点以供使用。为了节约网络带宽,在每一个作业中,各个文件通常只需复制到一个节点一次。 缓存的容量是有限的,默认10G,可以在local.cache.size进行配置 -file 指定带分发的文件 -archieves 向自己的任务中复制存档文件 -libjars 把JAR文件添加到mapper和reducer任务的类路径中。 分布式缓存 工作机制: 1、  用户启动一个作业,hadoop将由-f

文档评论(0)

yx118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档