大数据系统架构——Hadoop体系

当前的大数据系统架构主要有两种:一种是MPP数据库架构,另一种就是Hadoop体系的分层架构。这两种架构各有优势和适合的场景。
本文从生态体系、集群硬件架构、体系分层功能架构三方面来讲解Hadoop体系的分层架构。
在大数据时代,传统的系统已无法处理具有6V特征(数据量大、数据结构多变、数据更新快、数据黏性大、数据波动大、数据质量差)的大数据,但是高性能硬件价格昂贵。在这种情况下,Hadoop架构应运而生,使用互连的廉价商业硬件,通过连接大量低成本服务器协作,高效存储和处理大量数据。

01 Hadoop生态系统

现今常说的大数据技术,起源于 Google 的三篇重量级论文:2003 年 10 月发表的《Google 文件系统》、2004 年 12 月发表的《MapReduce:超大集群的简单数据处理》和 2006 年 11 月发表的《BigTable:结构化数据的分布式存储系统》,为大数据时代提供了三项革命性技术:GFSMapReduceBigTable

  • GFS(Google File System):是Google面向大规模数据密集型应用的、可伸缩的分布式文件系统,可在廉价的硬件上运行,并具有可靠的容错能力。
  • MapReduce:是一种并行编程模式,可以在超大分布式集群上并行运算,对超大规模的数据集进行处理。
  • BigTable:是GFS上构建的处理结构化数据的分布式数据库,可以用于处理海量数据的更新和随机查询
    Hadoop和HBASE是基于在这三项技术发展出的开源实现。在大数据分析和处理领域,Hadoop兼容体系已经成为一个非常成熟的生态圈,涵盖了很多大数据相关的基础组件,包括Hadoop、Hbase、Hive、Spark、Flink、Storm、Presto、Impala等

02 Hadoop集群硬件架构

Hadoop集群遵循主从架构,由一个或多个主节点(控制节点)和大量从节点组成,可以通过增减节点实现线性水平扩展。集群中的每个节点都有自己的磁盘、内存、处理器和带宽。主节点负责存储元数据,管理整个集群中的资源,并将任务分配给从节点,从节点则负责存储数据并执行计算任务

Hadoop包含三大组件:HDFS、Yarn和MapReduce

  • HDFS:是存储层,负责将文件切分为固定大小的数据块,以多副本分布方式进行存储。
  • Yarn:是资源管理器,通过不同的进程执行资源管理和任务调度/监控任务。
  • MapReduce:是计算层,通过将数据处理逻辑抽象为Map任务和Reduce任务,将“计算”在贴近数据存储位置并行执行。

Hadoop集群硬件架构如下:
大数据系统架构——Hadoop体系_第1张图片
其中,

  • 主节点上:部署HDFS的NameNode组件,管理命名空间,管理客户端对文件的访问,负责跟踪数据块到DataNode的映射;部署Yarn的ResourceManager组件,管理整个集群中的资源。
  • 从节点上:部署HDFS的DataNode组件,服务于客户端的读/写请求;部署Yarn的NodeManage组件;运行MapReduce的容器

03 Hadoop体系分层功能架构

Hadoop设计了一个在分布式集群上实现资源管理和功能的水平分层架构。这种分层解耦的架构,使得Hadoop可以不断叠加组件,并且每个组件可以独立升级,同类组件可以相互竞争,不断提高性能。
作为Hadoop生态系统的核心,HDFS、Yarn、MapReduce形成了一个可扩展的底座,并以此为基础发展出了许多Hadoop兼容开源项目和软件。
Hadoop体系架构可分为四层,上层一般需要依赖下层的组件,层与层之间相互透明,仅基于下层组件的接口进行交互。
Hadoop体系的分层架构如下
大数据系统架构——Hadoop体系_第2张图片
四层由下到上分别是:分布式存储层、分布式计算资源管理层、分布式并行处理框架层、分析应用层。

(1)分布式存储层

HDFS是一个分布式文件存储系统,它将统一管理整个集群的所有存储空间,并将写入的数据切分成相同大小的数据块,每个数据块保存多个副本(通常为3个),每个副本存储在不同的从节点上,避免因单节点故障导致的数据丢失。HDFS的主节点(NameNode)则保存命名空间、文件名、每个数据块及副本的元数据信息。

在大数据量情况下,文件存储格式与压缩方法会极大地影响读写效率。在HDFS上的数据格式主要包括文本(Text)、KV格式(SequenceFile、MapFile等)、行式存储格式(AvroFile)、列式存储(RCFile、ORCFile、Parquet、CarbonData等)

