Hadoop基本概念 - omigaw/spring- GitHub Wiki
一、Hadoop简介
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情况下开发分布式程序,充分利用集群的威力进行高速运算和存储。从其定义就可以发现,它解决了两大问题:大数据存储、大数据分析。也就是Hadoop的两大核心:HDFS和MapReduce。 1.HDFS是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。 2.MapReduce为分布式计算框架,包含map(映射)和reduce(归约)过程,负责在HDFS上进行计算。 Hadoop是一个能够让用户轻松架构和使用的分布式计算的平台。用户可以轻松地在Hadoop发和运行处理海量数据的应用程序。其优点主要有以下几个:
- 高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。
- 高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点。
- 高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
- 高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
- 低成本:与一体机、商用数据仓库以及QlikView、Yonghong、Z-Suites等数据集市相比,Hadoop是开源的,项目的软件成本因此会大大降低。 Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是十分理想的,Hadoop上的应用程序也可以使用其他语言编写,比如C++。
二、Hadoop存储——HDFS
Hadoop的存储系统是HDFS分布式文件系统,对外部客户端而言,HDFS就像一个传统的分级文件系统,可以进行创建、删除、移动或重命名文件或文件夹等操作,与Linux文件系统类似。
- 名称节点(NameNode) 它是一个通常在HDFS架构中单独机器上运行的组件,负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上。对于最常见的3个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。
- 数据节点(DataNode) 数据节点也是一个通常在HDFS架构中的单独机器上运行的组件。Hadoop集群包含一个NameNode和大量DataNode。数据节点通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。数据节点响应来自HDFS客户机的读写请求。它们还响应来自NameNode的创建、删除和复制块的命令。名称节点依赖来自每个数据节点的定期心跳消息。每条消息都包含一个块报告,名称节点可以根据这个报告验证块映射和其他文件系统元数据。如果数据节点不能发送心跳消息,名称节点将采取修复措施,重新复制在该节点上丢失的块。
- 第二名称节点(Secondary NameNode) 第二名称节点的作用在于为HDFS中的名称节点提供一个CheckPoint,它只是名称节点的一个助手节点,这也是它在社区内被认为是CheckPoint Node的原因。
三、Hadoop计算——MapReduce
一般的MapReduce程序会经过以下几个过程:输入(Input)、输入分片(Splitting)、Map阶段、Shuffle阶段、Reduce阶段、输出(Final result)。
四、Hadoop资源管理——YARN
当MapReduce发展到2.x时就不使用JobTracker来作为自己的资源管理框架,而选择使用YARN。如果使用JobTracker来作为Hadoop集群的资源管理框架的话,那么除了MapReduce任务以外,不能够运行其他任务。也就是说,如果我们集群的MapReduce任务并没有那么饱满的话,集群资源等于是白白浪费的。所以提出了另外的一个资源管理架构YARN。这里需要注意,YARN不是JobTracker的简单升级,而是"大换血"。同时Hadoop2.X也包含了此架构。Apache Hadoop2.X项目包含以下模块。
- Hadoop Common:为Hadoop其他模块提供支持的基础模块。
- HDFS:Hadoop分布式文件系统。
- YARN:任务分配和集群资源管理框架。
- MapReduce:并行和可扩展的用于处理大数据的模式。
五、Hadoop生态系统
- HBase hBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
- Hive Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
- Pig
- Sqoop
- Flume
- Oozie
- Chukwa
- Zookeeper
- Avro
- Mahout