Apache-drill Architechture - drill的学习
目录
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
动态模式发现
钻不要求数据模式或规范数据类型按顺序开始查询执行过程。Drill在批记录开始数据处理,在处理过程中发现模式。自描述数据格式如Parquet、JSON、AVRO,NoSQL数据库有指定的模式作为数据自身的一部分,钻动态地实时查询。因为模式一改变就会结束Drill查询进程,钻的许多运算符被设计成当模式改变就重新配置自身。
灵活的数据模型
钻允许访问嵌套数据属性,就像SQL列和提供了直观的扩展很容易操作。从体系结构的角度来看,钻提供了一个灵活的柱状分层的数据模型,可以表示复杂,高度动态和不断演化的数据模型。在钻中关系数据被视为一个特殊的或简化的复杂/多结构化的数据。
没有集中的元数据
钻没有一个集中的元数据的要求。你不需要创建和管理元数据存储库中的表和视图,或依赖数据库管理员组的一个函数。钻导出元数据通过存储插件对应的数据源。存储插件提供完整元数据范围的排列从元数据(hive),局部元数据(HBase),或没有中央元数据(文件)。分散式的元数据意味着钻不绑定到单一的Hive库。您可以一次查询多个hive存储库,然后从HBase表或文件在一个分布式文件系统用信息合并数据。你也可以使用SQL DDL语句用钻创建元数据,该组织像一个传统的数据库。钻元数据是通过ANSI标准INFORMATION_SCHEMA数据库来访问的。
可扩展性
所有层的钻在所有层提供了一个可扩展的体系结构,包括存储插件,查询,查询优化/执行和客户端API层。你可以为组织的具体需求定制任何层也可以扩展层到更广泛的数组用例。钻使用类路径扫描查找并加载插件,用最低限度的配置添加额外的存储插件、函数和运算符。