写点什么

大数据培训:Hadoop 生态系统圈

  • 2022 年 2 月 10 日
  • 本文字数:2314 字

    阅读完需:约 8 分钟

Hadoop 概述

Hadoop 体系也是一个计算框架,在这个框架下,可以使用一种简单的编程模式,通过多台计算机构成的集群,分布式处理大数据集。Hadoop 是可扩展的,它可以方便地从单一服务器扩展到数千台服务器,每台服务器进行本地计算和存储。大数据培训机构除了依赖于硬件交付的高可用性,软件库本身也提供数据保护,并可以在应用层做失败处理,从而在计算机集群的顶层提供高可用服务。Hadoop 核心生态圈组件如图所示。



Hadoop 生态圈

Hadoop 包括以下 4 个基本模块。

1)Hadoop 基础功能库:支持其他 Hadoop 模块的通用程序包。

2)HDFS:一个分布式文件系统,能够以高吞吐量访问应用中的数据。

3)YARN:一个作业调度和资源管理框架。

4)MapReduce:一个基于 YARN 的大数据并行处理程序。

除了基本模块,Hadoop 还包括以下项目。

1)Ambari:基于 Web,用于配置、管理和监控 Hadoop 集群。支持 HDFS、MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig 和 Sqoop。Ambari 还提供显示集群健康状况的仪表盘,如热点图等。Ambari 以图形化的方式查看 MapReduce、Pig 和 Hive 应用程序的运行情况,因此可以通过对用户友好的方式诊断应用的性能问题。

2)Avro:数据序列化系统。

3)Cassandra:可扩展的、无单点故障的 NoSQL 多主数据库。

4)Chukwa:用于大型分布式系统的数据采集系统。

5)HBase:可扩展的分布式数据库,支持大表的结构化数据存储。

6)Hive:数据仓库基础架构,提供数据汇总和命令行即席查询功能。

7)Mahout:可扩展的机器学习和数据挖掘库。

8)Pig:用于并行计算的高级数据流语言和执行框架。

9)Spark:可高速处理 Hadoop 数据的通用计算引擎。Spark 提供了一种简单而富有表达能力的编程模式,支持 ETL、机器学习、数据流处理、图像计算等多种应用。

10)Tez:完整的数据流编程框架,基于 YARN 建立,提供强大而灵活的引擎,可执行任意有向无环图(DAG)数据处理任务,既支持批处理又支持交互式的用户场景。Tez 已经被 Hive、Pig 等 Hadoop 生态圈的组件所采用,用来替代 MapReduce 作为底层执行引擎。

11)ZooKeeper:用于分布式应用的高性能协调服务。

除了以上这些官方认可的 Hadoop 生态圈组件之外,还有很多十分优秀的组件这里没有介绍,这些组件的应用也非常广泛,例如基于 Hive 查询优化的 Presto、Impala、Kylin 等。

此外,在 Hadoop 生态圈的周边,还聚集了一群“伙伴”,它们虽然未曾深入融合 Hadoop 生态圈,但是和 Hadoop 有着千丝万缕的联系,并且在各自擅长的领域起到了不可替代的作用。下图是阿里云 E-MapReduce 平台整合的 Hadoop 生态体系中的组件,比 Apache 提供的组合更为强大。



下面简单介绍其中比较重要的成员。

1)Presto:开源分布式 SQL 查询引擎,适用于交互式分析查询,数据量支持 GB 到 PB 级。Presto 可以处理多数据源,是一款基于内存计算的 MPP 架构查询引擎。

2)Kudu:与 HBase 类似的列存储分布式数据库,能够提供快速更新和删除数据的功能,是一款既支持随机读写,又支持 OLAP 分析的大数据存储引擎。

3)Impala:高效的基于 MPP 架构的快速查询引擎,基于 Hive 并使用内存进行计算,兼顾 ETL 功能,具有实时、批处理、多并发等优点。

4)Kylin:开源分布式分析型数据仓库,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力,支持超大规模数据的压秒级查询。

5)Flink:一款高吞吐量、低延迟的针对流数据和批数据的分布式实时处理引擎,是实时处理领域的新星。

6)Hudi:Uber 开发并开源的数据湖解决方案,Hudi(Hadoop updates and incrementals)支持 HDFS 数据的修改和增量更新操作。

Hadoop 的优缺点

如今,Hadoop 已经演化成了一个生态系统,系统内的组件千差万别,有的还是孵化阶段,有的风华正茂,有的垂垂老矣。其中,最经久不衰的当属 HDFS 和 Hive 两大组件,昙花一现的包括 HBase、MapReduce、Presto 等,风华正茂的当属 Spark 和 Flink。

古语有云,“成也萧何,败也萧何”。大数据成功最核心的原因是开源,但它存在的最大的问题也是开源。很多组件虽然依靠开源可以快速成熟,但是一旦成熟,就会出现生态紊乱和版本割裂的情况,其中最典型的就是 Hive。

Hive 1.x 之前的版本功能不完善,1.x 版和 2.x 版算是逐步优化到基本可用了,到了 3.x 版又出现了各种问题,并且大部分云平台 Hive 版本都停留在 2.x 版,新版本推广乏力。另外,Hive 的计算引擎也是饱受争议的,Hive 支持的计算引擎主要有 MapReduce、Tez、Spark、Presto。十多年来 MapReduce 的计算速度并没有提升;Tez 虽然计算速度快,但是安装需要定制化编译和部署;Spark 的计算速度最快,但是对 JDBC 支持不友好;Presto 计算速度快并且支持 JDBC,但是语法又和 Hive 不一致。申明一下,这里说的快只是相对 MapReduce 引擎而言的,跟传统数据库的速度相比仍然相差 1 到 2 个数量级。

总的来说,基于 Hadoop 开发出来的大数据平台,通常具有以下特点。

1)扩容能力:能够可靠地存储和处理 PB 级的数据。Hadoop 生态基本采用 HDFS 作为存储组件,吞吐量高、稳定可靠。

2)成本低:可以利用廉价、通用的机器组成的服务器群分发、处理数据。这些服务器群总计可达数千个节点。

3)高效率:通过分发数据,Hadoop 可以在数据所在节点上并行处理,处理速度非常快。

4)可靠性:Hadoop 能自动维护数据的多份备份,并且在任务失败后能自动重新部署计算任务。

Hadoop 生态同时也存在不少缺点。

1)因为 Hadoop 采用文件存储系统,所以读写时效性较差,至今没有一款既支持快速更新又支持高效查询的组件。

2)Hadoop 生态系统日趋复杂,组件之间的兼容性差,安装和维护比较困难。

3)Hadoop 各个组件功能相对单一,优点很明显,缺点也很明显。

4)云生态对 Hadoop 的冲击十分明显,云厂商定制化组件导致版本分歧进一步扩大,无法形成合力。

5)整体生态基于 Java 开发,容错性较差,可用性不高,组件容易挂掉。

文章来源:数仓宝贝库

用户头像

关注尚硅谷,轻松学IT 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
大数据培训:Hadoop生态系统圈