以前写过一篇文档讨论MPP DB的发展,《MPP DB 是大数据实时分析系统未来的选择吗?》,当时主要是想讨论下Greenplum数据库是否合适做数据存储,以及实时查询。文章我主要提的MPP DB短板是扩展性和对并发的支持,从目前Pivotal公司主推的HAWK,已经可以清楚的看到,业界主流的思路是SQL onhadoop,用传统引擎的高性能加上hadoop 存储的鲁棒性,来构建大数据实时分析。
一、为什么SQL on hadoop会流行?
SQL其实也是一种DSL,将复杂的数据操作抽象成几个关键字(insert,update,select,delect等),SQL易学易用,程序员和DBA掌握的很多。因此Hadoop成为流行的大数据分析解决套件之后,SQL on hadoop成为无法阻挡的趋势。总结两句话:为什么非要把SQL放到Hadoop上? SQL易于使用。那为什么非得基于Hadoop呢?the robust and scalable architecture of Hadoop。
SQL on hadoop有Dremel/PowerDrill(Google) Impala(Cloudera) HIVE/Stinger/Tez(Hortonworks) HAWK(EMC) SQL on spark/Shark(Berkeley) 等,这些系统各有各的发展历程,以及特点,同时也存在显著的缺点。
二、今天讨论一个思路:一套数据,多个引擎。
SQL on hadoop目前最成熟的应该是Hive,发展早,使用多。Hive是目前互联网企业中处理大数据、构建数据仓库最常用的解决方案,甚至在很多公司部署了Hadoop集群不是为了跑原生MapReduce程序,而全用来跑Hive SQL的查询任务。目前Hive的主要缺点:
1,data shuffle时网络瓶颈,Reduce要等Map结束才能开始,不能高效利用网络带宽
2,一般一个SQL都会解析成多个MR job,Hadoop每次Job输出都直接写HDFS,性能差
3,每次执行Job都要启动Task,花费很多时间,无法做到实时
4,由于把SQL转化成MapReduce job时,map,shuffle和reduce所负责执行的SQL功能不同。那么就有Map->MapReduce或者MapReduce->Reduce这样的需求。这样可以降低写HDFS的次数,从而提高性能。很明显,由于架构上的天然涉及,Hive只适合批处理。
Cloudera的impala是另外一个典型的代表,Impala可以看成是Google Dremel架构和MPP (Massively Parallel Processing)结构的混合体,根据Cloudera公司的宣传,也是目前业界开源的最快的引擎,相关测试结果可以参考http://blog.cloudera.com/blog/2014/05/new-sql-choices-in-the-apache-hadoop-ecosystem-why-impala-continues-to-lead/。
最近发布的CDH5.2中包含了impala 2.0,impala 2.0对SQL兼容性和关键的join有重大改进。
Impala 2.0 (Ships in Fall 2014)
1. SQL 2003-compliant analytic window functions (aggregation OVER PARTITION, RANK, LEAD, LAG, NTILE, and so on) – to provide more advanced SQL analytic capabilities
2. External joins and aggregations using disk – enables operations to spill to disk if their internal state exceeds the aggregate memory size
3. Subqueries inside WHERE clauses
4. Incremental statistics – only run statistics on the new or changed data for even faster statistics computations
5. Additional data types – including VARCHAR, CHAR
6. Additional built-in functions – enables easier migration of custom language extensions for users of traditional SQL engines
当能impala也不是包打天下,对批量数据的处理如数据挖掘分析,还是不如HIVE稳定可靠。而impala天然是继承Hive的元数据,所以完全可以综合两者的优点,同一套数据,多个引擎。Impala应对秒级的交互查询,Hive应对批量数据的分析。下面是impala官方介绍的impala和Hive的关系。
How Impala Works with Hive
A major Impala goal is to make SQL-on-Hadoop operations fast and efficient enough to appeal to new categories of users and open up Hadoop to new types of use cases. Where practical, it makes use of existing Apache Hive infrastructure that many Hadoop users already have in place to perform long-running, batch-oriented SQL queries.
In particular, Impala keeps its table definitions in a traditional MySQL or PostgreSQL database known as the metastore, the same database where Hive keeps this type of data. Thus, Impala can access tables defined or loaded by Hive, as long as all columns use Impala-supported data types, file formats, and compression codecs.
The initial focus on query features and performance means that Impala can read more types of data with the SELECT statement than it can write with the INSERT statement. To query data using the Avro, RCFile, or SequenceFile file formats, you load the data using Hive.
The Impala query optimizer can also make use of table statistics and column statistics. Originally, you gathered this information with the ANALYZE TABLE statement in Hive; in Impala 1.2.2 and higher, use the Impala COMPUTE STATS statement instead. COMPUTE STATS requires less setup, is more reliable and faster, and does not require switching back and forth between impala-shell and the Hive shell.
如果需要更高的OLAP分析速度,可以考虑kylin,最近有ebay开源的OLAP引擎。核心思路,数据提取建模,通过HIVE将数据转换成cube,存入HBASE中方便查询。这个就是要求提前建立cube,智能应对特定的模型。
三、需要做的工作:
要做到HIVE/impala共一套数据,其实也有很多工作。目前impala主要在Parquet格式下性能高,HIVE主要使用的是ORCFile。两种存储格式都是列式存储,各有优势。Parquet主要是支持嵌套式数据,ORCFile的每个strip中有一段index data。Index data包含每列的最大和最小值以及每列所在的行。行索引里面提供了偏移量,它可以跳到正确的压缩块位置。具有相对频繁的行索引,使得在stripe中快速读取的过程中可以跳过很多行,尽管这个stripe的大小很大。所以需要两个引擎各自兼容对ORCFile/Parquet的支持,或者融合两种存储格式的优点,让HIVE/impala支持。
相关推荐
想对比一下MySQL、GreenPlum、Elasticsearch、Hive、Spark SQL、Presto、Impala、Drill、HAWQ、Druid、Pinot、Kylin、ClickHouse、Kudu等不同实现方案之间的表现,那你就需要一份标准的数据进行测试,这个开源项目...
* 交互式查询能力:用户可以通过Kylin以亚秒级延迟与Hadoop数据交互,远高于Hive查询的速度。 * MOLAP立方体:用户可以在Kylin中定义数据模型,并预构建超过10亿个原始数据记录的立方体。 此外,Kylin还提供了一些...
Kylin是一个开源的大规模分布式分析引擎,由eBay公司开发,它为Hadoop平台提供了一个SQL接口和多维分析(OLAP)的能力,专门设计用于处理超大规模的数据集。Kylin的主要特性包括其在Hadoop上的SQL接口、多维分析功能...
它支持多种数据源,包括Hive、Hadoop、关系型数据库等,提供低延迟的查询性能。 1.1.1 Presto概念 Presto的核心设计理念是轻量级和高并发,它不存储数据,而是直接查询分布在不同数据源中的数据,通过优化查询计划...
Kylin支持多种数据源,包括Hive、Kafka、RDBMS(如Greenplum、Oracle等)、Impala等。数据导入过程可以是全量导入,也可以按日期/时间、流式或自定义增量方式进行。每种数据源都有对应的导入策略,以满足不同场景的...
本篇文章将探讨几个主流的开源SQL引擎,包括Hive、Impala、Spark SQL、Drill、HAWQ和Presto,以及Calcite、Kylin、Phoenix、Tajo和Trafodion等。此外,也会提及两个商业化产品——Oracle Big Data SQL和IBM Big SQL...
而Impala则是Cloudera公司推出的一个非常重要的MPP(大规模并行处理)查询引擎,它的架构包括了ODBC驱动程序、Hive Metastore接口、以及利用HDFS和HBase进行数据存储。Impala通过其独特的架构,包括查询规划器、查询...
本风控平台总体框架涵盖了从数据采集、处理、存储到应用的全链条,涉及多种技术和工具,构建了一个高效、实时的风险管理体系。 1. 数据源与数据采集: - **外部数据**:通过网络爬虫获取互联网上的公开信息,如...
这需要借助大数据和数据湖技术,例如使用NoSQL数据库(如Hadoop、Hive、Hbase、Redis)来存储和管理复杂数据类型,以及使用OLAP(在线分析处理)工具(如Presto、Impala、Kylin)来加速查询和分析。此外,搜索引擎...
应用:报表分析、联机分析、多维分析、多表关联等目前实现:Hive、Impala、Hive on Spark、Kylin、Inceptor、Oracle、MySQL、DB2接口支持:TD、Sql Server等Sql数据源模型管理(MM)模块说明:适用于同步调用
4. 数据查询:利用Presto、Druid、Impala或Kylin等工具提供高效的数据查询能力。 5. 数据可视化:通过Echarts、Superset、QuickBI、DataV等工具将数据转化为直观的图表展示。 6. 任务调度:Azkaban和Oozie用于管理和...
* 数据查询:Presto、Druid、Impala、Kylin 等技术来查询和分析数据 * 数据可视化:Echarts、Superset、QuickBI、DataV 等技术来可视化数据 * 任务调度:Azkaban、Oozie 等技术来调度任务 * 集群监控:Zabbix 等技术...
- Kylin是一个预计算的OLAP数据引擎,适用于固定维度的快速查询,但预计算量大,运维成本高,不适应即席查询。 - Impala则通过内存计算加速查询,避免了MapReduce,提供接近于传统数据库的查询速度,但其依赖多个...
SQL引擎、Hive、Impala、Spark SQL等支持数据查询和分析;离线计算如MapReduce、在线计算如Spark、流式计算如Storm和Spark Streaming、Flink则满足不同场景下的实时或批量处理需求;多维分析工具如Kylin、Druid支持...
在本次的“6-6+58商业广告多维分析实践”中,主要探讨了商业数据的概况、业界多维分析引擎的介绍以及58商业广告在多维分析中的具体实践。首先,商业数据架构包括对数据的分析决策、智慧数、dashboard支持的商业项目...
5. 数据处理和分析:学习Hive、Pig等数据仓库工具,以及Presto、Impala等查询分析引擎。 6. 实时和流处理:了解Storm、Flink等流处理框架。 7. 数据集成:掌握数据同步工具如Sqoop,以及ETL流程。 8. 分析与挖掘:...
- **Kylin/Druid**:数据查询加速器。 - **Hue**:大数据图形化工具,提升用户交互体验。 3. **Spark/Flink生态体系**: - **ELK**:日志收集、分析和可视化的组合(Elasticsearch、Logstash、Kibana)。 - **...
- **Spark**:一种快速、通用的计算引擎,支持多种类型的数据处理任务,如批处理、交互式查询、流处理等。 - **Kudu**:一个高效的列式存储系统,专为实时分析设计,能够提供高性能的数据读写能力。 - **Impala**:...
可以用于在Hive、Impala、Presto、Kylin、Druid、Doris、ClickHouse等OLAP引擎中进行数据分析。 功能示例: 统计数据总量 统计每年的平均价格 每个城市房产每年的平均价格 某一年年最昂贵的10个街区
- **OLAP开源引擎**:如Hive、Impala、Presto、Doris和ClickHouse,用于大规模数据分析。 - **预计算**:Kylin和Druid等工具提供高效的数据查询性能。 - **OLTP开源引擎**:RDBMS(如MySQL)、NoSQL(如MongoDB)和...