还记得刚接触Hadoop的时候,还是1.x版本,硬是在自己的4GB内存上面弄了3个虚拟机学习,条件有些艰苦,Hadoop测试集群搭建不需要太多考虑,随着毕业开始进入企业,在企业中实践Hadoop,特别是一定规模的集群,逐渐涉及到硬件资源,网络规划,操作系统,软件栈等一系列问题!对于一个没有经验的小白来说,还是比较复杂的,还好公司有linux大牛配合上我从各种技术网站博客吸收的微薄知识,从0开始搭建集群稳定运行2年多,接近年关,今晚我把这些问题简单梳理一下,希望对出建集群的同学有些许帮助!什么决定集群规模?Hadoop资源包括:存储和计算,对于计算资源其实初建集群很难评估,所以可以先忽略计算资源评估,单从存储指标来规划.首先找准这个方向,接下来就是和数据团队沟通收集数据量,每天数据增长率,数据存储周期,尽量多了解信息,存储周期是1个月,3个月,半年来确认数据量,从而计算存储,从存储出发规划集群是前期最合理的方向。比如:每天增长数据量为4T,
3倍冗余,存储3个月为周期,大概存储=4T390天=1080T,这个基础上面需要乘一个系数,考虑给用户,磁盘计算,临时空间留一部分存储,未来数据增长趋势,分析结果存储周期占用空间,这些都是HDFS相关!在HDFS存储的基础上面,还需要考虑LinuxOS(Linux分区规划).评估完成之后,最重要的还是考虑企业的投入意愿和财力现状.这个系数需要综合考量.如何合理规划分区,使用目录规范,存储初步确定集群规模.规划非常合理而被用户不合理利用资源,那合理的规划就变得不合理了,有关合理存储规划请参考《Hadoop平台架构—存储篇》工作负载
软件栈?
几乎在很多场景,MapRdeuce或者说分布式架构,都会在IO受限,硬盘或者网络读取数据遇到瓶颈.处理数据瓶颈CPU受限.大量的硬盘读写数据是海量数据分析常见情况!IO受限例子:索引分组数据倒入导出数据移动和转换CPU受限例子:聚类/分类复杂的文本挖掘特征提取用户画像自然语言处理目前Hadoop发展为一个无所不包的数据平台,所以不仅仅是MapReudce使用,多种计算模型可插拔和Hadoop无缝结合,Hadoop2.x版本Yarn资源管理器,可以兼容多种技术模型;如:内存计算代表的saprk,impala,tez,drill,presto.磁盘计算代表的hive,mapreduce,pig.
对于一个异构集群,会同时存在多种计算模型!在硬件配置上面就需要高内存,大磁盘;
Impala推荐最低配置128G内存,才能发挥优势;spark典型的CPU密集型,需要更多CPU和内存。Hive,MR磁盘计算,多磁盘读写比较频繁!当你在为集群硬件选型的时候,需要考虑的软件组件包括Apache
HBase、Cloudera Impala、Presto Or Drill、Apache Phoenix和Apache
spark。1、Hbase是一个可靠的列数据存储系统,它提供一致性、低延迟和随机读写。region的一些坑,在Hbase1.0+版本提供新的API,访问集群类似JDBC形式,增加了异步写入API,一主多从region,
解决region
offline问题;Hbase-Region-split-policy!2、Impala项目为Hadoop带来了可扩展的并行数据库技技术,使得用户可以向HDFS和HBase中存储的数据发起低延迟的SQL查询,而且不需要数据移动或转换。Cloudera开源;内存使用评估不合理,数据量太大,join性能低下!hive都跑完了,还没结束!3、PrestoDb或者Drill,Presto让我们方便的查询Hive,Nosql(hbase,cassandra,redis),RDBMS(mysql,postgresql);Facebook开源;有商业公司在支持;功能是把Hadoop和多种数据源联系起来,让Hadoop兼容更多数据源,实现无所不包的数据平台!一切看上去都是那么美好谁用谁知道…小声说一句木有写磁盘功能,内存不够直接报错,一部分节点失去联系,短时间使用不鸟了.4、Drill和Presto非常类似可以支持SQL直接查询很多数据源:Hive,HDFS,Hbase,MongoDB,S3,RDBMS(Mysql,Oracle,postgresql,SQLServer);MapR主推;把Hadoop和多种数据源联系起来,让Hdoop兼容更多数据源,实现无所不包的数据平台!5、Hive提供稳定和可靠的SQL分析海量数据,也是最早的SQL
on
Hadoop解决方案!6、Tez,HDP主推,可以替代Hive底层执行引擎MR,让hive拥有内存计算相当的性能!生产有使用过,可靠稳定,join有些时候不如Hive!7、spark,对于这个框架,让人又爱又恨,主要用在机器学习和图计算吧!SparkSQL做过一些性能测试,性能并没有外界宣称的那么牛X,生产环境也用过,说多了都是泪啊,SQL模块投入力度比较小,也是最易用的吧,很多SQL
on Hadoop方案都比它做的好,所以呵呵..!spark 1.6 新版Dataset
API更好的内存管理,钨丝计划等提升性能!Spark宣传做的非常好;我们使用下来SQL性能不如其他方案,稳定性不够好!executor假死,甚至退出无法恢复,稳定性还不如Tez吧!当然也可能是我们技术能力不够吧!用来做机器学习,图计算,通过API开发数据清洗入库Hbase提供查询!替代MR做开发是一种选择吧!SQL模块Join性能低下,单表查询性能ok!8、Phoenix,SQL-on-Hbase解决方案!这是除了Hive/Impala
on Hbase比较好的方案,Phoenix底层是调用Hbase
API实现查询,所以能用到Hbase的优化器,社区跟进Hbase也很快,是一个不错的方案!SQL
on
Hadoop我个人花费了大量精力做性能测试,可能个人技术能力有限无法做到全面,目前对于亿级表,足够大内存,全方位比较
Imapla PrestoDb SparkSQL Tez Drill
Hive。当然比如20-30亿单表查询检索PrestoDb,SparkSql,Hive能很快完成,而Impala写了磁盘,或某些节点压力太大崩溃了,性能急剧下降!针对这些SQL,NOSQL产品我们技术选型的时候做过tpch,tpcds,ycbs,业务场景等性能测试!目前市面上开源的SQL-on-Hadoop基本没一个能跑全的!使用也很多坑,谁用谁知道…有关集群存储格式如何选择请参考《Hadoop平台架构—存储篇》引用

