© 2025 Rocky. All rights reserved.

|浙ICP备2025179428号-3|

魔法施展中...

技术文章

技术实践

Apache Drill 架构总览

2017-04-04
5 分钟
...

架构总览

Apache drill是在大规模数据集场景下,可以低延迟地进行结构和半结构化/嵌套数据结构查询的一个分布式查询引擎。受到谷歌公司的Dremel的启发,Drill被设计出来以支持几千个节点和PB级别的数据规模下,支持交互响应级别的商务智能分析和查询。 Drill也适用到在大规模数据集场景下进行简单而迅速的查询.Drill能够查询像是JSON或是Parquet这种嵌套的数据,也能动态地发现schema.Drill并不需要一个中央的元数据库.

顶层架构(High-Level Architecture)

Drill包含一个专门为了处理大规模数据的分布式执行环境。Apache Drill的核心是一个叫做“钻头”(drillbit)的服务,它负责从客户端接受请求,处理该查询,并将结果返回给客户端。一个drillbit服务可以在Hadoop集群中所有有需要的节点上安装和运行,形成一个分布式的集群环境。当drillbit运行在集群中的数据节点上时,drillbit可以查询执行过程中最大限度地使数据本地调用,而无需在网络上或是节点之间移动数据。Drill使用ZooKeeper来记录集群成员和健康检查信息。虽然钻工作在Hadoop集群环境中,Drill并不紧紧地与hadoop绑死,而是可以运行于任何分布式集群。Drill唯一的依赖是zookeeper. 请查阅Drill Query Execution

Drill 客户端

你可以通过下面的客户端来访问drill:

  • Drill shell
  • Drill Web Console
  • ODBC/JDBC
  • C++ API

动态Schema发现

Drill并不需要一份数据schema或是类型定义就可以开始执行查询。Drill是分批次地开妈数据处理的。自描述的数据格式,像Parquet,JSON,AVRO,还有一些Nosql 数据库,格式描述是数据的一部分,Drill在处理的过程中会根据需求加以利用。

灵活的数据模型

Drill允许访问嵌套的数据属性,就好像它们是SQL列一样,并提供了直观的扩展以轻松地操作它们。从架构的角度来看,Drill提供了一个复杂的级联式的列式数据模型,用来描述复杂的,高度动态且不断变化的数据模型。在Drill里,关系数据被视为复合/多结构数据的一个简化处理。

去中心化的元数据设计

Drill不要求一个集中的元数据。你并不需要创建一个元数据库来存储表和视图,或依赖于一个有这种功能的元数据管理组件。Drill的元数据来源于那些跟源数据打交道的存储插件。存储插件能提供全部元数据中的一系列子区间(例如Hive),或是元数据的一部分(如HBase),或者就没有元数据(针对文件类)。去中央元数据意味着Drill不依赖于一个单一的Hive库,您可以一次查询多个Hive库,然后把结果与HBase的表或分布式文件系统中的文件信息组装起来。您也可以在Drill中使用SQL DDL语句来创建元数据,这些元数据就像传统的关系数据库中管理的一样。Drill的元数据也可以通过ANSI标准的INFORMATION_SCHEMA数据库来访问。

可扩展的设计

Drill在所有层都提供了一个可扩展的架构,包括存储插件,查询,查询优化/执行器以及客户端API层。您可以定制任意层来满足您的机构的特定需求,也可以把这一层延伸到更广泛的用途。Drill使用类路径扫描来查找和加载插件,并用最少的配置来添加额外的存储插件,功能和操作支持。

💡 关于技术判断: 本文反映了我在真实系统中评估技术风险的思考方式。 我现在专注于为创始人和决策者提供独立的后端与架构风险评估服务。 如果您在重大技术决策前需要第三方意见,了解评估服务或联系咨询。

感谢阅读!如果您觉得这篇文章有帮助,欢迎分享给更多的朋友。

上一篇
技术实践

Apache Drill 核心模块

Drill开发了一种基于Probobuf的损耗非常低的RPC通信协议来跟客户端打交道。另外,客户端程序也可以使用C++或是JAVA api层来跟Drill交互。客户端可以直接指定跟哪些Drillbit节点打交道,也可以在提交查询前通过zookeeper服务来获取一定数量的drillbit节点信...

下一篇
技术分享

Apache drill 查询的执行

当您提交Drill查询的时候,客户端或应用程序会把查询以SQL语句的形式发送到Drill集群的一个Drillbit。Drillbit是在每个在线的Drill节点上运行的进程,它负责协调,规划和执行查询,并按照最大限度地实现数据本地化的原则在集群中分发查询。

📮 订阅更新
每周收到最新文章推送,不错过精彩内容

💡 我们尊重您的隐私,不会将邮箱用于其他用途

加载中...

猜你喜欢

技术分享

Rails集成prometheus的几个经验

单纯地将prometheus集成进rails,整体上比较方便:

2024-02-21
rails
产品思考

聊聊我的薪资外收入(non-salary income)

我其实所谓工资外收入不太在乎,作为程序员,薪资相对于传统行业来说相对还是薪资较高的,多花精力在工作上,获得的回报远高于去做兼职什么的。不过既然今天被点名到这个话题,我就如实回答一下关于薪资外收入和被动收入。

2022-06-01
职业发展

关于自我管理

如果在几年前,让我在『管理』两个字前面加前缀,我很可能是加成『团队管理』,但是现在的话,我可能第一时间是加成『自我管理』或者是『目标管理』。

2022-06-16