Hadoop及其生态

举报
黄生 发表于 2023/09/10 16:22:26 2023/09/10
【摘要】 Google公司2003年开始陆续发表的关于GFS、MapReduce和BigTable的三篇技术论文,成为大数据发展的重要基石。大数据、数据仓库、数据湖。这是三个不同的概念。若不使用数据仓库,就无法使用查询合并来自不同系统的数据。大数据的特性,是4V+1O。Volume, Variety, Value, Velocity, OnlineApache Hadoop 允许用户在不了解分布式系统...

Google公司2003年开始陆续发表的关于GFS、MapReduce和BigTable的三篇技术论文,成为大数据发展的重要基石。

大数据、数据仓库、数据湖。这是三个不同的概念。

若不使用数据仓库,就无法使用查询合并来自不同系统的数据。

大数据的特性,是4V+1O。Volume, Variety, Value, Velocity, Online

Apache Hadoop 允许用户在不了解分布式系统底层细节的情况下,使用简单的编程模型开发分布式程序,并充分利用集群的分布式能力进行运算和存储。

Apache Hadoop 起源于开源的网络搜索引擎Apache Nutch,Nutch是Apache Lucene项目的一部分。

2003-2004年,Google发表了两篇论文,展示了Google分布式文件系统(GFS)和MapReduce框架。

2005年年初,Nutch开发人员在Nutch上实现了一个MapReduce算法
2006年2月,开发人员将NDFS和MapReduce与Nutch分离,形成Lucene子项目,并命名为Hadoop。

2008年1月,Hadoop成为Apache的顶级项目,同年4月,Hadoop成为最快的TB量级数据排序系统。

2009年3月,Cloudera公司基于Apache Hadoop发布了CDH版木。

2011年12月,Hadoop发布1.0.0版本,标志着Hadoop已经初具生产规模。

2013年,Hadoop发布了2.2.0版本。2014年,先后发布了Hadoop2.3.0-2.6.0,极大地完善了YARN框架和整个集群的功能。2015年,发布了Hadoop2.7.0版本。

2016年,发布Hadoop3.0-alpha版本。

与RDBMS的对比
image.png

Hadoop 框架包括:分布式文件系统HDFS、计算系统MapReduce、资源管理系统YARN

YARN (Yet Another Resource Negotiator )是一种新的Hadoop资源管理器。
它解决了Hadoopl.x版本中MapReduce架构中JobTracker负载压力过大的问题,它将JobTracker的资源管理和作业调度拆分成两个独立的服务,分别为全局的资源管理器(ResourceManager)和每个应用程序特有的ApplicationMaster。ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。

YARN还解决了Hadoopl.x中只能运行MapReduce作业的限制,允许在其上运行各种不同类型的作业,比如MapReduce、Spark、Tez等。

YARN的引入,为Hadoop集群在利用率、资源统一管理和数据共享等方面带来了极大的提升。

Hadoop 的发行版本:
Apache Hadoop 最原始的版本,所有的发行版都是基于这个版本进行改进的,也被称为社区版Hadoop
Cloudera CDH 目前国内公司使用最多的。完全开源,比起Apache Hadoop,在兼容性、安全性和稳定性上均有所增强。
Hortonworks HDP。集成了开源监控方案Ganglia和Negios。
2018年10月,两家大数据先驱Cloudera和Hortonworks宣布合并。

生态圈
image.png

Hive是建立在Hadoop之上的数据仓库基础框架,可以将存储在HDFS中的结构化的数据文件映射为一张数据库表,并定义了一种类SQL语言(HQL),让不熟悉MapReduce的开发人员也能编写数据查询语句来对大数据进行分析统计操作。

MapReduce计算模型能将计算任务切分成多个小单元,然后分布到各个节点上去执行。但是使用门槛比较高,传统的数据库开发、管理和运维的人员必须掌握面向MapReduce API编程,才能使用MapReduce处理数据。

数据存储在HDFS上是没有Schema(模式)概念的,在HDFS上的数据文件通常是纯文本文件。

为了方便让用户从一个现有的数据架构(比如传统关系型数据库)转移到Hadoop上来,Hive在Facebook诞生了

Hive是一个基于Hadoop的数据仓库工具,可以将存储在HDFS中的结构化的数据文件映射为一张数据库表,并提供SQL查询功能,同时可以将SQL语句转化为MapReduce作业进行运行。
Hive可以进行数据提取、转化和加载,是一种可以查询和分析存储在Hadoop中的大规模数据的工具。
Hive被设计成能够非常方便地进行大数据的汇总、即席查询(ad-hoc)与分析的工具。

总之,对存储在HDFS中的数据进行分析与管理时,无须使用MapReduce编程而可以通过一个工具来完成相应的操作,这个工具就是Hive。Hive也是为消除MapReduce样板式的编程而产生的。

Hive被设计成数据仓库,其早期版本或新版本在缺省情况(系统默认状态)下并不支持事务,所以并不适合OLTP。

Hive在生态中的位置
image.png

Hive执行的本质仍然是MapReduce,但多了一步SQL至MapReduce的转化操作,所以相同条件下,Hive在运行时并没有直接编写MapReduce执行效率高。
Hive的SQL方言一般被称为HiveQL,简称HQL。HQL并不完全遵循SQL92标准,比如HQL只支持在From子句中使用子查询,并且子查询必须有名字。
在存储模型方面,数据库、表都是相同的概念,但Hive中增加了分区和分桶的概念。
Hive与RDBMS也有其他不同的地方,如在RDBMS中,表的Schema是在数据加载时就己确定,如果不符合Schema则会加载失败;而Hive在加载过程中不对数据进行任何验证,只是简单地将数据复制或者移动到表对应的目录下。这也是Hive能够支持大规模数据的基础之一。
事务、索引以及更新是RDBMS非常重要的特性,鉴于Hive的设计初衷,这些特性在开始之初就不是Hive设计目标。

Hive与RDBMS对比
image.png

Hive通过元数据存储数据库和Hadoop集群进行数据的存储与计算。Hive的元数据使用RDBMS存储。
默认情况下,Hive会使用内置的Derby数据库,其只提供有限的单进程存储服务。此时,Hive不能执行2个并发的Hive CLI实例,通常被应用于开发、测试环境中。对于生产环境,需要使用MySQL等关系型数据库。

Hive架构
image.png

presto如何超越一时轰动的Impala和拥趸众多的Spark成为交互式分析的龙头?
因为基于SQL-on-Anything的理念和开放的工程实践对接大小各种数据源,降低了解决实际问题的门槛。

Presto是一个SQL查询引擎,它使得用SQL访问任何数据源成为可能。你可以使用通过水平扩展查询处理的方式来查询大型数据集。

如果有TB级乃至PB级的数据需要查询,你可能会使用Apache Hive等工具。与这些工具相比,Presto可以更高效地查询数据。

Presto 在原地查询数据,无须事先将数据迁移集中到某个位置。因此它可以取代传统、昂贵和笨重的抽取-变换-加载(ETL)过程,至少可以帮你减轻相关任务的负担。presto并非另一个SQL-on-Hadoop解决方案。

Presto 对多数据源的支持
image.png

对象存储系统包括Amazon web services(AWS)提供的Simple storage service(S3)、和S3兼容的存储系统(如MinIO和ceph)。Presto可以查询传统的RDBMS,还可以查询NoSQL数据库系统,如Apache Cassandra、Apache Kafka、MongoDB和Elastic search。Presto几乎可以查询任何东西,是一个真正的SQL-on-Anything系统。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。