您的位置:首页 > 运维架构

参加2015china hadoop大会上海站的感受

2015-07-29 11:42 323 查看
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 集成 

看介绍很玄乎,听了之后,就明白了,其实还是一个sql on hadoop,使用Hbase对Hive的数据(确切的说是RCFile文件等)建立多维的索引,查询的时候直接查询索引就行,索引没有的再直接查询原始文件。快就快在一些count,sum和group by 操作上。当然做为一个完整的方案其也解决了数据和索引的增量同步等问题,这是一个在eBay的华人团队开发的,目前主要是eBay自己在用。

五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模型,可以处理复杂的嵌套对像。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息