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月前
|
消息中间件 监控 Java
Apache Kafka 分布式流处理平台技术详解与实践指南
本文档全面介绍 Apache Kafka 分布式流处理平台的核心概念、架构设计和实践应用。作为高吞吐量、低延迟的分布式消息系统,Kafka 已成为现代数据管道和流处理应用的事实标准。本文将深入探讨其生产者-消费者模型、主题分区机制、副本复制、流处理API等核心机制,帮助开发者构建可靠、可扩展的实时数据流处理系统。
336 4
|
8月前
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
331 4
|
11月前
|
存储 SQL Apache
Apache Doris 创始人:何为“现代化”的数据仓库?
3.0 版本是 Apache Doris 研发路程中的重要里程碑,他将这一进展总结为“实时之路”、“统一之路”和“弹性之路”,详细介绍了所对应的核心特性的设计思考与应用价值,揭晓了 2025 年社区发展蓝图
647 6
Apache Doris 创始人:何为“现代化”的数据仓库?
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
数据库连接 PHP Apache
PHP在Apache中如何运行?
PHP在Apache中如何运行?
426 5
|
SQL 分布式计算 MaxCompute
一种基于ODPS SQL的全局字典索引分布式计算思路
本文提供一种能充分利用分布式计算资源来计算全局字典索引的方法,以解决在大数据量下使用上诉方式导致所有数据被分发到单个reducer进行单机排序带来的性能瓶颈。
|
SQL 存储 关系型数据库
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
数字化转型的浪潮中,高效准确的数据分析能够帮助雨润集团快速洞察市场动态、优化供应链管理、提高生产效率。雨润集团引入了 Apache Doris 构建了统一实时数据仓库,实现了计算效率提升 30 倍、存储资源节省 90%、成本降低超 100 万、人员效率提升 3 倍,为智能化、高效化转型指明了方向。
307 1
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
|
存储 小程序 Apache
10月26日@杭州,飞轮科技 x 阿里云举办 Apache Doris Meetup,探索保险、游戏、制造及电信领域数据仓库建设实践
10月26日,由飞轮科技与阿里云联手发起的 Apache Doris 杭州站 Meetup 即将开启!
242 0
|
SQL 弹性计算 资源调度
云服务器 ECS产品使用问题之bin/spark-sql --master yarn如何进行集群模式运行
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
228 0

推荐镜像

更多
下一篇
oss云网关配置