本节书摘来自华章出版社《R与Hadoop大数据分析实战》一书中的第1章,第1.5节,作者 (印)Vignesh Prajapati,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.5 Hadoop的特点
Hadoop是围绕两个核心概念专门设计的:HDFS和MapReduce。这两者都与分布式计算相关。MapReduce被认为是Hadoop的核心并对分布式数据执行并行处理。
Hadoop的特点如下:
HDFS
MapReduce
1.5.1 HDFS简介
HDFS是Hadoop自带的机架感知文件系统,这是Hadoop中的一个基于UNIX的数据存储层。HDFS起源于Google文件系统概念。Hadoop的一个重要特征是数据分区和通过许多(成千的)主机的计算以及以并行、接近它们的数据的方式执行的应用程序计算。在HDFS上,数据文件在集群里被复制成序列块。一个Hadoop集群通过简单地添加商业服务器来衡量计算能力、存储容量和I/O带宽。可以通过许多不同的方式从应用程序中访问HDFS。HDFS本身为应用程序提供一个Java API。
Hadoop集群在Yahoo!上跨度40 000台服务器并且存储40PB的应用数据,最大的Hadoop集群有4000台服务器。同时,遍及全球的其他一百个已知组织正在使用Hadoop。
了解HDFS的特点
HDFS的特点如下:
容错
能在商业硬件上运行
能够处理大型数据集
主从范式
一次写入文件的访问
1.5.2 MapReduce简介
MapReduce是一个在大集群中用于处理分布式大数据集的编程模型,是Hadoop的核心。它的程序示例可在配有Hadoop集群的很多服务器上处理大数据,这源于Google MapReduce。
Hadoop MapReduce是易于编写应用程序的一个软件框架,在大集群的硬件中,以一种可靠、容错的方式并行处理大数据。这个MapReduce范式分为两个阶段,Map和Reduce主要以键值对形式处理数据。Map和Reduce任务在一个集群上按顺序进行,Map阶段的输出将作为Reduce阶段的输入。这一过程解释如下:
Map阶段:数据集被分割后,处理数据集的权限分配给任务跟踪器,来执行Map阶段。数据操作执行,得到Map阶段的键值对,并将其作为Map阶段的结果输出。
Reduce阶段:主节点汇集所有子问题的结果,并将它们整合起来,作为问题的最终结果输出。
并行计算的五个常见步骤如下。
- 准备Map()输入数据:自动将数据以行的方式输入,每行输出键值对,或者可以根据需求进行改变。
Map input: list (k1, v1) - 运行开发者提供的Map()代码。
Map output: list (k2, v2) - 将Map的结果送入Reduce执行单元中,同时使用键进行分组,把相同键数据送入相同的Reducer中。
- 运行开发者提供的Reduce()代码:这一阶段将运行由开发者设计的reducer执行单元代码,此阶段会重新排序数据并生成键值对形式的数据。
Reduce input: (k2, list(v2))
Reduce output: (k3, v3)
- 产生最终的输出:主节点收集所有Reducer执行单元的输出,并将其写入一个文本文件。
Google文件系统:http://research.google.com/archive/gfs.html; Google MapReduce: http://research.google.com/archive/mapreduce.html。