热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

深入解析MapReduce架构设计与实现原理–读书笔记(1)概述

董西成的书,非常不错。买了有一段时间了,最近才有时间好好观摩一下,而且我们的hadoop集群也是在0.20的版本,还是比较适合的,而且这本书也介绍了部分1.0和2.0的MR框架,是很不错的学习资料。买本书吧,支持一下董大侠。也不贵,打完折页才40多吧。尤其最

董西成的书,非常不错。买了有一段时间了,最近才有时间好好观摩一下,而且我们的hadoop集群也是在0.20的版本,还是比较适合的,而且这本书也介绍了部分1.0和2.0的MR框架,是很不错的学习资料。买本书吧,支持一下董大侠。也不贵,打完折页才40多吧。尤其最

董西成的书,非常不错。买了有一段时间了,最近才有时间好好观摩一下,而且我们的hadoop集群也是在0.20的版本,还是比较适合的,而且这本书也介绍了部分1.0和2.0的MR框架,是很不错的学习资料。买本书吧,支持一下董大侠。也不贵,打完折页才40多吧。尤其最近当当,京东都有活动,还是超级实惠的。知识无价!
这本书深入的解析了MR的原理实现,对于我们这些平时只具体应用的,有很好的提纲挈领的作用,可以指导我们把code写的更好,更全。

分布式编程方法

1.迭代(iteration)。遍历输入数据,并将之解析成key/value对。
2.将输入key/value对映射(map)成另外一些key/value对。
3.依据key对中间数据进行分组(grouping)。
4.以组为单位对数据进行归约(reduce)。
5.迭代。将最终产生的key/value对保存到输出文件中。

编程模型分层

编程模型位于应用程序层和MapReduce执行器之间,可以分为两层。
第一层是最基本的JavaAPI,主要有5个可编程组件。
InputFormat,Mapper,Partitioner,Reducer,OutputFormat。
第二层是工具层,位于基本Java API之上,主要是为了方便用户编写复杂的MapReduce程序和利用其它编程语言增加MapReduce计算平台的兼容性而提出的。
JobControl:
方便用户编写有依赖关系的作业,作业构成一个有向图。DAG(directed Acyclic Graph)作业。
ChainMapper/ChainReducer:
方便用户编写链式作业,即在Map或Reduce阶段存在多个Mapper (MAPPER + REDUCER MAPPER*)
Hadoop Streaming:
方便用户采用非JAVA语言编写作业,允许用户指定可执行文件或者脚本作为Mapper/Reducer
Hadoop Pipes:
专门为C/C++程序员编写的MapReduce程序提供的工具包。

新旧MapReduceAPI比较

1.存放位置:新版API存放在org.apache.hadoop.mapreduce包及其子包中。
2.接口变为抽象类:
抽象类是一种较宽松的约束协议,它可以为某些方法提供默认实现。而继承类则可选择是否重新实现这些方法。
新API将InputStream,OutputStream,Mapper,Reducer,Partitioner由接口变为抽象类。
3.上下文封装:
新版API将变量和函数封装成各种上下文(Context)类。使得API具有更好的易用性和扩展性。
JobContext: Job的基本信息
TaskAttemptContext:Task的基本信息
TaskInputOutputContext:封装了Task的各种输入输出操作
MapContext和ReduceContext:分别封装了Mapper和Reducer对外的公共接口

基本概念

1.序列化

结构化对象转变为字节流以便于通过网络进行传输或写入持久存储的过程。反序列化指的是将字节流转为结构化对象的过程。
MR中序列化的主要作用为:永久存储和进程间通信。
Writable,Comparable,WritableComparable

2.Reporter参数

Reporter是MR提供给应用程序的工具。应用程序可使用Reporter中的方法报告完成进度(progress),设定状态消息(setStatus)以及更新计数器(incrCounter)。
Reporter是一个基础参数。MR对外提供的大部分组件,均在其主要方法中添加了该参数。
Interface:Progressable,Reporter

3.回调机制

回调机制是一种常见的设计模式。它将工作流内的某个功能按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。
例如:
MapReduce给用户保留了接口Mapper,当用户按照自己的应用程序实现了MyMapper后,Hadoop MapReduce运行时环境会将输入数据解析成key/value对,并调用map()函数迭代处理。
Hadoop MapReduce Runtime
MapTask

this.mapper = ReflectionUtils.newInstance(job.getMapperClass(),jobs);迭代处理while(input.next(key,value)){mapper.map(key,value,output,reporter);}结束

推荐阅读
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 深入解析Spark核心架构与部署策略
    本文详细探讨了Spark的核心架构,包括其运行机制、任务调度和内存管理等方面,以及四种主要的部署模式:Standalone、Apache Mesos、Hadoop YARN和Kubernetes。通过本文,读者可以深入了解Spark的工作原理及其在不同环境下的部署方式。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • MapReduce原理是怎么剖析的
    这期内容当中小编将会给大家带来有关MapReduce原理是怎么剖析的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 ... [详细]
  • 优化使用Apache + Memcached-Session-Manager + Tomcat集群方案
    本文探讨了使用Apache、Memcached-Session-Manager和Tomcat集群构建高性能Web应用过程中遇到的问题及解决方案。通过重新设计物理架构,解决了单虚拟机环境无法真实模拟分布式环境的问题,并详细记录了性能测试结果。 ... [详细]
  • 构建Filebeat-Kafka-Logstash-ElasticSearch-Kibana日志收集体系
    本文介绍了如何使用Filebeat、Kafka、Logstash、ElasticSearch和Kibana构建一个高效、可扩展的日志收集与分析系统。各组件分别承担不同的职责,确保日志数据能够被有效收集、处理、存储及可视化。 ... [详细]
  • 在CentOS上构建Ntopng实时网络流量监控平台
    本文详细介绍了如何在CentOS操作系统上安装和配置Ntopng,一个强大的网络流量监控工具。Ntopng能够提供实时的网络流量分析,并通过Web界面展示详细的流量报告。 ... [详细]
  • 大数据时代的机器学习:人工特征工程与线性模型的局限
    本文探讨了在大数据背景下,人工特征工程与线性模型的应用及其局限性。随着数据量的激增和技术的进步,传统的特征工程方法面临挑战,文章提出了未来发展的可能方向。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • HBase 数据复制与灾备同步策略
    本文探讨了HBase在企业级应用中的数据复制与灾备同步解决方案,包括存量数据迁移及增量数据实时同步的方法。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 深入理解云计算与大数据技术
    本文详细探讨了云计算与大数据技术的关键知识点,包括大数据处理平台、社会网络大数据、城市大数据、工业大数据、教育大数据、数据开放与共享的应用,以及搜索引擎与Web挖掘、推荐技术的研究及应用。文章还涵盖了云计算的基础概念、特点和服务类型分类。 ... [详细]
  • 本文介绍了如何在 MapReduce 作业中使用 SequenceFileOutputFormat 生成 SequenceFile 文件,并详细解释了 SequenceFile 的结构和用途。 ... [详细]
author-avatar
微笑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有