準(zhǔn)備材料:
- jdk-8u121-linux-x64.rpm (運(yùn)行Drill1.6及其后續(xù)版本需要jdk7或8)
- apache-drill-1.10.0.tar.gz
- zookeeper-3.4.6
- hadoop2.x cluster
一漂辐、安裝、配置drill:
①树枫、解壓螟加、安裝
- tar -xzvf apache-drill-1.10.0.tar.gz
- cp -r apache-drill-1.10.0 /usr/local
- ln -s apache-drill-1.10.0 drill-1.10
②徘溢、環(huán)境變量配置
修改/etc/profile吞琐,尾部添加:
##JAVA
export JAVA_HOME=/usr/java/jdk1.8.0_121
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:/usr/local/bin
export LANG=en_US.UTF-8
export DRILL_HOME=/usr/local/drill-1.10
export PATH=$PATH:$DRILL_HOME/bin
③、集群模式下配置drill
在$DRILL_HOME/conf/drill-override.conf文件中然爆,使用Drill cluster ID, 通過(guò)指定正確的zookeeper集群地址列表(host1:2181,host2:2181,hostN:2181)來(lái)連接上zk的quorum站粟。
注意:如果在多個(gè)節(jié)點(diǎn)上安裝drill,需要指定同一個(gè)Drill cluster ID曾雕,所有的drill節(jié)點(diǎn)共享同一個(gè)集群ID奴烙。
配置樣例:
drill.exec:{
cluster-id: "<mydrillcluster>",
zk.connect: "<zkhostname1>:<port>,<zkhostname2>:<port>,<zkhostname3>:<port>"
}
④、集群模式下啟動(dòng)drill
在集群模式下使用drill剖张,必須首先在每一臺(tái)節(jié)點(diǎn)上啟動(dòng)Drill daemon(Drillbit)進(jìn)程,在使用client連接上drill前幅虑,務(wù)必先啟動(dòng)Drillbit進(jìn)程倒庵。
4.1 啟動(dòng)Drillbit進(jìn)程炫刷,使用drillbit.sh腳本:
注意:
如果使用standalone的embedded模式浑玛,不需要執(zhí)行drillbit.sh腳本锄奢。
該腳本除了可以啟動(dòng)Drillbit后臺(tái)進(jìn)程外,還可以用來(lái):
a). 檢查Drillbit狀態(tài)
b). 停止后重啟一個(gè)Drillbit進(jìn)程
c). 配置Drillbit用于支持自動(dòng)重啟
drillbit.sh命令語(yǔ)法:
drillbit.sh [–config < conf-dir >] (start | stop | status | restart | autorestart)
例如书在,重啟drillbit進(jìn)程,可以使用:
drillbit.sh restart
4.2 啟動(dòng)Drill Shell
使用shell命令行工具栏账,可以與已連接上的數(shù)據(jù)源挡爵,通過(guò)sql方式進(jìn)行交互式的查詢甚垦。
-
drill-conf
通過(guò)上述conf/drill-override.conf中配置的zookeeper連接信息涣雕,來(lái)打開(kāi)drill shell交互式執(zhí)行窗口闭翩。 -
drill-localhost
如果本機(jī)配置了zk疗韵,可以通過(guò)這個(gè)命令打開(kāi)drill shell交互式執(zhí)行窗口。
執(zhí)行完后流译,交互式窗口出現(xiàn):
[root@xxxxx bin]# drill-conf
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
apache drill 1.10.0
"a drill is a terrible thing to waste"
0: jdbc:drill:> select * from sys.drillbits;
+-----------+------------+---------------+------------+----------+----------+
| hostname | user_port | control_port | data_port | current | version |
+-----------+------------+---------------+------------+----------+----------+
| server01 | 31010 | 31011 | 31012 | false | 1.10.0 |
| server02 | 31010 | 31011 | 31012 | true | 1.10.0 |
+-----------+------------+---------------+------------+----------+----------+
2 rows selected (2.686 seconds)
4.3 使用Ad-Hoc方式連上Drill Shell
可以使用sqlline命令以ad-hoc方式連接到drill先蒋,例如竞漾,如果想使用指定的數(shù)據(jù)存儲(chǔ)插件作為schema业岁,可以使用如下語(yǔ)法:
sqlline -u jdbc:drill:[schema=< storage plugin >;]zk=< zk_name1>[:< port1>][,< zk_name1>[:< port1>]…]
參數(shù)解讀:
-u 是連接字符串的前置參數(shù)笔时,必須項(xiàng)允耿;
jdbc 是連接類(lèi)型扒怖,必須項(xiàng)盗痒;
schema 查詢的插件類(lèi)型,可選項(xiàng)骡楼;
zk name指代一個(gè)或多個(gè)zk集群節(jié)點(diǎn)IP,或hostname;
part 指代zk端口號(hào)稽鞭,默認(rèn)2181,可選項(xiàng)
例如:
如果使用dfs數(shù)據(jù)存儲(chǔ)插件朦蕴,來(lái)連上drill弟头,可以這么使用:
sqlline -u jdbc:drill:schema=dfs;zk=centos01
如果需要連上zk集群,可以這么使用:
sqlline -u jdbc:drill:zk=centos01:2181,centos02:2181;centos03:2181
4.4 退出drill shell
可以在命令行窗口上執(zhí)行:!quit
4.5 關(guān)閉Drill服務(wù)
執(zhí)行: drillbit.sh stop
⑤兑燥、Web Console UI展示
可以使用web console來(lái)連上drill,這也是drill眾多客戶端接口中的一個(gè)降瞳。
在瀏覽器中打開(kāi)如下網(wǎng)址即可:
-
htpp://< IP address or host name>:8047
或 - htpps://< IP address or host name>:8047
二嘱支、使用drill操作hbase數(shù)據(jù)
如果需要通過(guò)drill查詢hbase的數(shù)據(jù),需要在web console上對(duì)hbase數(shù)據(jù)源做些配置挣饥。
1.web console => Storage tab頁(yè) => enable hbase
2.在“Enabled Storage Plugins”一欄中,點(diǎn)擊hbase上的update按鈕扔枫,進(jìn)入編輯頁(yè)面短荐,填入hbase的配置信息痕貌。
配置樣例如下:
{
"type": "hbase",
"config": {
"hbase.zookeeper.quorum": "111.111.111.111",
"hbase.zookeeper.property.clientPort": "2181",
"zookeeper.znode.parent": "/hbase"
},
"size.calculator.enabled": false,
"enabled": true
}
3.重新啟動(dòng)drillbit進(jìn)程糠排,即可開(kāi)始查詢hbase數(shù)據(jù)。
使用drill以sql訪問(wèn)hbase,詳見(jiàn)如下文檔:
Querying HBase
4.注意事項(xiàng)
hbase里乾闰,行健與數(shù)據(jù)列中的數(shù)據(jù)均以byte[]形式存在落追,在使用drill操作hbase的數(shù)據(jù)時(shí),如果不加轉(zhuǎn)換汹忠,實(shí)際上它返回給你的是字節(jié)數(shù)組的地址值淋硝。
這是需要使用其內(nèi)置轉(zhuǎn)換函數(shù)CONVERT_FROM,轉(zhuǎn)換為實(shí)際的值宽菜。
一個(gè)轉(zhuǎn)換例子:
SELECT CONVERT_FROM(row_key, 'UTF8') AS studentid,
CONVERT_FROM(students.account.name, 'UTF8') AS name,
CONVERT_FROM(students.address.state, 'UTF8') AS state,
CONVERT_FROM(students.address.street, 'UTF8') AS street,
CONVERT_FROM(students.address.zipcode, 'UTF8') AS zipcode
FROM students;