在前面文章中对大数据的基本概念及特性和hadoop生态圈的常用组件进行了简单的介绍,从本篇开始我们就要真正开始学习框架内容及使用操作了,你准备好了吗?
一、 概述
Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,它实现了 Map/Reduce 计算模型。借助于 Hadoop, 程序员可以轻松地编写分布式并行程序,将其运行于计算机集群上,完成海量数据的计算。
二、 优势
(1)可靠性:HDFS有高容错的特性,并且采用存储冗余数据的方式
(2)高效性:采用MapReduce来整合分析HDFS中的数据
(3)成本低:基于java语言开发,可以运行于低廉的计算机集群中
(4)运行于linux平台
(5)支持多种编程语言
三、 Hadoop体系结构
HDFS和MapReduce是Hadoop的两大核心。最底部的是Hadoop分布式文件系统(HDFS),它存储 Hadoop集群中所有存储节点上的文件。并且它会通过MapReduce 来实现对分布式并行任务处理的程序支持。HDFS的上一层是MapReduce计算引擎,该引擎由 JobTrackers 和 TaskTrackers 组成,MapReduce 在集群上实现了分布式计算和任务处理,二者相互作用,完成了Hadoop分布式集群的主要任务。(从Hadoop2.X版本又从MapReduce中分离出了Yarn组件,由yarn进行资源调度,而mapreduce则专注于进行分析计算)
四、 HDFS体系结构
一个HDFS集群是由一个NameNode节点和若干个DataNode节点组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。HDFS 允许用户以文件的形式存储数据。从内部来看,文件被分成若干个数据块,而且这若干个数据块存放在一组DataNode上。下图给出了HDFS 的体系结构。
五、 MapReduce体系结构
MapReduce是一种并行编程模式,这种模式使得软件开发者可以轻松地编写出分布式并行程序。在Hadoop的体系结构中,MapReduce是一个简单易用的软件框架,基于它可以将任务分发到由上千台商用机器组成的集群上,并以一种高容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能。
MapReduce框架是由一个单独运行在主节点上的JobTracker 和运行在每个集群从节点上的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前失败的任务;从节点仅负责由主节点指派的任务。当一个Job 被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。下图描述了mapreduce作业的执行过程:
六、 HDFS与分布式开发
Hadoop上的并行应用程序开发是基于MapReduce 编程框架的。MapReduce 编程模型的原理是:利用一个输入的key/value 对集合来产生一个输出的key/value 对集合。MapReduce库的用户用两个函数来表达这个计算:Map 和Reduce。用户自定义的map函数接收一个输入的key/value 对,然后产生一个中间key/value 对的集合。MapReduce 把所有具有相同key 值的value 集合在一起,然后传递给reduce 函数。用户自定义的reduce 函数接收key 和相关的value 集合。reduce 函数合并这些value 值,形成一个较小的value 集合。一般来说,每次reduce 函数调用只产生0 或1 个输出的value值。通常我们通过一个迭代器把中间的value 值提供给reduce 函数,这样就可以处理无法全部放入内存中的大量的value 值集合了。
或者大家可以看这张图,就比较容易理解了(map过程就是进行原材料加工处理的过程,reduce过程就是进行组合拼装最后得出成品的过程),如果现在不理解也没关系,后边在集群上跑MapReduce任务时会再根据代码详细去讲。
以上就是本篇中关于Hadoop框架的内容分析,可能大家看了还是感觉不太清晰,不过没关系,由单机转向分布式,思维上要逐渐转变。
大数据培训:http://www.baizhiedu.com/bigdata2019