2015china hadoop大会(上海站) 刚刚落下帷幕,但会场中嘉宾的发言还在耳边回响,今天抽整理出来记录下这一精彩时刻。
首先从sql on hadoop的底层技术讲起,真是发展很快,达到了日新月异的地步,在这一领域几个主要厂家都在发展自己同的技术,力求不落伍。
Hive本是sql on hadoop的祖师爷,只可惜基于MapReduce速度太慢,所以cloudrea就在兼容Hive元数据的基础上开发了impala, Facebook则开发了presto,
ebay开发了kylin, apache 则搞了个Apache Drill号称是Google的Dremel的开源版本。做为主流厂家之一的Hortonworks当然不甘落后,可又没有啥办法,
就拼命的优化Hive,想保留着Hadoop的正宗血统。
下面就从Hive谈起,看看最近Hive有啥子变化:
一Hive
Hive 是hadoop生态中最早实现sql on hadoop的技术,基于HDFS上的文本文件(如text,后来发展的RCfile)和MapReduce技术,元数据采用关系型数据库进行存储形成了一套完整的SQL方案。但这个方案提出的比较早,好处是大家后来为兼容它都采用了他的元数据设计,问题是这个方案的性能太差,MapReduce的启动到MapReduce的反复读写硬盘,都造成这个方案性能低下。当Hive越来越被业界诟病时,其他厂家都开始设计了自己的新方案,而Hortonworks则抓住机会,不断改进Hive,将Hive的性能从分钟级提高到了几秒到十几秒,而Hortonworks的最终目标是要将Hive的95%的SQL语句的性能提高到亚秒级。具体Hortonworks是怎么做的呢,请看下面:
1使用ORCFile替代text文件和RCFile文件
ORCFile中文翻译就是优化的RCFile.
2 使用apache tez替代MapReduce
Tez是Apache最新的支持DAG作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。
原来有点像spark减少了硬件的IO和网络的IO。
3准备在将来使用Hbase来替代关系型数据库来存储元数据,从而提高并发性和缩短SQL语句翻译成执行计划的时间。
除了上述改进之外,最新的Hive还支持了删除语句和修改语句,结束了Hive只能做查询的历史,其做法类似于Hbase,修改的数据存放在另外的文件中,在合适的时机进行文件的合并,这个好像只有采用ORCFile才能生效。tez的执行引擎也只有hadoop2下才有用。
二impala
Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL大 数据查询工具,Impala没有再使用缓慢的 Hive+MapReduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。其架构来讲,Impala主要由Impalad, State Store和CLI组成
Impala使用的列存储格式是Parquet格式的文件,后端采用了C++来进行开发和优化,大大提高了运算速度,比老的hive有数十倍的提高。
已知的问题就是占用内存过多,并不性不好,这次的hadoop大会到是没有来参加。
三presto
Presto是Facebook最新研发的数据查询引擎,可对250PB以上的数据进行快速地交互式分析。据称该引擎的性能是 Hive的 10 倍以上。
PrestoDB 是 Facebook 推出的一个大数据的分布式 SQL 查询引擎。可对从数 G 到数 P 的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别。
Presto 可以查询包括 Hive、Cassandra 甚至是一些商业的数据存储产品。单个 Presto 查询可合并来自多个数据源的数据进行统一分析。
Presto 的目标是在可期望的响应时间内返回查询结果。Facebook 在内部多个数据存储中使用 Presto 交互式查询,包括 300PB 的数据仓库,超过 1000 个 Facebook 员工每天在使用 Presto 运行超过 3 万个查询,每天扫描超过 1PB 的数据。此外包括 Airbnb 和 Dropbox 也在使用 Presto 产品。
Presto 是一个分布式系统,运行在集群环境中,完整的安装包括一个协调器 (coordinator) 和多个 workers。查询通过例如 Presto CLI 的客户端提交到协调器,协调器负责解析、分析和安排查询到不同的 worker 上执行。
此外,Presto 需要一个数据源来运行查询。当前 Presto 包含一个插件用来查询 Hive 上的数据,要求:
-
Hadoop CDH4
-
远程 Hive metastore service
Presto 不使用 MapReduce ,只需要 HDFS
国内最大的用户是京东,京东内部自己叫 PrestoDB.
四apache kylin
Kylin 是一个开源的分布式的 OLAP 分析引擎,来自 eBay 公司开发,基于 Hadoop 提供 SQL 接口和 OLAP 接口,支持 TB 到 PB 级别的数据量。
Kylin 是:
-
超级快的 OLAP 引擎,具备可伸缩性
-
为 Hadoop 提供 ANSI-SQL 接口
-
交互式查询能力
-
MOLAP Cube
-
可与其他 BI 工具无缝集成,如 Tableau,而 Microstrategy 和 Excel 将很快推出
其他值得关注的特性包括:
-
作业管理和监控
-
压缩和编码的支持
-
Cube 的增量更新
-
Leverage HBase Coprocessor for query latency
-
Approximate Query Capability for distinct Count (HyperLogLog)
-
易用的 Web 管理、构建、监控和查询 Cube 的接口
-
Security capability to set ACL at Cube/Project Level
-
支持 LDAP 集成
五apache drill
为了帮助企业用户寻找更为有效、加快Hadoop数据查询的方法,Apache 软件基金会发起了一项名为“Drill”的开源项目。Apache Drill 实现了 Google's Dremel.
Apache Drill 在基于 SQL 的数据分析和商业智能(BI)上引入了 JSON 文件模型,这使得用户能查询固定架构,演化架构,以及各种格式和数据存储中的模式无关(schema-free)数据。该体系架构中关系查询引擎和数据库的构建是有先决条件的,即假设所有数据都有一个简单的静态架构。
Apache Drill 的架构师独一无二的。它是唯一一个支持复杂和无模式数据的柱状执行引擎(columnar execution engine),也是唯一一个能在查询执行期间进行数据驱动查询(和重新编译,也称之为 schema discovery)的执行引擎(execution engine)。这些独一无二的性能使得 Apache Drill 在 JSON 文件模式下能实现记录断点性能(record-breaking performance)。
还比较新,发展比较快,二个月前刚刚发布1.0版本,这个我总觉得有点像elasticsearch的设计,底层存储都是json模型,可以处理复杂的嵌套对像。