Apache Drill 初步认识 zookeeper安装与使用 MongoDB与使用 安装 Apache Drill查询MongoDB

中文文档:https://drill.smartloli.org/ 缺省的,不建议看中文文档

英文文档:http://drill.apache.org

核心模块:

drill query flow

执行过程图

执行过程描述

  1. RPC endpoint: (接受查询SQL)终端客户机,建议用户直接通过zk来管理Drill分布式
  2. SQL parser:(SQL转化成逻辑操作符语法)用的是Apache Calcite的SQL解析,用于优化语句中SQL操作符的顺序,应用自定义规则将特定的SQL操作符转换成特定的逻辑操作符语法
  3. Logical plan:(逻辑操作符语法转换成逻辑计划)逻辑计划,逻辑操作符语法转换成逻辑计划,逻辑计划是描述生成查询结果所需的工作,并定义要应用哪些数据源和操作
  4. Optimizer:(逻辑计划转换成最优的物理查询计划)优化器,用于应用各种类型的规则将操作符和函数重新排列到一个最佳计划中,优化器将逻辑计划转换为描述如何执行查询的物理计划
  •  物理计划转换为多个阶段,称为主要阶段和次要阶段。这些片段创建一个多级执行树,重写查询并对配置的数据源并行执 行,将结果发送回客户机或应用程序。
  • 主要片段实际上不执行任何查询任务,每个主要片段被划分为一个或多个次要片段(在下一节中讨论),这些小片段实际执行完成查询所需的操作,并将结果返回给客户机。您还可以查看查询概要文件中的主要片段,这在Drill Web UI中是可见的,也可以直接通过plan命令查看主要片段明细。例如,要执行两个文件的哈希聚合,Drill可以创建一个包含两个主要阶段(主要片段)的计划,其中第一个阶段用于扫描两个文件,第二个阶段用于聚合数据。
  • 次要片段每个主要的片段被并行化为次要的片段。次要片段是在线程中运行的逻辑工作单元。Drill中的逻辑工作单元也称为片。Drill创建的执行计划由较小的片段组成。Drill为每个小片段分配一个minorfragmentd。一个主要的片段分解成尽可能多的次要片段,以便在集群上同时有效地运行。次要片段数量可以在Web UI中查询查看,修改一些配置选项,以更改较小片段的行为,比如最大片数。

Storage plugin interface:元数据存储

*Query Execution

安装与使用

1、安装JDK 8 +版本

2、设置JAVA_HOME和PATH环境变量

3、安装zookeeper 下载zookeeper-3.3.4,下载地址https://archive.apache.org/dist/zookeeper/

解压D:\zookeeper-3.3.4,

复制D:\zookeeper-3.3.4\conf\zoo_sample.cfg为zoo.cfg,

新建D:\zookeeper-3.3.4\data文件夹,

设置zoo.cfg里的dataDir=D:\zookeeper-3.3.4\data

4、启动zookeeper,直接运行D:\zookeeper-3.3.4\bin\zkServer.cmd

5、下载Apache Drill:apache-drill-1.16.0.zip

6、解压到D盘:D:\apache-drill-1.16.0

7、CMD管理员进入D:\apache-drill-1.16.0\bin

8、启动Apache Drill:sqlline.bat -u "jdbc:drill:zk=local"或者drill-embedded.bat (Supported in Drill 1.16 and later.)

