Apache Tajo:一个运行在YARN上支持SQL的分布式数据仓库

简介: 将SQL转化为MapReduce。典型代表是Apache Hive,这种系统的特点是扩展性和容错性好,但性能低下。为了弥补SQL on MapReduce的不足,google提出了Tenzing(见参考资料[3]),与Hive不同,Tenzing充分借鉴了MapReduce和DataBase的优势,首先,它对传统的MapReduce进行了优化(比如Map 可以不写磁盘,Reduce可不必排序等),使其性能更高,采用MapReduce一大优势是使Tenzing具有了很好的扩展性和容错性,Tenzing论文是这样表述的

1. 背景

当前,Hadoop之上的SQL引擎已经非常多了,概括起来有两类系统,分别是:


(1)将SQL转化为MapReduce。典型代表是Apache Hive,这种系统的特点是扩展性和容错性好,但性能低下。为了弥补SQL on MapReduce的不足,google提出了Tenzing(见参考资料[3]),与Hive不同,Tenzing充分借鉴了MapReduce和DataBase的优势,首先,它对传统的MapReduce进行了优化(比如Map 可以不写磁盘,Reduce可不必排序等),使其性能更高,采用MapReduce一大优势是使Tenzing具有了很好的扩展性和容错性,Tenzing论文是这样表述的:


“Thanks to MapReduce, Tenzing scales to thousands of cores and petabytes of data on cheap, unreliable hardware. We worked closely with the MapReduce team to implement and take advantage of MapReduce optimizations.”

其次,它借鉴了传统database的优势,嵌有一个cost-based 优化器,以对SQL查询计划进行充分优化。


(2)借鉴分布式数据库思想。典型代表是Google DremelApache DrillCloudera Impala,这类系统的特点是性能高(与Hive等系统比),但扩展性(包括集群规模扩展和SQL类型支持多样性)和容错性较差,Google在Dremel论文(见参考资料[4])中这样描述Dremel的适用场景:

“Dremel is not intended as a replacement for MR and is often used in conjunction with it to analyze outputs of MR pipelines or rapidly prototype larger computations.”

也就是说,Dremel并不是用以取代MR的,而是弥补MR不足,通常用于分析MR产生的数据(这些数据量小,处理这些数据时,对SQL表达能力和框架容错性要求低)。

Apache tajo(具体见参考资料[1][2],tajo ppt下载tajo paper下载)是韩国大学数据库实验室开源的基于YARN的分布式数据仓库,目前是Apache的二级项目。Tajo的设计思想类似于Tenzing,它充分借鉴了MapReduce和DataBase的优势,使其具有Hive的扩展性和容错性好的优点,但同时性能比Hive高不少。


2. Tajo设计架构

Tajo采用了Master-worker架构,具体如下:

(1) TajoMaster:为客户端提供查询服务和管理各个QueryMaster。

(2) QueryMaster:负责一个query的解析、优化与执行,它与多个task runner worker协同工作,完成一个query的计算。


如下图所示,Tajo采用传统数据库技术开发了SQL解析器,包括SQL解析,生成查询计划、优化查询计划、执行查询技术等,但与传统数据库不同,Tajo最终执行查询计划时借鉴了MapReduce的设计思想,它将查询计划转化为一系列任务,这样,执行查询计划实际上就是执行这些任务,而每个任务是一个计算单位,同Map Task和Reduce Task一样,它可以重复执行、有进度汇报等,这样,Tajo可以直接使用MapReduce中的容错、推测执行等机制。此外,Tajo使用YARN进行资源管理。


我在前一篇博文《Apache Tez:一个运行在YARN之上支持DAG作业的计算框架》中介绍了Tez,其中谈到Hive+Tez,经Tez优化后的Hive是一个非常有前景的项目,此外,Tajo也谈到,将来不排除使用Tez作为底层计算框架的可能:


Besides, Tez has some overlapping functions with Tajo. However, Tez is in the pre-alpha stage and may be a prototype. When Tez becomes feasible, Tajo could use Tez as an underlying framework according to the applicability. However, Tajo will still use its row/native columnar execution engine and its optimizer. Tajo may be potentially the first application of Tez.

image.png

image.png

3.总结

