一文搞懂Hadoop生态系统
导读:Hadoop是较早用于处理大数据集合的分布式存储计算基础架构,目前由Apache软件基金会管理。通过Hadoop,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力执行高速运算和存储。
简单地说,Hadoop是一个平台,在它之上可以更容易地开发和运行处理大规模数据的软件。
作者:王春波
来源:数仓宝贝库(ID:DataBaby_Family)
Hadoop基础功能库:支持其他Hadoop模块的通用程序包。 HDFS:一个分布式文件系统,能够以高吞吐量访问应用中的数据。 YARN:一个作业调度和资源管理框架。 MapReduce:一个基于YARN的大数据并行处理程序。
Ambari:基于Web,用于配置、管理和监控Hadoop集群。支持HDFS、MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig和Sqoop。Ambari还提供显示集群健康状况的仪表盘,如热点图等。Ambari以图形化的方式查看MapReduce、Pig和Hive应用程序的运行情况,因此可以通过对用户友好的方式诊断应用的性能问题。 Avro:数据序列化系统。 Cassandra:可扩展的、无单点故障的NoSQL多主数据库。 Chukwa:用于大型分布式系统的数据采集系统。 HBase:可扩展的分布式数据库,支持大表的结构化数据存储。 Hive:数据仓库基础架构,提供数据汇总和命令行即席查询功能。 Mahout:可扩展的机器学习和数据挖掘库。 Pig:用于并行计算的高级数据流语言和执行框架。 Spark:可高速处理Hadoop数据的通用计算引擎。Spark提供了一种简单而富有表达能力的编程模式,支持ETL、机器学习、数据流处理、图像计算等多种应用。 Tez:完整的数据流编程框架,基于YARN建立,提供强大而灵活的引擎,可执行任意有向无环图(DAG)数据处理任务,既支持批处理又支持交互式的用户场景。Tez已经被Hive、Pig等Hadoop生态圈的组件所采用,用来替代 MapReduce作为底层执行引擎。 ZooKeeper:用于分布式应用的高性能协调服务。
Presto:开源分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB级。Presto可以处理多数据源,是一款基于内存计算的MPP架构查询引擎。 Kudu:与HBase类似的列存储分布式数据库,能够提供快速更新和删除数据的功能,是一款既支持随机读写,又支持OLAP分析的大数据存储引擎。 Impala:高效的基于MPP架构的快速查询引擎,基于Hive并使用内存进行计算,兼顾ETL功能,具有实时、批处理、多并发等优点。 Kylin:开源分布式分析型数据仓库,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力,支持超大规模数据的压秒级查询。 Flink:一款高吞吐量、低延迟的针对流数据和批数据的分布式实时处理引擎,是实时处理领域的新星。 Hudi:Uber开发并开源的数据湖解决方案,Hudi(Hadoop updates and incrementals)支持HDFS数据的修改和增量更新操作。
扩容能力:能够可靠地存储和处理PB级的数据。Hadoop生态基本采用HDFS作为存储组件,吞吐量高、稳定可靠。 成本低:可以利用廉价、通用的机器组成的服务器群分发、处理数据。这些服务器群总计可达数千个节点。 高效率:通过分发数据,Hadoop可以在数据所在节点上并行处理,处理速度非常快。 可靠性:Hadoop能自动维护数据的多份备份,并且在任务失败后能自动重新部署计算任务。
因为Hadoop采用文件存储系统,所以读写时效性较差,至今没有一款既支持快速更新又支持高效查询的组件。 Hadoop生态系统日趋复杂,组件之间的兼容性差,安装和维护比较困难。 Hadoop各个组件功能相对单一,优点很明显,缺点也很明显。 云生态对Hadoop的冲击十分明显,云厂商定制化组件导致版本分歧进一步扩大,无法形成合力。 整体生态基于Java开发,容错性较差,可用性不高,组件容易挂掉。
评论