目录

  • Architecture Introduction

  • Drill Query Execution

  • Core Modules

  • Performance

架构介绍

Apache钻是一个低延迟查询大规模数据集分布式引擎,包括结构化和半结构化/嵌套数据。灵感来自于 谷歌的Dremel,drill被设计服务于几千个节点,交互速度查询PB数据BI/分析环境要求。

在对大规模的数据集对短的,交互式的特殊查询钻也非常有用。钻能够查询像JSON和Parquet数据格式的嵌套数据以及执行动态模式的发现。钻不需要一个集中的元数据存储库。

高级体系结构

drill包括分布式执行环境,建造目的是进行大规模数据处理。Apache钻的核心是“Drillbit”服务,负责接受来自客户端的请求,处理查询,并返回结果给客户端。

Drillbit服务可以安装和运行在Hadoop集群所需的所有节点形成分布式集群环境。当一个Drillbit运行在集群中的每个数据节点,钻可以最大化数据位置,在查询执行期间无需通过网络或节点移动数据。钻使用ZooKeeper来维护集群成员和信息的健康检查。

尽管钻在Hadoop集群环境中工作,钻不绑定Hadoop也可以在任何分布式集群环境运行。Zookeeper是钻的唯一先决条件。

看 Drill Query Execution.

Drill 用户

你可以通过以下接口访问钻:

  • 钻壳

  • 钻Web控制台

  • ODBC / JDBC

  • C++ API

$ cd $WORK
$ . ./init.sh
$ ./drill/apache-drill/bin/sqlline -u jdbc:drill:zk=local
Drill log directory /var/log/drill does not exist or is not writable, defaulting to ...
Apr 06, 2015 12:47:30 AM org.glassfish.jersey.server.ApplicationHandler initialize
INFO: Initiating Jersey application, version Jersey: 2.8 2014-04-29 01:25:26...
sqlline version 1.1.6
0: jdbc:drill:zk=local>

动态模式发现

钻不要求数据模式或规范数据类型按顺序开始查询执行过程。Drill在批记录开始数据处理,在处理过程中发现模式。自描述数据格式如Parquet、JSON、AVRO,NoSQL数据库有指定的模式作为数据自身的一部分,钻动态地实时查询。因为模式一改变就会结束Drill查询进程,钻的许多运算符被设计成当模式改变就重新配置自身。

灵活的数据模型

钻允许访问嵌套数据属性,就像SQL列和提供了直观的扩展很容易操作。从体系结构的角度来看,钻提供了一个灵活的柱状分层的数据模型,可以表示复杂,高度动态和不断演化的数据模型。在钻中关系数据被视为一个特殊的或简化的复杂/多结构化的数据。

没有集中的元数据

钻没有一个集中的元数据的要求。你不需要创建和管理元数据存储库中的表和视图,或依赖数据库管理员组的一个函数。钻导出元数据通过存储插件对应的数据源。存储插件提供完整元数据范围的排列从元数据(hive),局部元数据(HBase),或没有中央元数据(文件)。分散式的元数据意味着钻不绑定到单一的Hive库。您可以一次查询多个hive存储库,然后从HBase表或文件在一个分布式文件系统用信息合并数据。你也可以使用SQL DDL语句用钻创建元数据,该组织像一个传统的数据库。钻元数据是通过ANSI标准INFORMATION_SCHEMA数据库来访问的。

可扩展性

所有层的钻在所有层提供了一个可扩展的体系结构,包括存储插件,查询,查询优化/执行和客户端API层。你可以为组织的具体需求定制任何层也可以扩展层到更广泛的数组用例。钻使用类路径扫描查找并加载插件,用最低限度的配置添加额外的存储插件、函数和运算符。

执行钻查询

当你提交一个钻查询,一个客户或一个应用程序在Drill集群发送SQL语句的形式查询给Drillbit。 Drillbit是进程运行在每个活动节点坐标、计划、并执行查询,以及跨集群分发查询工作最大化数据所在位置。

下图表示客户之间的通信、应用程序、和Drillbits:

Drillbit从客户或应用程序接收查询变成了工头驱动整个查询。SQL工头部分的解析器解析,将自定义规则应用到特定的SQL操作转化为一个特定钻understands的逻辑运算符语法。这个逻辑运算符集合形成逻辑计划。 生成所需的逻辑工作计划描述了查询结果并定义数据源和应用操作。