(2)分布式计算资源管理层

Yarn(Yet Another Resourse Negotiator)是一个资源协调器,将统一管理和调度整个集群的计算资源,并将接收到的计算任务拆分到各个节点执行。如果一个节点运行缓慢或失败,Yarn将会取消该节点上的任务,然后分发到其他具备该数据副本的节点运行。Yarn作为资源协调器,可以让大量的应用程序和用户有效地共享集群的计算资源,即支持多租户,这些数据处理可以是批处理、实时处理、迭代处理等。
最初,Hadoop是由MapReduce同时负责资源管理和数据处理的。Hadoop2.0引入Yarn后将两个功能分开。基于Yarn,为Hadoop编写的不同组件可以非常方便地集成到Hadoop生态系统中,例如Spark、Giraph、Hive等项目,以及MapReduce本身。
Yarn框架内有ResourceManager、NodeManager组件:
ResourceManager在主节点运行,负责接收计算任务,并在所有竞争应用程序之间做资源分配;
NodeManager在从节点运行,负责容器,监听资源(CPU、内存、磁盘、网络)使用情况。

(3)分布式并行处理框架层

数据处理框架分为批式处理框架和流式处理框架。
批式处理框架
批式处理框架主要有Hadoop MapReduceSpark等。MapReduce组件封装了MapReduce并行编程模型。Spark是对MapReduce组件的改进,通过对中间结果使用内存存储,大幅提高了计算速度,目前是批处理应用的主流选择。

传统的并行计算模型的实现和使用都很复杂,如MPI(Message Passing Interface,消息传递接口)一般都用在科学计算等专门领域。MapReduce作为一种全新的通用并行编程模型,是基于集群的并行方式的创新抽象。
MapReduce处理数据为Key-Value格式,其主要思想是从函数式编程借鉴而来。
MapReduce模型将计算分为两个阶段:

  • Map(映射)阶段:对每条数据进行单独处理,其处理逻辑相当于对每条输入执行一个映射变换(即函数的计算),因此可以在多个节点进行并行处理(通常在数据所在节点)。
  • Reduce(规约)阶段:汇总计算阶段,例如按照Key对Value进行加和运算,此阶段一版会产生节点间的数据传输(即Shuffle操作)
    注:Shuffle机制是整个MapReduce框架中最核心的部分,是指在Hadoop中数据从Map阶段传递给Reduce阶段的过程。Shuffle翻译成中文的意思为:洗牌、发牌(核心机制:数据分区、排序、缓存)。

流式处理框架
流式处理框架主要有Storm、Spark Streaming、Flink等。

  • Storm是较早成熟的低延迟流式数据处理框架,可以进行事件级(单条数据)处理。
  • Spark Streaming是基于Spark批处理实现的微批式的流式处理,延迟较高,但可以与Spark一起应用,实现流批一体的数据处理。
  • Flink是当前最出色的流式数据处理框架,可以进行事件级数据处理,具有低时延、吞吐量大、支持SQL等优点。

(4)分析应用层

基于HDFS、Yarn和并行处理框架中的一个组件或任意组合,可以搭建非常多样的大数据应用,主要包括交互分析(OLAP)、随机查询、专门领域的数据分析和搜索等。

  • 交互分析:此类应用可以统称为SQL on Hadoop,并且可以分为两类。
    一类是基于MapReduce计算模型的Hive、Spark SQL,此类组件的计算效率一般,但Hadoop和Spark默认支持,所以应用非常广泛。
    另一类是独立实现的兼容Hadoop的OLAP分析引擎,典型的有Impala、Drill、HAWQ、Presto,此类组件为分析实现了专门的计算引擎,计算效率非常高,可以仅依赖HDFS或者HDFS+Yarn。
  • 随机查询:HDF和Parquet+Spark的方式非常适合批量扫描式的数据处理,但当需要查询单条数据时,效率非常低。HBase针对这个场景专门设计了列族数据模型和存储格式,提高了数据的随机读取效率,也支持数据的随机更新。HBase仅依赖HDFS实现数据的分布式存储。
  • 专门领域的数据分析:此类一般实施提供一个该领域的并行算法库实现,主要有机器学习和图计算两种。机器学习库有Hadoop默认提供的Mahout和Spark提供的Mlib,图计算库有Giraph和Spark GraphX

你可能感兴趣的:(hadoop,大数据,系统架构)