转载至 大数据杂谈
(BigdataTina2016),同时参考学习  进行整理。

       使用SQL
引擎一词是有点随意的。例如Hive
不是一个引擎,它的框架使用MapReduce、TeZ 或者Spark
引擎去执行查询,而且它并不运行SQL,而是HiveQL,一种类似SQL
的语言,非常接近SQL。“SQL-in-Hadoop” 也不适用,虽然Hive 和Impala
主要使用Hadoop,但是Spark、Drill、HAWQ 和Presto
还可以和各种其他的数据存储系统配合使用。不像关系型数据库,SQL
引擎独立于数据存储系统。相对而言,关系型数据库将查询引擎和存储绑定到一个单独的紧耦合系统中,这允许某些类型的优化。另一方面,拆分它们,提供了更大的灵活性,尽管存在潜在的性能损失。

前世今生 


      查询分析是大数据要解决的核心问题之一,自从Google在2006年之前的几篇论文奠定云计算领域基础,尤其是GFS、Map-Reduce、Bigtable被称为云计算底层技术三大基石。GFS、Map-Reduce技术直接支持了Apache
Hadoop项目的诞生。Bigtable和Amazon
Dynamo直接催生了NoSQL这个崭新的数据库领域
撼动了RDBMS在商用数据库和数据仓库方面几十年的统治性地位。FaceBook的Hive项目是建立在Hadoop上的数据仓库基础构架,提供了一系列用于存储、查询和分析大规模数据的工具。当我们还浸淫在GFS、Map-Reduce、Bigtable等Google技术中,并进行理解、掌握、模仿时,Google在2009年之后,连续推出多项新技术,包括:Dremel、Pregel、Percolator、Spanner和F1。其中,Dremel促使了实时计算系统的兴起Pregel开辟了图数据计算这个新方向Percolator使分布式增量索引更新成为文本检索领域的新标准Spanner和F1向我们展现了跨数据中心数据库的可能

   
在Google的第二波技术浪潮中,基于Hive和Dremel,新兴的大数据公司Cloudera开源了大数据查询分析引擎ImpalaHortonworks开源了StingerFackbook开源了Presto。类似Pregel,UC Berkeley
AMPLAB实验室开发了Spark
图计算框架,并以Spark为核心开源了大数据查询分析引擎Shark。Hive、Impala、Shark、Stinger和Presto的进化图谱如下图所示

                   
 永利开户送38元体验金 1

 
 基于Map-Reduce模式的Hadoop擅长数据批处理,不是特别符合即时查询的场景。实时查询一般使用MPP