工头发送逻辑计划到一个基于成本的优化器优化SQL操作的顺序在一份声明中,读逻辑计划。 优化器适用于各种类型的规则重新运算符和函数为最优方案。 优化器将逻辑计划转换为一个具体的计划,描述如何执行查询。

工头的并行化变换的物理计划为多个阶段,主要和次要的碎片。 这些片段创建一个多层次执行重写查询的树,根据配置的数据源,并行执行它发送回客户机或应用程序的结果。

主要的片段

主要的片段是一个概念,表示查询执行的一个阶段。 一个阶段可以包含一个或多个操作,钻机必须执行执行查询。 钻MajorFragmentID分配每个主要片段。

例如,执行散列集合的两个文件,钻可能创建一个计划,有两个主要阶段(主要碎片)第一阶段致力于扫描这两个文件和第二阶段致力于聚合数据。

钻机使用单独的主要碎片的交易所运营商。 数据交换是一个变化的位置和/或并行物理计划。 交换是由允许数据的发送方和接收方之间的移动节点。

主要碎片并不执行任何查询任务。 每个主要片段划分为一个或多个小片段(在下一节中讨论),实际执行所需的操作来完成查询并返回结果返回给客户端。

你可以与主要碎片在物理计划通过捕获的JSON表示计划在一个文件中,手动修改,然后提交回钻使用提交计划命令。 您还可以查看查询的主要碎片,可见在钻Web控制台。 看到 说明 和 查询配置文件 为更多的信息。

小碎片

每个主要片段并行成小碎片。 一个小片段是一个逻辑工作单元内运行的线程。 一个逻辑工作单元在钻也称为一片。 钻产生的执行计划是由小碎片。 钻MinorFragmentID分配每个小片段。

工头的并行化创建一个或多个小片段片段在执行时,一个主要片段分解成许多小碎片,因为它能有效地同时运行在集群上。

钻每个小片段在它自己的线程执行尽快根据其上游数据需求。 钻机计划节点与数据局部性的小片段。 否则,钻安排他们在现有的循环方式,Drillbits可用。

小片段包含一个或多个关系运算符。 操作员执行关系操作,如扫描,过滤器,加入,或组。 每个运营商都有一个特定的运营商类型和一个OperatorID。 每个OperatorID定义的关系在它所属的小片段。 看到 物理运算符 。

例如,当执行散列集合的两个文件,钻了第一阶段致力于扫描成两个小片段。 每个小片段包含扫描操作符扫描这些文件。 钻了第二阶段致力于聚合成四个小碎片。 的四个小片段包含执行哈希散列总运营商聚合操作数据。

您不能修改执行计划中的小片段的数量。 然而,您可以查看在钻Web控制台的查询和修改一些配置选项,改变小片段的行为,如片的最大数量。 看到 配置选项 。

执行的小片段

小碎片可以作为根用户运行,中间或叶碎片。 一个执行树只包含一个根片段。 执行树的坐标屈指可数的根,根是零。 数据流从叶片段下游根片段。

根片段在工头和接收传入的查询运行,读取元数据表,重写查询和路线服务树中的下一个阶段。 另一个片段成为中间或叶片段。

中间片段开始工作当数据或从其他碎片喂它们。 他们对数据执行操作,然后下游发送数据。 他们还通过聚合根片段,结果执行进一步聚合和为客户提供查询结果或应用程序。

叶子碎片并行扫描表和交流或访问本地磁盘上的数据存储层。 叶碎片部分结果传递给中间片段,对中间结果进行并行操作。

钻只有计划查询并发运行片段。 例如,如果20片存在集群中的可用,演习计划查询运行不超过20小片段在一个特定的主要片段。 钻是乐观,认为它可以并行完成的所有工作。 所有主要小片段为特定片段开始同时根据上游数据依赖。

←架构介绍 核心模块→

