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
相关文章
|
11月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
388 3
|
9月前
|
存储 SQL Apache
Apache Doris 创始人:何为“现代化”的数据仓库?
3.0 版本是 Apache Doris 研发路程中的重要里程碑,他将这一进展总结为“实时之路”、“统一之路”和“弹性之路”,详细介绍了所对应的核心特性的设计思考与应用价值,揭晓了 2025 年社区发展蓝图
418 6
Apache Doris 创始人:何为“现代化”的数据仓库?
|
10月前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
11月前
|
存储 小程序 Apache
10月26日@杭州,飞轮科技 x 阿里云举办 Apache Doris Meetup,探索保险、游戏、制造及电信领域数据仓库建设实践
10月26日,由飞轮科技与阿里云联手发起的 Apache Doris 杭州站 Meetup 即将开启!
207 0
|
SQL 存储 关系型数据库
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
数字化转型的浪潮中,高效准确的数据分析能够帮助雨润集团快速洞察市场动态、优化供应链管理、提高生产效率。雨润集团引入了 Apache Doris 构建了统一实时数据仓库,实现了计算效率提升 30 倍、存储资源节省 90%、成本降低超 100 万、人员效率提升 3 倍,为智能化、高效化转型指明了方向。
246 1
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
|
SQL 弹性计算 资源调度
云服务器 ECS产品使用问题之bin/spark-sql --master yarn如何进行集群模式运行
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
183 0
|
存储 运维 OLAP
抖音集团基于 SelectDB 内核 Apache Doris 的实时数据仓库实践
在直播、电商等业务场景中存在着大量实时数据,这些数据对业务发展至关重要。而在处理实时数据时,我们也遇到了诸多挑战,比如实时数据开发门槛高、运维成本高以及资源浪费等。
380 0
抖音集团基于 SelectDB 内核 Apache Doris 的实时数据仓库实践
|
监控 NoSQL 数据建模
使用Apache Cassandra进行分布式数据库管理的技术实践
【6月更文挑战第5天】本文探讨了使用Apache Cassandra进行分布式数据库管理的技术实践。Cassandra是一款高性能、可扩展的NoSQL数据库,适合大规模、高并发场景。文章介绍了其高可扩展性、高性能、高可用性和灵活数据模型等核心特性,并详细阐述了环境准备、安装配置、数据建模与查询以及性能优化与监控的步骤。通过本文,读者可掌握Cassandra的运用,适应不断增长的数据需求。
|
SQL 数据处理 Apache
Apache Flink SQL:实时计算的核心引擎
Apache Flink SQL 的一些核心功能,并探讨了其在实时计算领域的应用。随着 Flink 社区的不断发展和完善,Flink SQL 将变得越来越强大,为实时数据分析带来更多的可能性。

热门文章

最新文章

推荐镜像

更多