(Massively Parallel
Processing)的架构
,因此用户需要在Hadoop和MPP两种技术中选择。

  
在Google的第二波技术浪潮中,一些基于Hadoop架构的快速SQL访问技术逐步获得人们关注。现在有一种新的趋势是MPP和Hadoop相结合提供快速SQL访问框架。当前热门的开源工具包括:Impala、Shark(SparkSQL)、Stinger(Hive
on
Tez)和Presto。这也显示了大数据领域对于Hadoop生态系统中支持实时查询的期望。总体来说,Impala、Shark、Stinger和Presto四个系统都是类SQL实时大数据查询分析引擎,但是它们的技术侧重点完全不同。而且它们也不是为了替换Hive而生,Hive在做数据仓库时是非常有价值的。这四个系统与Hive都是构建在Hadoop之上的数据查询工具,各有不同的侧重适应面,但从客户端使用来看它们与Hive有很多的共同之处,如数据表元数据、Thrift接口、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。Hive与Impala、Shark、Stinger、Presto在Hadoop中的关系如下图所示。Hive适用于长时间的批处理查询分析,而Impala、Shark、Stinger和Presto适用于实时交互式SQL查询,它们给数据分析人员提供了快速实验、验证想法的大数据分析工具。可以先使用Hive进行数据转换处理,之后使用这四个系统中的一个在Hive处理后的结果数据集上进行快速的数据分析。

                 
  永利开户送38元体验金 2

  • Hive:披着SQL外衣的Map-Reduce。Hive是为方便用户使用Map-Reduce而在外面封装了一层SQL,由于Hive采用了SQL,它的问题域比Map-Reduce更窄,因为很多问题,SQL表达不出来,比如一些数据挖掘算法,推荐算法、图像识别算法等,这些仍只能通过编写Map-Reduce完成
  • Impala:Google
    Dremel的开源实现(Apache
    Drill类似),因为交互式实时计算需求,Cloudera推出了Impala系统,该系统适用于交互式实时处理场景,要求最后产生的数据量一定要少
  • Shark/Spark:为了提高Map-Reduce的计算效率,Berkeley的AMPLab实验室开发了Spark,Spark可看做基于内存的Map-Reduce实现,此外,伯克利还在Spark基础上封装了一层SQL,产生了一个新的类似Hive的系统Shark
  • Stinger
    Initiative(Tez optimized
    Hive):
    Hortonworks开源了一个DAG计算框架Tez,Tez可以理解为Google
    Pregel的开源实现,该框架可以像Map-Reduce一样,可以用来设计DAG应用程序,但需要注意的是,Tez只能运行在YARN上。Tez的一个重要应用是优化Hive和PIG这种典型的DAG应用场景,它通过减少数据读写IO,优化DAG流程使得Hive速度提供了很多倍
  • Presto:FaceBook于2013年11月份开源了Presto,一个分布式SQL查询引擎,它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI
    SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window
    functions)。Presto设计了一个简单的数据存储的抽象层,来满足在不同数据存储系统(包括HBase、HDFS、Scribe等)之上都可以使用SQL进行查询。   

对比分析 


     
下面的图1展示了主要的SQL 引擎的流行程度,数据由奥地利咨询公司Solid IT
维护的DB-Engines 提供。DB-Engines
每月为超过200个数据库系统计算流行得分。得分反应了搜索引擎的查询,在线讨论的提及,提供的工作,专业资历的提及,以及tweets

 
  永利开户送38元体验金 3

      

    虽然Impala、Spark
