分享

SQL on Hadoop相关技术分享(2)

nettman 发表于 2013-10-23 11:34:39 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 5610
RoadMap:

JOIN支持,虽然有点不符合设计初衷,但是大家都支持,就我不支持,太过时了吧。
Transaction支持
Online Schema Evolution,动态改变column的类型,rename等。
Hadapt/HadoopDB
架构和Hive相似,底层存储引擎有两种:HDFS和RDBMS(PostgreSQL),一个DataNode节点上有一个RDBMS节点。
提供两种接口:SQL和MR,SQL也是解析成MR job来执行的,所以总的来说执行引擎都是MR。
把多个MR任务,转换成单node上的SQL+一个MR(data shuffle),这个跟水平压缩,垂直压缩类似,尽量减少SQL解析出的MR task个数,减少任务之间写HDFS的IO数据量。把一个SQL拆解成两部分:适合SQL做的用单机SQL,不适合的用MR(data shuffle)
和Hive的不同点在于Hive只能操控HDFS上的数据,而Hadapt可以操控HDFS和RDBMS两种数据来源。对于RDBMS这个数据源来说,数据被预先load到分布式的RDBMS节点中,有统一的Catalog管理所有RDBMS中的数据。例如Map中的有些执行逻辑直接通过一个在RDBMS上执行的SQL来获得(修改InputFormat),然后使用MR来做JOIN/Group By。而且如果在数据被load到分布式PG节点上时分布情况正好符合group by/order by的条件,那么还省得通过MR的shuffle来做了。
Hadapt的本质还是把SQL解析成MR任务来做,所以Hive的有些缺点(启动时间长,JOIN效率较低)它也是具有的。还有如果想要join/group by/order by能够在RDBMS数据源之间高效执行,还得考虑数据预分布的问题。
在执行多个查询的时候,后面的查询能够利用前面查询的查询结果(有点类似于数据仓库中的物化视图的概念),从而可以提高查询的性能。
现在企业级应用大多使用的方案是Hadoop+MPP的方式,即通过Hadoop批处理非结构化数据(进行ETL操作)然后通过connector导入MPP进行结构化数据的查询操作。但是这只是临时的替代方案,Hadapt说invisible loading才是最合理的,这样企业就有了一个统一分析平台。
Hawq
原来GPDB中的存储是本地磁盘,现在改成HDFS,原来GPDB的单节点的RDBMS只充当执行引擎的功能,不再充当存储引擎功能。
查询执行通过GPDB的并行执行引擎(不再使用MR),每次查询开始把数据从HDFS中导入到GPDB,执行过程中通过内存交换数据而非MR那样每次任务结束都写磁盘。
GP特有的cost-based parallel query optimizer and planner是它的一大优势,也是目前其他大多数的产品中没有的,它能够帮用户选出该SQL最高效的执行顺序。
使用GPDB充当执行引擎的好处:标准SQL兼容;支持ACID事务;JDBC/ODBC支持;JOIN顺序优化和索引支持(查询优化器);支持行/列两种存储格式。
GPXF使得Hawq能够读取存储在HDFS上的任何格式的数据以及存储在其他文件系统和设备中的数据。
底层的HDFS需要支持trancate语义和native C interface。
支持In-Database analytics
性能相关:
Scott Yara(Greenplum老大)公开承认Hawq比pure GPDB要慢。这么做的目的无非就是更好的利用HDFS的可扩展性,统一存储管理。
和其他SQL on Hadoop产品的性能对比方面,Hawq在group by和join操作上与其他方案相比优势明显,前提是数据量不是特别大。(是不是因为数据导入的时候partition做的好呢,是不是拿load的时间换group by/join的时间呢?)
1. workload management and query optimization多个表的JOIN如何执行,例如3个表的JOIN会有6种执行策略,那么哪一种才是效率最高的呢。显然要通过计算每种执行顺序的开销来获得。在传统数据库或者数据仓库领域都有非常好的查询优化器,而在分布式系统中该如何衡量这些指标(磁盘IO,网络带宽,内存)与最后查询效率之间的关系是个需要认真研究的问题。
2. 关联子查询correlated sub-queries还是没有谁能够实现。在TPC-H中又很多关联子查询的例子,但是现在的SQL on Hadoop产品都不支持。听Impala的人说,他们客户对这个的需求不是很强烈,大部分关联子查询可以转化成JOIN操作。但是目前的商业产品像Hawq是支持关联子查询的。
除了上面主要讨论的开源产品以外,大数据分析领域还有很多商业产品。这些商业产品可以分为两类:一类是面向企业级应用的、以卖license或软硬件一体机形式出售的Teradata/Aster Data, HP/Vertica, SAP/HANA,IBM/BigSQL, Oracle和Microsoft也有类似的产品;另一类是利用大规模云计算基础设施,提供的数据分析服务的Google/BigQuery(典型的Analysis as a Service)和Amazon/Redshif。

加微信w3aboutyun,可拉入技术爱好者群

已有(2)人评论

跳转到指定楼层
tommwq 发表于 2013-10-25 09:33:35
小手一抖,钱钱到手!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条