大数据架构(三)Hadoop架构

【摘要】

大数据Hadoop架构,及其核心组件。

【背景】

万万没想到大数据的发展这么快,以Hadoop为代表的大数据架构已经属于第一代基础设施了。现代基于hadoop的M/R管道虽然偏传统,但Hadoop提供了一整套解决方案,还是有非常好的优势。

【问题】

Hadoop架构的基础组件包括什么。

【整体解决方案】

底层以HDFS分布式文件系统做数据存储,所有的数据都通过MapReduce计算模型进行处理(把数据计算任务拆分成Map和Reduce两个过程,Map做初次处理,产生中间结果,Reduce做二次处理,拿中间结果进行分析产生最后数据);为了简化用户的使用成本,Hadoop在MapReduce之上提供了Pig、HIve平台,Pig支持海量数据并行计算,并提供接口给到上层做报表、导入关系型数据库;HIve基于SQL语句对数据进行分析错误,降低了如产品、运营人员的使用成本。整套Hadoop数据处理体系使用Zookeeper进行任务节点的协调管理、资源分配,保障系统的正常运行。数据接入可以通过批处理和流处理,以及消息同步等,还有数据实时计算的轻量级组件,比如clickhouse

【核心组件之一HDFS】

【HDFS概述】

HDFS(Hadoop Distributed File System)分布式文件系统,基于Google 发布的 GFS 论文设计开发。
独有的特性:
  • 高容错性:认为硬件总是不可靠的。
  • 高吞吐量:为大量数据访问的应用提供高吞吐量支持。
  • 大文件存储:支持存储TB-PB级别的数据。
HDFS适合:
  • 大文件存储与访问
  • 流式数据访问
HDFS不适合:
  • 大量小文件存储
  • 随机写入
  • 低延迟读取
之所以有这样的特性, 是因为:
  1. 多个小文件会占用大量的磁盘空间:在 HDFS 中,每个文件占用一个数据块,并且每个数据块都有一个默认的大小,通常是128MB或256MB。如果存储的是大量小文件,每个文件占用的磁盘空间远远小于一个数据块的大小,这就会导致磁盘空间的浪费。此外,HDFS管理单个文件所需的元数据信息(如名称、权限、时间戳等)是相对较大的,多个小文件会在存储这些元数据时占用更多的磁盘空间。

  2. 处理小文件会影响系统性能:每个文件无论大小,都需要在 HDFS 中存储、复制、移动和删除。此外,所有的操作都需要与 HDFS元数据服务 (NameNode)进行通信和协调。当存储的是大量小文件时,每个文件的操作所产生的额外开销会增加操作时间和网络流量,严重影响系统性能。

【HDFS基本架构】

本质上HDFS 是个集群,是基于主从(Master-Slave)模式的,并采用了数据复制(Replication)的方式来实现数据的容错性和高可用性。NameNode 是主节点,负责管理文件系统的元数据;而 DataNode是从节点,用于存储实际的数据块。数据块在多个 DataNode 之间进行复制,以提供数据冗余和容错能力。当某个数据节点出现故障或不可用时,HDFS 可以利用其他副本上的数据进行恢复和补救。

NameNode(名称节点):负责管理文件系统的命名空间和文件的元数据信息。它记录了文件的层次结构、文件的权限和属性、数据块的位置以及副本策略等。NameNode 会将这些信息保存在内存中,并定期持久化到磁盘上的一个称为"fsimage"的镜像文件和一个称为"edit log"的文件中。NameNode 还负责处理客户端的文件系统操作请求,如文件的创建、读取、写入和删除等。

DataNode(数据节点):DataNode 是存储实际数据块的组件,负责管理磁盘上的数据块并向 NameNode 报告其存储的状态。每个数据节点在启动时向 NameNode 注册,并周期性地发送心跳信号以证明其在线状态。DataNode 还负责处理客户端和其他数据节点之间的数据传输请求,包括数据块的读取和写入。

namenode和secondarynamenode共同实现元数据的持久化:

【核心组件之二MapReduce】

【MapReduce概述】

MapReduce基于 Google 发布的分布式计算框架 MapReduce 论文设计开发,用于大规模数据集(大于1TB )的并行运算,特点如下:
  • 易于编程:程序员仅需描述需要做什么, 而具体怎么去做就交由系统的执行框架处理。
  • 良好的扩展性:可以通过添加机器以达到扩展集群能力的目的。
  • 高容错性:通过计算迁移或者数据迁移等策略提高集群的可用性与容错性。