SQL、Drill、Hawq 和Presto
一直在运行性能、并发量和吞吐量上击败Hive,但是Hive
仍然是最流行的(至少根据DB-Engines 的标准)。原因有3个:

  • Hive 是Hadoop
    的默认SQL
    选项
    ,每个版本都支持。而其他的要求特定的供应商和合适的用户;
  • Hive
    已经在减少和其他引擎的性能差距
    。大多数Hive
    的替代者在2012年推出,分析师等待Hive
    查询的完成等到要自杀。然而当Impala、Spark、Drill
    等大步发展的时候,Hive只是一直跟着,慢慢改进。现在,虽然Hive
    不是最快的选择,但是它比五年前要好得多;
  • 虽然前沿的速度很酷,但是大多数机构都知道世界并没有尽头。

 
 在下面的图2中可以看出,相对于领先的商业数据仓库应用,用户对顶尖的SQL
引擎更感兴趣

  永利开户送38元体验金 4

 对于开源项目来说,最佳的健康度量是它的活跃开发者社区的大小。如下面的图3所示,Hive
和Presto 有最大的贡献者基础
。(Spark SQL 的数据暂缺)

 永利开户送38元体验金 5

 

   
 在2016年,Cloudera、Hortonworks、Kognitio 和Teradata 陷入了Tony Baer
总结的基准测试之战,令人震惊的是,供应商偏爱的SQL
引擎在每一个研究中都击败了其他选择,这带来一个问题:基准测试还有意义吗?
     AtScale
一年两次的基准测试并不是毫无根据的。作为一个BI 初创公司,AtScale
销售衔接BI 前端和SQL
后端的软件。公司的软件是引擎中立的,它尝试尽可能多的兼容,其在BI
领域的广泛经验让这些测试有了实际的意义。AtScale
最近的关键发现,包括了Hive、Impala、Spark SQL 和Presto:

  • 4个引擎都成功运行了AtScale
    的BI 基准查询;
  • 取决于数据量、查询复杂度和并发用户数,每个引擎都有自己的性能优势: 
  1. Impala 和Spark SQL 在小数据量的查询上击败了其他人;
  2. Impala 和Spark SQL 在大数据量的复杂join
    上击败了其他人;
  3. Impala 和Presto 在并发测试上表现的更好。
  • 对比6个月之前的基准测试,所有的引擎都有了2-4倍的性能提升。

   Alex Woodie
报告了测试结果,Andrew Oliver
对其进行分析。让我们来深入了解这些项目。

Apache Hive 


        Apache Hive
是Hadoop 生态系统中的第一个SQL 框架。Facebook
的工程师在2007年介绍了Hive,并在2008年将代码捐献给Apache
软件基金会。2010年9月,Hive 毕业成为Apache 顶级项目。Hadoop
生态系统中的每个主要参与者都发布和支持Hive,包括Cloudera、MapR、Hortonworks
和IBM。Amazon Web Services 在Elastic MapReduce(EMR)中提供了Hive
的修改版作为云服务。

      
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能可以将SQL语句转换为Map-Reduce任务进行运行,十分适合数据仓库的统计分析。其架构如下图所示,Hadoop和Map-Reduce是Hive架构的根基。Hive架构包括如下组件:CLI(Command
Line Interface)、JDBC/ODBC、Thrift Server、Meta
Store和Driver(Complier、Optimizer和Executor)

 
  永利开户送38元体验金 6

      早期发布的Hive
使用MapReduce
运行查询。复杂查询需要多次传递数据,这会降低性能。所以Hive 不适合交互式分析。由Hortonworks
领导的Stinger 明显的提高了Hive 的性能,尤其是通过使用Apache
Tez,一个精简MapReduce 代码的应用框架。Tez
和ORCfile,一种新的存储格式,对Hive
的查询产生了明显的提速。

     Cloudera
实验室带领一个并行项目重新设计Hive 的后端,使其运行在Apache Spark
上。经过长期测试后,Cloudera 在2016年初发布了Hive-on-Spark
的正式版本。

     在2016年,Hive
有100多人的贡献者。该团队在2月份发布了Hive 2.0,并在6月份发布了Hive
2.1。Hive 2.0 的改进包括了对Hive-on-Spark
的多个改进,以及性能、可用性、可支持性和稳定性增强。Hive 2.1 包括了Hive
LLAP(”Live Long and
Process“),它结合持久化的查询服务器和优化后的内存缓存,来实现高性能。该团队声称提高了25倍。

     9月,Hivemall
