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的对比
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宣布合并。
生态圈
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在生态中的位置
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对比
Hive通过元数据存储数据库和Hadoop集群进行数据的存储与计算。Hive的元数据使用RDBMS存储。
默认情况下,Hive会使用内置的Derby数据库,其只提供有限的单进程存储服务。此时,Hive不能执行2个并发的Hive CLI实例,通常被应用于开发、测试环境中。对于生产环境,需要使用MySQL等关系型数据库。
Hive架构
presto如何超越一时轰动的Impala和拥趸众多的Spark成为交互式分析的龙头?
因为基于SQL-on-Anything的理念和开放的工程实践对接大小各种数据源,降低了解决实际问题的门槛。
Presto是一个SQL查询引擎,它使得用SQL访问任何数据源成为可能。你可以使用通过水平扩展查询处理的方式来查询大型数据集。
如果有TB级乃至PB级的数据需要查询,你可能会使用Apache Hive等工具。与这些工具相比,Presto可以更高效地查询数据。
Presto 在原地查询数据,无须事先将数据迁移集中到某个位置。因此它可以取代传统、昂贵和笨重的抽取-变换-加载(ETL)过程,至少可以帮你减轻相关任务的负担。presto并非另一个SQL-on-Hadoop解决方案。
Presto 对多数据源的支持
对象存储系统包括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系统。
- 点赞
- 收藏
- 关注作者
评论(0)