MapRedcue 适合 做什么:大规模数据集的离线批处理计算。任务分而治之,子任务相对独立。
MapRedcue 不适合 做什么:实时的交互式计算,要求快速响应,低延迟,比如SQL查询、流式计算、实时分析,比如广告点击计算等;以及子任务之间相互依赖的计算( 迭代计算 ) 。

这与MapRedcue的数据处理和计算模式有关:

  1. 批量计算模式:MapReduce 采用的是批量计算模式,即数据会被分成一定大小的块,经过 Map 操作进行处理,再经过 Shuffle 和 Reduce 操作进行合并。整个过程需要数据的排序和组织,导致数据处理的时延比较大。同时,MapReduce 中的 Reduce 操作必须等到所有的 Map 操作均完成之后才能执行,这使得整个处理过程的时延更为明显。

  2. 数据处理的顺序和流向已经确定:MapReduce 的输入数据和输出数据都必须通过文件系统进行读取和写入,而且数据的处理流向也是固定的。这就意味着,MapReduce 无法对实时生成或变化的数据流进行处理,并不能以流式处理的方式动态地提供处理结果,而只能针对静态数据进行批量处理。

数据处理过程如下:

  • 把输入的数据 (input) 拆分为多个键值对 (key-value)
  • 针对每一个键值对分别调用Map进行并行处理。
  • 每个Map得到的结果同样是键值对的形式,且每个Map可能会产生多个新的键值对。
  • Map得到的结果进行排序、组合。
  • 将上一步结果进行Reduce规约计算。
  • 以键值对的形式输出最终结果。

【HBase概述】

HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。特点是:
  • 适合于存储大表数据(表的规模可以达到数十亿行以及数百万列),并且对大表数据的读、写访问可以达到实时级别。
  • 利用Hadoop HDFS作为其文件存储系统,提供实时读写的分布式数据库系统。
  • 利用ZooKeeper作为协同服务。
还记得HDFS不适合处理小文件吗? HBase就可以。
面向列是指什么呢?是指数据存储方式,一般的结构化数据库都是按行存储,而HBase按列存储:数据以列为单位,存储在底层文件系统中。优点是有利于面向单列数据的读取/统计等操作; 缺点是整行读取时,可能需要多次I/O操作。

【HBase基本架构】

HBase建立在HDFS之上, 使用 HDFS 作为底层的存储层。HBase 将数据按照列族(Column Family)划分为多个 Region,并将每个 Region 存储为一个 HFile,在 HDFS 上进行持久化存储。
  1. HMaster:HMaster 是 HBase 的主节点,负责协调和管理整个 HBase 集群。它负责元数据管理、负载均衡、Region 的分配与迁移、安全访问控制等。HMaster 还维护了对于 RegionServer 的监控和控制,并提供了对外的管理接口,可以与客户端交互以执行表的创建、修改和删除等管理操作。

  2. RegionServer:RegionServer 是 HBase 集群中的工作节点,负责存储和管理数据。每个 RegionServer 负责多个 Region(逻辑数据分片)的存储和处理。RegionServer 会在启动时向 HMaster 注册,并定期向 HMaster 发送心跳信号以保持联系。它执行客户端的读写请求,对数据进行存储、检索和更新操作,并与 HDFS 交互来读取和写入数据。

  3. ZooKeeper:ZooKeeper 是 HBase 的协调服务,它用于分布式环境中的集群管理、配置管理和命名服务等。HBase 使用 ZooKeeper 来协调 HMaster 和 RegionServer 的选举过程、存储集群元数据和状态信息以及提供分布式锁等功能。

  4. 客户端:HBase 客户端用于与 HBase 集群进行交互,并执行数据的读写操作。客户端使用 HBase 提供的 Java API 或其他支持的 API 来连接到 HBase,发送数据操作请求,并接收和解析响应。

HBase 表开始只有一个 Region,后来不断分裂。Region拆分操作非常快,接近瞬间,因为拆分之后的Region读取的仍然是原存储文件。直到分裂过程结束,把存储文件异步地写到独立的文件之后,才会读取新文件。
HBase会进行周期性地Compaction, 主要目的是为了减少同一个Region同一个 ColumnFamily 下面的小文件数目,从而提升读取的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值