项目进入了Apache
孵化器,正如我在我的机器学习年度总结的第二部分中指出的。Hivemall
最初由Treasure Data 开发并捐献给Apache
软件基金会,它是一个可扩展的机器学习库,通过一系列的Hive UDF
来实现,设计用于在Hive、Pig 和Spark SQL
上运行MapReduce。该团队计划在2017年第一季度发布了第一个版本。 

Apache
Impala


      2012年,Cloudera
推出了Impala,一个开源的MPP SQL
引擎,作为Hive 的高性能替代品。Impala 使用HDFS
和HBase,并利用了Hive 元数据
。但是,它绕开了使用MapReduce
运行查询。

     
Impala可以看成是Google Dremel架构和MPP (Massively Parallel
Processing)结构的结合体。Impala没有再使用缓慢的Hive&Map-Reduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query
Planner、Query Coordinator和Query Exec
Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟,其架构如下图所示

   
  永利开户送38元体验金 7

   
  Impala主要由Impalad,State Store和CLI组成。

     
永利开户送38元体验金,Impalad与DataNode运行在同一节点上,由Impalad进程表示,它接收客户端的查询请求(接收查询请求的Impalad为Coordinator,Coordinator通过JNI调用java前端解释SQL查询语句,生成查询计划树,再通过调度器把执行计划分发给具有相应数据的其它Impalad进行执行),读写数据,并行执行查询,并把结果通过网络流式的传送回给Coordinator,由Coordinator返回给客户端。同时Impalad也与State
Store保持连接,用于确定哪个Impalad是健康和可以接受新的工作。Impala
State
Store跟踪集群中的Impalad的健康状态及位置信息
,由state-stored进程表示,它通过创建多个线程来处理Impalad的注册订阅和与各Impalad保持心跳连接,各Impalad都会缓存一份State
Store中的信息,当State Store离线后,因为Impalad有State
Store的缓存仍然可以工作,但会因为有些Impalad失效了,而已缓存数据无法更新,导致把执行计划分配给了失效的Impalad,导致查询失败。CLI提供给用户查询使用的命令行工具,同时Impala还提供了Hue,JDBC,ODBC,Thrift使用接口

      Cloudera
的首席战略官Mike Olson 在2013年底说到Hive
的架构是有根本缺陷的。在他看来,开发者只能用一种全新的方式来实现高性能SQL,例如Impala。2014年的1月、5月和9月,Cloudera
发布了一系列的基准测试。在这些测试中,Impala
展示了其在查询运行的逐步改进,并且显著优于基于Tez 的Hive、Spark SQL
和Presto。除了运行快速,Impala
在并发行、吞吐量和可扩展性上也表现优秀。

     2015年,Cloudera
将Impala 捐献给Apache 软件基金会,进入了Apache
孵化计划。Cloudera、MapR、Oracle 和Amazon Web Services
分发Impala,Cloudera、MapR 和Oracle 提供了商业构建和安装支持。

     2016年,Impala
在Apache 孵化器中取得了稳步发展。该团队清理了代码,将其迁移到Apache
基础架构,并在10月份发布了第一个Apache
版本2.7.0
。新版本包括了性能提升和可扩展性改进,以及一些其他小的增强。

     9月,Cloudera
发布了一项研究结果,该研究比较了Impala 和Amazon Web Services 的Redshift
列存储数据库。报告读起来很有意思,虽然主题一贯的需要注意供应商的基准测试。

Spark SQL


     Spark SQL 是Spark
用于结构化数据处理的组件。Apache Spark 团队 在2014年发布了Spark
SQL,并吸收了一个叫Shark 的早期的Hive-on-Spark
项目。它迅速成为最广泛使用的Spark 模块。

     Spark SQL
用户可以运行SQL 查询,从Hive 中读取数据,或者使用它来创建Spark
Dataset和DataFrame(Dataset 是分布式的数据集合,DataFrame
是统一命名的Dataset 列)。

     Spark SQL
的接口向Spark 提供了数据结构和执行操作的信息,Spark 的Catalyst
优化器使用这些信息来构造一个高效的查询。早期shark架构如下:

   
  永利开户送38元体验金 8

     2015年,Spark
的机器学习开发人员引入了ML API,一个利用Spark DataFrame 代替低级别Spark
RDD API 的包。这种方法被证明是有吸引力和富有成果的;

     2016年,随着2.0
