Hadoop是一个由Apache基金会所开发的分布式系统基础架构,它封装了复杂的分布式底层细节,使开发人员能够低门槛地开发分布式程序,充分利用集群的威力进行高速运算和存储。 Hadoop是一个针对于大数据的存取、计算、加工、分析,由多个工具构成的解决方案。 二、为了解决什么问题任何新技术的提出,都是为了解决问题。那么,Hadoop是在什么样的情况下应运而生的,它又解决了什么问题呢? 随着互联网数据量增多,数据产生速度增快,数据类型多样性提高,之前的集中式的数据处理系统显露出了很多问题。
Hadoop构建了可以运行在多个廉价小型机的分布式系统架构,以低成本的方案解决了上述问题,从而得到了行业中大量的应用。 三、工作原理1. 示意图Hadoop中的核心设计包括两点:HDFS和MapReduce。 图中白色块属于HDFS,黑色块属于MapReduce。 2. HDFSHDFS(Hadoop Distributed File System)是一个高度容错性的分布式文件系统,可以被广泛的部署于廉价的PC上。它以流式访问模式访问应用程序的数据,这大大提高了整个系统的数据吞吐量,因而非常适合用于具有超大数据集的应用程序中。 一个典型的HDFS集群包含一个NameNode节点和多个DataNode节点,NameNode节点负责整个HDFS文件系统中的文件的元数据的保管和管理,集群中通常只有一台机器上运行NameNode实例,DataNode节点保存文件中的数据,集群中的机器分别运行一个DataNode实例。 在HDFS中,NameNode节点被称为名称节点,DataNode节点被称为数据节点。DataNode节点通过心跳机制与NameNode节点进行定时的通信。 NameNode : 可以看作是分布式文件系统中的管理者,存储文件系统的meta-data,主要负责管理文件系统的命名空间,集群配置信息,存储块的复制。 Secondary NameNode: 帮助 NameNode 收集文件系统运行的状态信息 。 DataNode : 是文件存储的基本单元,它存储文件块在本地文件系统中,保存了文件块的meta-data,同时周期性的发送所有存在的文件块的报告给NameNode。 3. MapReduceMapReduce是一种编程模型,用于大规模数据集的并行运算。Map(映射)和Reduce(化简),采用分而治之思想,先把任务分发到集群多个节点上,并行计算,然后再把计算结果合并,从而得到最终计算结果。 举个通俗的例子: 我们要数图书馆中的所有书,你数1号书架,我数2号书架,这就是“Map”。我们人越多,数书就更快。 现在我们到一起,把所有人的统计数加在一起,这就是“Reduce”。 用户提交任务给JobTracer,JobTracer把对应的用户程序中的Map操作和Reduce操作映射至TaskTracer节点中;输入模块负责把输入数据分成小数据块,然后把它们传给Map节点;Map节点得到每一个key/value对,处理后产生一个或多个key/value对,然后写入文件;Reduce节点获取临时文件中的数据,对带有相同key的数据进行迭代计算,然后把终结果写入文件。 JobTracker: 当有任务提交到 Hadoop 集群的时候负责 Job 的运行,负责调度多个 TaskTracker 。 TaskTracker: 负责某一个 map 或者 reduce 任务 。 四、优缺点1. 优势
HDFS不适合用在:要求低时间延迟数据访问的应用,存储大量的小文件,多用户写入,任意修改文件。 五、适用场景搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。 六、生态
|
|