《Hadoop权威指南》笔记(一) --- 初识Hadoop与MapReduce

第1章 初识Hadoop

Hadoop为我们提供了一个可靠的且可扩展的存储和分析平台。

shared-nothing(SN)架构:是一种分布式计算架构,这种架构中,每一个节点都是独立的,自给的,在系统中不存在单点竞争。这种架构中不存在集中存储的状态,整个系统中没有资源竞争。更明确地说,没有节点共享存储器和硬盘。shared noting在web应用中广泛使用,原因就在于它的可扩展性。一个完全的SN系统可以通过增加廉价的计算机来实现极大的扩展,因为在系统中没有单点瓶颈去降低系统的速度,谷歌把这种特性成为sharding。一个典型的SN系统把它的数据划分为不同的部分存储在不同节点的数据库中,并且为不用的用户和请求分配不同的节点,要求系统中的每个节点使用某种协议维护自己的应用程序数据的副本,这通常被称为数据库分片。 

第2章 关于MapReduce

MapReduce是一种可用于数据处理的编程模型。Hadoop可以运行各种语言版本的MapReduce程序,如Java、Ruby、Python等。MapReduce程序本质上是并行运行的,因此可以将大规模的数据分析任务分发给任何一个拥有足够多机器的数据中心。MapReduce的优势在于处理大规模数据集。

通常,处理少量的大型文件比处理大量的小型文件更容易、更高效。因此,将小型文件经过预处理,拼接成一些大型文件后来处理。

map函数的输出经由MapReduce框架处理后,最后发送到reduce函数。这个过程基于键来对键-值对进行排序和分组。

Hadoop本身提供了一套可优化网络序列化传输的基本类型,

此外还有BooleanWritable、ByteWritable、DoubleWritable、FloatWritable和NullWritable(当<key, value>中的key或value为空时使用)等。

YARN:Hadoop资源管理系统              HDFS:Hadoop分布式文件系统

reduce的输出通常存储在HDFS中以实现可靠存储。reduce任务的数量并非由输入数据的大小决定,相反是独立指定的(8.1节介绍)

对于大多数作业,一个合理的分片大小趋向于HDFS的一个块的大小,默认为128MB,但是也可以针对集群调整这个默认值。

上图清楚地表明了为什么map任务和reduce任务之间的数据流称为shuffle(混洗),因为每个reduce任务的输入都来自许多map任务。shuffle一般比图中所示的更复杂,而且调整混洗参数对作业总执行时间的影响非常大(详情见7.3节)。

combiner函数能帮助减少mapper和reducer之间的数据传输量,但不能取代reduce函数。在Java  MapReduce程序中,combiner是通过Reducer类来定义的。

猜你喜欢

转载自blog.csdn.net/aa_JamesJones/article/details/82964120