的发布,Spark 团队将基于RDD 的API改为维护模式。DataFrame API现在是Spark
机器学习的主要接口。

   
 此外,在2016年,该团队还在Spark 2.1.0的Alpha
版本中发布了结构化的流式处理。结构化的流式处理是构建在Spark SQL
上的一个流处理引擎。用户可以像对待静态源一样,用同样的方式查询流式数据源,并且可以在单个查询中组合流式和静态源。Spark
SQL
持续运行查询,并且在流式数据到达的时候更新结果。结构化的流通过检查点和预写日志来提供一次性的容错保障。

Apache Drill


     2012年,由Hadoop
分销商的领导者之一MapR 领导的一个团队,提出构建一个Google Dremel
的开源版本,一个交互式的分布式热点分析系统。他们将其命名为Apache
Drill。Drill 在Apache
孵化器中被冷落了两年多,最终在2014年底毕业。该团队在2015年发布了1.0。

     MapR
分发和支持Apache Drill。

   
 2016年,超过50个人对Drill
做出了贡献。该团队在2016年发布了5个小版本,关键的增强功能包括:

    • Web 认证
    • 支持Apache Kudu
      列数据库
    • 支持HBase
      1.x
    • 动态UDF
      支持

   
 2015年,两位关键的Drill
贡献者离开了MapR,并启动了Dremio,该项目尚未发布。

Apache HAWQ


     Pivotal
软件在2012年推出了一款商业许可的高性能SQL
引擎HAWQ,并在尝试市场营销时取得了小小的成功。改变战略后,Pivotal
在2015年6月将项目捐献给了Apache,并于2015年9月进入了Apache
孵化器程序。

     15个月之后,HAWQ
仍然待在孵化器中。2016年12月,该团队发布了HAWQ
2.0.0.0,加入了一些错误修复。我猜它会在2017年毕业

     对HAWQ
喜爱的一个小点是它支持Apache
MADlib,一个同样在孵化器中的SQL 机器学习项目。HAWQ 和MADlib
的组合,应该是对购买了Greenplum
并且想知道发生了什么的人们的一个很好的安慰。

Presto


    Facebook
工程师在2012年发起了Presto 项目,作为Hive
的一个快速交互的取代。在2013年推出时,成功的支持了超过1000个Facebook
用户和每天超过30000个PB级数据的查询。2013年Facebook
开源了Presto。

    Presto
支持多种数据源的ANSI SQL
查询,包括Hive、Cassandra、关系型数据库和专有文件系统(例如Amazon Web
Service 的S3)。Presto
的查询可以联合多个数据源。用户可以通过C、Java、Node.js、PHP、Python、R和Ruby
来提交查询。

    Airpal 是Airbnb
开发的一个基于web
的查询工具,让用户可以通过浏览器来提交查询到Presto。Qubole 位Presto
提供了管理服务。AWS 在EMR 上提供Presto 服务,其简化的架构图如下:

 
  永利开户送38元体验金 9

 
  客户端将SQL查询发送到Presto的协调器。协调器会进行语法检查、分析和规划查询计划。调度器将执行的管道组合在一起,将任务分配给那些里数据最近的节点,然后监控执行过程。客户端从输出段中将数据取出,这些数据是从更底层的处理段中依次取出的。Presto的运行模型与Hive有着本质的区别。Hive将查询翻译成多阶段的Map-Reduce任务,一个接着一个地运行。每一个任务从磁盘上读取输入数据并且将中间结果输出到磁盘上。然而Presto引擎没有使用Map-Reduce。它使用了一个定制的查询执行引擎和响应操作符来支持SQL的语法。除了改进的调度算法之外,所有的数据处理都是在内存中进行的。不同的处理端通过网络组成处理的流水线。这样会避免不必要的磁盘读写和额外的延迟。这种流水线式的执行模型会在同一时间运行多个数据处理段,一旦数据可用的时候就会将数据从一个处理段传入到下一个处理段。
这样的方式会大大的减少各种查询的端到端响应时间。同时,Presto设计了一个简单的数据存储抽象层,来满足在不同数据存储系统之上都可以使用SQL进行查询。存储连接器目前支持除Hive/HDFS外,还支持HBase、Scribe和定制开发的系统。

    2015年6月,Teradata