Apache-drill Architechture相关推荐

  1. drill apache_使用Apache Drill REST API通过Node构建ASCII仪表盘

    drill apache Apache Drill有一个隐藏的瑰宝:易于使用的REST接口. 该API可用于查询,分析和配置Drill引擎. 在此博客文章中,我将解释如何使用Brilled Contr ...

  2. drill apache_使用Apache Drill深入研究当今的大数据

    drill apache 自2014年9月首次提供Beta版以来, Apache Drill一直在获得广泛的用户采用和社区动力.2015年5月发布了Drill的通用版本-Drill 1.0,此后大量客 ...

  3. drill apache_如何使用Apache Drill分析高度动态的数据集

    drill apache 当今的数据是动态的,并由应用程序驱动. 由诸如Web /社交/移动/ IOT等行业趋势驱动的新业务应用时代的增长正在生成具有新数据类型和新数据模型的数据集. 这些应用程序是迭 ...

  4. 如何指南:Apache Drill入门

    Apache Drill是一种引擎,可以连接到许多不同的数据源,并为它们提供SQL接口. 它不仅是想跳入任何复杂事物的SQL接口,而且是一个功能强大的接口, 其中包括对许多内置函数和窗口函数的支持. ...

  5. 使用Apache Drill REST API通过Node构建ASCII仪表板

    Apache Drill有一个隐藏的瑰宝:易于使用的REST接口. 该API可用于查询,分析和配置Drill引擎. 在此博客文章中,我将说明如何使用Brilled Contrib使用Drill RES ...

  6. Apache Drill 1.4性能增强的简要概述

    今天,我们很高兴宣布Apache Drill 1.4现已在MapR发行版中可用. 钻1.4是MAPR生产就绪和支持的版本,可以从下载这里 ,找到1.4版本说明这里 . Drill 1.4以其高度灵活和 ...

  7. 使用Apache Drill深入研究当今的大数据

    自2014年9月首次提供Beta版以来, Apache Drill一直在获得广泛的用户采用和社区动力.2015年5月发布了Drill的通用版本-Drill 1.0,此后,许多客户已在生产中部署和使用了 ...

  8. Apache Drill:如何创建新功能?

    Apache Drill允许用户使用ANSI SQL探索任何类型的数据. 这很棒,但是Drill的作用远远不止于此,它允许您创建自定义函数来扩展查询引擎. 这些自定义功能具有任何Drill基本操作的所 ...

  9. 如何使用Apache Drill分析高度动态的数据集

    当今的数据是动态的,并由应用程序驱动. 由诸如Web /社交/移动/ IOT等行业趋势驱动的新业务应用时代的增长正在生成具有新数据类型和新数据模型的数据集. 这些应用程序是迭代的,并且关联的数据模型通 ...

  10. Apache Drill学习

    简介 Apache Drill is a low latency distributed query engine for large-scale datasets, including struct ...

最新文章

  1. 前景检测算法_1(codebook和平均背景法)
  2. 【Java 网络编程】NIO Buffer 简介 ( 概念 | 数据传输 | 标记 | 位置 | 限制 | 容量 | 标记 | 重置 | 清除 | 翻转 | 重绕 | 链式操作 )
  3. 疾控中心计算机管理员权限,疾控中心健康证分权限管理系统使用说明
  4. 算法系列教程04 - 算法相关的基础概念
  5. 深藏不露,挖掘4种大脑网络中的管理工具
  6. 【转】Oracle回收站(recyclebin)
  7. 项目经理问我Java内存区域模型!急急急
  8. 前端学习(2940):vue作为组件的注意事项
  9. 开发者如何写好技术简历?
  10. 干加个偏旁可以变成什么字_字好看的孩子,都是用了这些小学生学写字的方法...
  11. 应用层(DNS域名系统、FTP文件传送协议、远程终端协议TELNET、超文本协议HTTP)
  12. 淘宝天猫购物优惠券系统开发,java后端(ssm)+Android 原生APP,对接淘宝开放平台
  13. 下一代数据架构Data Fabric到底是什么?
  14. 【YOLOv5-6.x】模型参数量param及计算量FLOPs解析
  15. SQL查询 — 自连接的用法
  16. 内蒙古自治区律师事务所排名情况
  17. 翻译考试用计算机作答,法语考试:全国翻译专业资格(水平)考试(CATTI)介绍
  18. Android短信收发
  19. win10鼎信诺为什么安装不了_2016年鼎信诺常见问题处理.docx
  20. 【Vue基础】自动获取焦点功能

热门文章

  1. 电脑上怎么压缩PDF文件
  2. 【jieba获取关键词】
  3. GC是什么?为什么要用GC?
  4. Translation插件异常解决
  5. 【代码篇】通过三维坐标在CAD里自动输出三维模型
  6. Android4.4 XML解析死循环异常导致的开机无法正常启动
  7. 基础算法一一股神问题
  8. insetSelective 和insert的区别
  9. 《他们创造了数学》——哥德巴赫 演讲稿
  10. 服务器系统linux当nas,使用Ubuntu 13.10当NAS服务器系统