真正可能取代Hive的是Tenzing或者Tajo这样的系统,而不是类似Dremel或者Impala的系统。后者在扩展性、SQL表达能力(主要是它的嵌套存储模型导致的)和容错性等方面远远差于Hive/Tenzing/Tajo,正如Dremel论文所述,Dremel通常与MR结合使用,设计动机并不是取代MR,而是使某些场景下的计算更加高效。此外,Dremel和Impala是一种计算系统,它们需要计算资源,却没有集成到当前发展迅猛的资源管理系统YARN中,这意味着,如果采用Impala这样的系统,你只能单独搭一个独立的专有集群,无法做到资源共享。即使Impala成熟了,如果Hive的取代品(比如Tajo)没有成熟,则长期时间内,大部分公司仍然主要采用Hive(这时候,Hortonworks的Hive+Tez就有用武之地了)进行大数据处理,而Impala仅用于进一步处理Hive输出的结果或者用于某一类适合场景的应用(毕竟这类系统的SQL表达能力有限,容错性和扩展性差)。


就Tajo而言,目前活跃度很低,只有韩国大学的数据库实验室的几个人在开发,离真正的可用还有很长时间,但它已经迈出了第一步,即成为Apache的项目,让更多的人参与进来。


4.参考资料

  1. Tajo’s slide
  2. Tajo: A Distributed Data Warehouse System on Large Clusters.
  3. Tenzing: A SQL Implementation On The MapReduce Framework
  4. Dremel: Interactive Analysis of Web-Scale Datasets
相关文章
|
2月前
|
SQL Java 数据库连接
Apache Doris 支持 Arrow Flight SQL 协议,数据传输效率实现百倍飞跃
近年来,随着数据科学、数据湖分析等场景的兴起,对数据读取和传输速度提出更高的要求。而 JDBC/ODBC 作为与数据库交互的主流标准,在应对大规模数据读取和传输时显得力不从心,无法满足高性能、低延迟等数据处理需求。为提供更高效的数据传输方案,Apache Doris 在 2.1 版本中基于 Arrow Flight SQL 协议实现了高速数据传输链路,使得数据传输性能实现百倍飞跃。
|
3月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
597 5
|
5月前
|
SQL 消息中间件 Apache
Apache Calcite—sql执行和解析引擎
Apache Calcite—sql执行和解析引擎
61 0
|
5月前
|
SQL Java 数据库连接
Apache Zeppelin系列教程第十篇——SQL Debug In Zeppelin
Apache Zeppelin系列教程第十篇——SQL Debug In Zeppelin
53 0
|
12天前
|
SQL 数据采集 数据挖掘
SQL Server仓储物流公司visual studio发货数据仓库设计
SQL Server仓储物流公司visual studio发货数据仓库设计
|
1月前
|
分布式计算 资源调度 Hadoop
Apache Hadoop入门指南:搭建分布式大数据处理平台
【4月更文挑战第6天】本文介绍了Apache Hadoop在大数据处理中的关键作用,并引导初学者了解Hadoop的基本概念、核心组件(HDFS、YARN、MapReduce)及如何搭建分布式环境。通过配置Hadoop、格式化HDFS、启动服务和验证环境,学习者可掌握基本操作。此外,文章还提及了开发MapReduce程序、学习Hadoop生态系统和性能调优的重要性,旨在为读者提供Hadoop入门指导,助其踏入大数据处理的旅程。
182 0
|
2月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
2月前
|
资源调度 分布式计算 Hadoop
Apache Hadoop YARN基本架构
【2月更文挑战第24天】
|
2月前
|
SQL 存储 Apache
在 Apache Flink SQL 中,并没有内置的 GROUP_CONCAT 函数
【2月更文挑战第16天】在 Apache Flink SQL 中,并没有内置的 GROUP_CONCAT 函数
212 2
|
2月前
|
SQL 分布式计算 HIVE
基于 Kyuubi 实现分布式 Flink SQL 网关
本文整理自网易互娱资深开发工程师、Apache Kyuubi Committer 林小铂的《基于 Kyuubi 实现分布式 Flink SQL 网关》分享。
104472 64
基于 Kyuubi 实现分布式 Flink SQL 网关

推荐镜像

更多