宣布计划开发和支持该项目。根据宣布的三阶段计划,Teredata 提出将Presto
集成导Hadoop 生态系统中,能够在YARN 中进行操作,并且通过ODBC 和JDBC
增强连接性。Teredata 提供了自己的Presto
发行版,附带一份数据表。2016年6月,Teradata 宣布了Information
Builders、Looker、Qlik、Tableau 和ZoomData
的鉴定结果,以及正在进行中的MicroStrategy 和Microsoft Power BI。

    Presto
是一个非常活跃的项目,有一个巨大的和充满活力的贡献者社区。该团队发布的速度比Miki
Sudo 吃热狗的速度还要快–我统计了下,2016年共发布了42个版本。Teradata
并没有打算总结有什么新的东西,我也不打算在42个发行说明里去筛选,所以就让我们说它更好吧。

    其他Apache
项目:这里还有5个其他的Apache 生态系统的SQL 混合项目。

Stinger

 


 

   Stinger是Hortonworks开源的一个实时类SQL即时查询系统,声称可以提升较Hive
100倍的速度。与Hive不同的是,Stinger采用Tez。所以,Hive是SQL on
Map-Reduce,而Stinger是Hive on
Tez
。Tez的一个重要作用是优化Hive和PIG这种典型的DAG应用场景,它通过减少数据读写IO,优化DAG流程使得Hive速度提供了很多倍。其架构如下图所示,

   
永利开户送38元体验金 10 

  
Stinger是在Hive的现有基础上加了一个优化层Tez(此框架是基于Yarn),所有的查询和统计都要经过它的优化层来处理,以减少不必要的工作以及资源开销。虽然Stinger也对Hive进行了较多的优化与加强,Stinger总体性能还是依赖其子系统Tez的表现。而Tez是Hortonworks开源的一个DAG计算框架,Tez可以理解为Google
Pregel的开源实现,该框架可以像Map-Reduce一样,用来设计DAG应用程序,但需要注意的是,Tez只能运行在YARN上

Apache
Calcite


    Apache Calcite
是一个开源的数据库构建框架。它包括:

  • SQL
    解析器、验证器和JDBC 驱动
  • 查询优化工具,包括关系代数API,基于规则的计划器和基于成本的查询优化器

    Apache Hive
使用Calcite 进行基于成本的查询优化,而Apache Drill 和Apache Kylin
使用SQL 解析器。Calcite 团队在2016年推出了5个版本包括bug
修复和用于Cassandra、Druid 和Elasticsearch 的新适配器

Apache Kylin


     Apache Kylin
是一个具有SQL 接口的OLAP 引擎。由eBay 开发并捐献给Apache,Kylin
在2015年毕业成为顶级项目。

   
2016年成立的创业公司Kyligence 提供商业支持和一个叫做KAP
的数据仓库产品,虽然在Crunchbase
上没有列出它的资金情况,有消息来源称它有一个强大的背景,并且在上海有个大办公室。

Apache
Phoenix


      Apache Phoenix
是一个运行在HBase 上的SQL 框架,绕过了MapReduce。

      Salesforce
开发了该软件并在2013年捐献给了Apache。2014年5月项目毕业成为顶级项目。Hortonworks
的Hortonworks 数据平台中包含该项目。自从领先的SQL 引擎都适配HBase
之后,我不清楚为什么我们还需要Phoenix。

Apache Tajo


       Apache Tajo
是Gruter 在2011年推出的一个快速SQL
数据仓库框架,一个大数据基础设施公司,并在2013年捐献给Apache。

      2014年Tajo
毕业成为顶级项目。在作为Gruter
主要市场的韩国之外,该项目很少吸引到预期用户和贡献者的兴趣。除了Gartner
的Nick Heudecker 曾提过,该项目不在任何人的工作台上。

Apache
Trafodion


       Apache Trafodion
是另一个SQL-on-HBase 项目,由HP
实验室构思,它告诉你几乎所有你需要知道的。2014年6月HP
发布Trafodion,一个月之后,Apache Phoenix 毕业投产。6个月之后,HP
的高管们认为相对于另一款SQL-on-HBase
引擎,它的商业潜力有限,所以他们将项目捐献给了Apache,项目于2015年5月进入孵化器。

     
如果孵化结束,Trafodion
承诺成为一个事务数据库。不幸的是,这个领域有大量的选择,而开发团队唯一的竞争优势似乎是“它是开源的,所以它很便宜”。

 

相关文章