启动出现错误WARNING: All illegal access operations will be denied in a future release
Error: Failure in starting embedded Drillbit: org.apache.drill.common.exceptions
.DrillRuntimeException: Error during udf area creation [/C:/Users/Administrator/
drill/udf/registry] on file system [file:///] (state=,code=0)

解决办法:CMD运行如下命令:

 mkdir "%userprofile%\drill"

    mkdir "%userprofile%\drill\udf"

    mkdir "%userprofile%\drill\udf\registry"

    mkdir "%userprofile%\drill\udf\tmp"

    mkdir "%userprofile%\drill\udf\staging"

    takeown /R /F "%userprofile%\drill"

ok 再次启动:sqlline.bat -u "jdbc:drill:zk=local"或者drill-embedded.bat (Supported in Drill 1.16 and later.)

 

9、校验输入:!tables查询所有的系统默认表

您可以运行一个测试查询来验证,例如:

apache drill>use cp;
+------+--------------------------------+
|  ok  |            summary             |
+------+--------------------------------+
| true | Default schema changed to [cp] |
+------+--------------------------------+  

//Query the employee.json file in the classpath.

apache drill (cp)>SELECT * FROM cp.`employee.json` LIMIT 1;
+-------------+--------------+------------+-----------+-------------+----------------+----------+---------------+------------+-----------------------+---------+---------------+-----------------+----------------+--------+-------------------+
| employee_id |  full_name   | first_name | last_name | position_id | position_title | store_id | department_id | birth_date |       hire_date       | salary  | supervisor_id | education_level | marital_status | gender |  management_role  |
+-------------+--------------+------------+-----------+-------------+----------------+----------+---------------+------------+-----------------------+---------+---------------+-----------------+----------------+--------+-------------------+
| 1           | Sheri Nowmer | Sheri      | Nowmer    | 1           | President      | 0        | 1             | 1961-08-26 | 1994-12-01 00:00:00.0 | 80000.0 | 0             | Graduate Degree | S              | F      | Senior Management |
+-------------+--------------+------------+-----------+-------------+----------------+----------+---------------+------------+-----------------------+---------+---------------+-----------------+----------------+--------+-------------------+

10、访问Drill Web UI:http://localhost:8047/

11、设置登录帐号密码

https://blog.csdn.net/fwx02/article/details/101059736

12、添加mongDB模块的支持

13、添加MySQL模块的支持

官方说明文档:http://drill.apache.org/docs/using-the-jdbc-driver/

在目录D:\apache-drill-1.16.0\jars\jdbc-driver加入com.mysql.jdbc.Driver对应的jar


14、退出

!quit   

15、linux安装Apache Drill

和windows安装一样,只是启动的时候用bin/drillbit.sh start不要用官网的bin/drill-embedded,用官网的bin/drill-embedded会报错:

[kduser@mdw apache-drill-1.16.0]$ bin/drill-embedded Exception in thread "main" java.io.IOError: java.lang.UnsupportedOperationException at org.jline.utils.Curses.tputs(Curses.java:62) at org.jline.utils.Curses.tputs(Curses.java:45) at org.jline.keymap.KeyMap.key(KeyMap.java:243) at org.jline.reader.impl.LineReaderImpl.key(LineReaderImpl.java:5666) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.jline.reader.impl.LineReaderImpl.bindKeys(LineReaderImpl.java:5674) at org.jline.reader.impl.LineReaderImpl.emacs(LineReaderImpl.java:5387) at org.jline.reader.impl.LineReaderImpl.defaultKeyMaps(LineReaderImpl.java:5363) at org.jline.reader.impl.LineReaderImpl.<init>(LineReaderImpl.java:266) at org.jline.reader.LineReaderBuilder.build(LineReaderBuilder.java:115) at sqlline.SqlLine.getConsoleReader(SqlLine.java:626) at sqlline.SqlLine.begin(SqlLine.java:527) at sqlline.SqlLine.start(SqlLine.java:270) at sqlline.SqlLine.main(SqlLine.java:201) Caused by: java.lang.UnsupportedOperationException at org.jline.utils.Curses.doTputs(Curses.java:78) at org.jline.utils.Curses.tputs(Curses.java:60) ... 21 more

如果启动报错,检查配置

drill-override.conf


drill.exec: {
    cluster-id: "drillbits1",
    zk.connect: "localhost:2181"
}

设置内存大小

drill-env.sh


export DRILL_MAX_DIRECT_MEMORY="2G"
export DRILL_HEAP="1G"

 

16、MongoDB安装配置

16.1、rpm包安装(建议不要选rpm包,下面介绍TGZ包的安装步骤)下载:https://www.mongodb.com/download-center/community?jmp=nav

 

rpm包:mongodb-org-server-4.2.0-1.el6.x86_64.rpm

rpm -ivh mongodb-org-server-4.2.0-1.el6.x86_64.rpm

修改/etc/mongod.conf的dbPath systemLog path,注释掉bindIp:127.0.0.1 #xxx

mkdir dbPath 和 systemLog path

启动service mongod start

停止service mongod stop

重启service mongod restart

如果出现pid已经存在的错误删除了重新启动就ok

卸载

yum erase $(rpm -qa | grep mongodb-org)

rm -r /var/log/mongodb

rm -r /var/lib/mongo

 

16.2、TGZ包安装:

1、sudo vi /etc/profile

插入下列内容:

export MONGODB_HOME=/apps/db/mongodbexport PATH=$PATH:$MONGODB_HOME/bin

立即生效

source /etc/profile

2、创建

sudo mkdir /apps/db/mongodb/data

sudo chmod -R 777  /apps/db/mongodb/data
sudo touch /apps/db/mongodb/data/logs/mongodb.log

3、配置

sudo touch /apps/db/mongodb/mongodb.conf

sudo vim /apps/db/mongodb/mongodb.conf

#数据存放地址
dbpath=/apps/db/mongodb/data
#log存放地址
logpath=/apps/db/mongodb/data/logs/mongodb.log
#端口号
port=27017
#以守护程序运行,即后台运行
fork=true
nohttpinterface=true

4、启动

cd  /apps/db/mongodb/bin

./mongod -f mongodb.conf

5、测试连接 curl localhost:27017

6、MongoDB客户端安装和用户密码权限控制,建议安装studio-3t

https://blog.csdn.net/fwx02/article/details/100930150

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值