Apache drill

跟着官方文档看,外加查到的一些资料
官方文档戳这里,中文版戳这里(安装方法完全可以按照tutorial,很详细,开启服务记住这一句就ok:bin/drill-embedded)

FYI:本文和大部分介绍drill的文字一样无聊,,可能drill都是这么点东西,而且是同一版翻译

Running in embedded mode

安装完可以通过http://localhost:8047/ 访问,也可以:

  1. cd (path)/drill
  2. bin/sqlline -u jdbc:drill:zk=local
  3. Run a query (below).

如果想修改配置,进入drill下conf文件夹,drill-env.sh中可以添加配置信息

简介

  1. Apache Drill是一个低延迟的分布式海量数据(涵盖结构化、半结构化以及嵌套数据)交互式查询引擎。分布式、无模式(schema-free)
  2. 是Google Dremel的开源实现,本质是一个分布式的mpp(大规模并行处理)查询层,支持SQL及一些用于NoSQL和Hadoop数据存储系统上的语言
  3. 更快查询海量数据,通过对PB字节(2的50次方字节)数据的快速扫描完成相关分析
  4. Drill 提供即插即用,在现有的 Hive 和 HBase中可以随时整合部署。
  5. 是MR交互式查询能力不足的补充
  6. 数据模型,嵌套
  7. 列式存储
  8. 结合了web搜索和并行DBMS技术

注:Hive (Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦。)
有一套笔记讲Hive,戳这里

Drill 核心服务是 Drillbit,

Drillbit运行在集群的每个数据节点上时,可以最大化执行查询,不需要网络或是节点之间移动数据

接口

  • Drill Shell
  • Drill Web Console
  • ODBC/JDBC
  • C++ API
动态发现Schema

处理过程中会发现schema,

灵活的数据模型

允许数据属性嵌套,从架构角度看,Drill提供了灵活的柱状数据模型

无集中式元数据

不依赖单个的Hive仓库,可以查询多个Hive仓库,将数据结果整合

查询执行

提交一个Drill查询,客户端或应用程序会按照查询格式发一个SQL语句到Drillbit,Drillbit是一个执行入口,运行计划并执行查询

Drillbit街道查询请求后会变成Foreman来带动整个查询,先解析SQL,然后转变成Drill可以识别的SQL

logical plan 描述生成查询结果所需要的工作,并定义数据源和操作,由逻辑运算符的集合构成。

流程

Major Fragments

  • a concept that represents a phase of the query execution
  • A phase can consist of one or multiple operations that Drill must perform to execute the query.
  • Drill assigns each major fragment a MajorFragmentID
  • Drill uses an exchange operator to separate major fragments. An exchange is a change in data location and/or parallelization of the physical plan. An exchange is composed of a sender and a receiver to allow data to move between nodes.

Minor Fragments

  • Each major fragment is parallelized into minor fragments.
  • A minor fragment is a logical unit of work that runs inside a thread. A logical unit of work in Drill is also referred to as a slice.
  • The execution plan that Drill creates is composed of minor fragments. Drill assigns each minor fragment a MinorFragmentID.


  • 流程
    The parallelizer in the Foreman creates one or more minor fragments from a major fragment at execution time, by breaking a major fragment into as many minor fragments as it can usefully run at the same time on the cluster.
    Drill executes each minor fragment in its own thread as quickly as possible based on its upstream data requirements. Drill schedules the minor fragments on nodes with data locality. Otherwise, Drill schedules them in a round-robin(RR时间段执行方法) fashion on the existing, available Drillbits.
  • Minor fragments contain one or more relational operators. An operator performs a relational operation, such as scan, filter, join, or group by. Each operator has a particular operator type and an OperatorID. Each OperatorID defines its relationship within the minor fragment to which it belongs.

Execution of Minor Fragments

Minor fragments can run as root, intermediate, or leaf fragments. An execution tree contains only one root fragment. The coordinates of the execution tree are numbered from the root, with the root being zero. Data flows downstream from the leaf fragments to the root fragment.

The root fragment runs in the Foreman and receives incoming queries, reads metadata from tables, rewrites the queries and routes them to the next level in the serving tree. The other fragments become intermediate or leaf fragments.

Intermediate fragments start work when data is available or fed to them from other fragments. They perform operations on the data and then send the data downstream. They also pass the aggregated results to the root fragment, which performs further aggregation and provides the query results to the client or application.

The leaf fragments scan tables in parallel and communicate with the storage layer or access data on local disk. The leaf fragments pass partial results to the intermediate fragments, which perform parallel operations on intermediate results.

Minor Fragment可以作为root、intermediate、leaf Fragment三种类型运 行。一个执行树只包括一个root Fragment。执行树的坐标编号是从root 开始的,root是0。数据流是从下游的leaf Fragment到root Fragment。

运行在Foreman的root Fragment接收传入的查询、从表读取元数据,重 新查询并且路由到下一级服务树。下一级的Fragment包括Intermediate 和leaf Fragment。

当数据可用或者能从其他的Fragment提供时,Intermediate Fragment启 动作业。他们执行数据操作并且发送数据到下游处理。通过聚合Root Fragment的结果数据,进行进一步聚合并提供查询结果给客户端或应 用程序。

Leaf Fragment并行扫描表并且与存储层数据通信或者访问本地磁盘数 据。Leaf Fragment的部分结果传递给Intermediate Fragment,然后对 Intermediate结果执行合并操作

Query

  1. 比如一个查询语句:select id, type, name, ppu
    from dfs./Users/brumsby/drill/donuts.json;

Note that dfs is the schema name, the path to the file is enclosed by backticks, and the query must end with a semicolon.

  1. 注意需要as top

    Paste_Image.png

    如果是嵌套数组,the third value of the second inner array).
    select group[1][2]

  2. 一个复杂的SQL语句

SELECT * FROM (SELECT t.trans_id,
                      t.trans_info.prod_id[0] AS prod_id,
                      t.trans_info.purch_flag AS purchased
               FROM `clicks/clicks.json` t) sq
WHERE sq.prod_id BETWEEN 700 AND 750 AND
      sq.purchased = 'true'
ORDER BY sq.prod_id;

REST API

get/post,文档在这里,有个jsonapi相关的文档,写的很好,而且也有代码,是我当时看的时候的参考资料

待续。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容