飞道的博客

Hadoop架构、原理、实时计算和离线计算

356人阅读  评论(0)

后端系统通常会有一些需要超大数据集分析的业务场景,比如A/B Test、埋点数据分析、大数据关联图谱等,此时需要存储/分析的数据量以GB甚至是TB作为单位,由于数据量太大,MySQL进行分库分表后虽然可以解决数据存储问题,但是无法做到复杂数据分析及查询,大数据技术就应用在这种业务场景当中。作为一名后端开发者,需要对不同的业务场景选择合适的技术,学习入门大数据技术是有必要的。

一、什么是Hadoop

Hadoop是一套大数据解决方案,包揽了一筐子技术,使得大数据处理人员能够简单高效地对大型数据集进行分布式处理。Hadoop主要解决的大规模数据下的离线数据分析问题,可以用于一次写入,多次读取分析,具备较高的处理时延(T+1),其架构核心为MapReduce、HDFS、Yarn,分别为Hadoop提供了分布式计算、分布式存储以及分布式资源调度的能力,而基于Hadoop的大数据技术则有Hive(离线数据分析)、Spark(实时数据分析)、HBase(分布式NoSQL)等。

二、Hadoop各个组件的作用

  • (Hadoop)HDFS:Hadoop Distributed File System,即Hadoop生态中的分布式文件系统,它的作用是提供了Hadoop基础的数据文件的存储以及管理,通过HDFS可以使得大数据分布在服务集群之中,解决了数据的单点问题,并且提供了统一的管理方式。HDFS是整个Hadoop生态中的存储基础。
  • (Hadoop)MapReduce:MapReduce的核心设计思想为Map和Reduce,也就是将大数据拆分成一个个的数据块,并对这些数据块进行分布式的处理,最后再进行统一的汇总从而形成最终的计算结果。
  • (Hadoop)Yarn:Yarn是Hadoop2.0引入的一种资源管理系统,通过Yarn来计算各个框架之间的资源占用及调度,使得多个运算框架可以运行在同一个集群之中。
  • Hive:Hive是基于MapReduce的一个计算框架,Hive通过类似SQL般的HSQL来提交MapReduce计算任务,从而以结构化的方式来对大数据进行分析。
  • HBase:HBase是一种构建于HDFS之上的分布式K-V数据库,用于大量数据写入及读取,适用于实时计算。
  • Zookeeper:Zookeeper是一个被分布式系统广泛使用的配置中心服务,能够对服务集群提供统一命名、状态同步、集群管理和Leader选举等服务。

三、Hadoop核心组件的架构

3.1、HDFS

Hadoop Distributed File System,分布式文件系统,其架构如下:

3.2、MapReduce

用以实现分布式并行计算,计算分为Map和Reduce两个过程,Map将计算拆分到各个节点中进行,Reduce汇总各节点的计算结果,其架构如下:

3.3、YARN

YARN是Hadoop 2.0中的分布式资源管理系统,它将Hadoop 1.0版本的MapReduce中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。其架构如下:

四、实时计算和离线计算的过程

关于实时计算及离线计算的概念参考该篇文章:
实时计算And 离线计算

对于大数据的处理,一般分为几个步骤:

  1. 数据采集阶段:数据收集阶段是指通过各类日志、埋点、爬虫或手工整理的方式来对需要分析的数据进行收集
  2. 数据清洗阶段:数据收集阶段收集到的数据为原始数据,需要对其不合规的数据(空值或异常数据)进行剔除或处理
  3. 数据存储阶段:将清洗好的数据存储到HDFS系统中(可以通过Hive或Spark这类进行存储,其底层都为HDFS),以便进行分布式计算分析
  4. 数据分析阶段:通过MapReduce、Hive或Spark进行大数据的分布式计算分析,得出分析结果
  5. 数据结果持久化:由于每次数据分析需要花费的时间较长,所以需要将分析结果持久化至数据库中
  6. 数据可视化:将分析结果进行可视化展示

以下是基于Hadoop的经典的实时计算和离线计算分析的大致流程图和组件图:


转载:https://blog.csdn.net/pbrlovejava/article/details/116075390
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场