1、概述
??本文內(nèi)容是描述利用presto連接cassandra數(shù)據(jù)庫并查詢cassandra數(shù)據(jù)庫里面數(shù)據(jù)的完整步驟寿羞,包括cassandra數(shù)據(jù)庫集群安裝部署以及presto數(shù)據(jù)查詢引擎的安裝部署。在進(jìn)行本文所說的安裝步驟的前提是你準(zhǔn)備好了至少2臺(tái)機(jī)器作為集群的節(jié)點(diǎn),各個(gè)節(jié)點(diǎn)之間能夠正常通信铃诬,可以ping的通烦味。本文實(shí)驗(yàn)所用的集群為三臺(tái)機(jī)器,具體信息如下表1-1所示龄寞。
?????????????????表1-1 集群節(jié)點(diǎn)配置信息
ip | 操作系統(tǒng) | 內(nèi)存 | 磁盤空間 | 是否是cassandra種子節(jié)點(diǎn) | 是否是presto的coordinator節(jié)點(diǎn) |
---|---|---|---|---|---|
10.166.50.231 | 64位Centos7標(biāo)準(zhǔn)版 | 8G | 127G | 是 | 是 |
10.166.50.232 | 64位Centos7標(biāo)準(zhǔn)版 | 8G | 127G | 是 | 否 |
10.166.50.233 | 64位Centos7標(biāo)準(zhǔn)版 | 8G | 127G | 是 | 否 |
??注意:操作系統(tǒng)在安裝時(shí)一定要勾選上開發(fā)工具汰规。附上操作系統(tǒng)下載地址:
??https://www.centos.org/download/
2、集群上cassandra安裝部署及測(cè)試
2.1物邑、準(zhǔn)備安裝環(huán)境
??cassandra數(shù)據(jù)庫安裝所需的軟件包名溜哮、版本及安裝目錄見表2-1。
???????表2-1 cassandra數(shù)據(jù)庫安裝所需軟件包名色解、版本及安裝目錄信息
軟件包名 | 軟件名稱 | 版本 | 安裝目錄 |
---|---|---|---|
Apache-cassandra-3.11.5.bin.tar.gz | Cassandra安裝包 | 3.11.5 | /usr/local/ |
jdk-8u241-linux-x64.tar.gz | JDK(Java開發(fā)工具) | 1.8.0_241 | /usr/local/ |
??注意:若是下載的cassandra是3.0以上的版本茂嗓,需要下載1.8及以上的JDK。附上軟件包下載地址:
??cassandra:http://cassandra.apache.org/download/
??jdk:https://www.oracle.com/technetwork/java/javase/downloads
2.2科阎、安裝過程
2.2.1述吸、上傳安裝包
??利用xshell和xftp將Apache-cassandra-3.11.5.bin.tar.gz和jdk-8u241-linux-x64.tar.gz上傳到10.166.50.231節(jié)點(diǎn)上的/usr/local/目錄下。這里我們采用的方式是在一個(gè)節(jié)點(diǎn)(10.166.50.231)編輯好所有配置文件后利用scp命令將配置文件傳到集群其余各個(gè)節(jié)點(diǎn)上锣笨,若是不想這樣干也可以一個(gè)個(gè)節(jié)點(diǎn)單獨(dú)配置蝌矛。
2.2.2、解壓安裝包
??在10.166.50.231節(jié)點(diǎn)的/usr/local目錄下執(zhí)行如下命令解壓Apache-cassandra-3.11.5.bin.tar.gz和jdk-8u241-linux-x64.tar.gz错英,并重命名入撒。
tar -zxvf Apache-cassandra-3.11.5.bin.tar.gz
mv apache-cassandra-3.11.5 cassandra
tar -zxvf jdk-8u241-linux-x64.tar.gz
mv jdk1.8.0_241 jdk1.8
2.2.3、配置防火墻
??在集群所有節(jié)點(diǎn)執(zhí)行如下命令關(guān)了防火墻椭岩,若是不關(guān)防火墻需要將cassandra數(shù)據(jù)庫啟動(dòng)所需的端口全部添加到白名單茅逮。建議關(guān)了防火墻,否則會(huì)因?yàn)榧洪g各個(gè)機(jī)器通信問題會(huì)導(dǎo)致錯(cuò)誤判哥。
systemctl stop firewalld
2.2.4献雅、配置hosts文件
??在集群所有節(jié)點(diǎn)執(zhí)行如下命令。
vim /etc/hosts
??執(zhí)行完命令后姨伟,在打開的hosts文件編輯內(nèi)容如下:
127.0.0.1 localhostlocalhost.localdomain localhost4 localhost4.localdomain4
::1 localhostlocalhost.localdomain localhost6 localhost6.localdomain6
10.166.50.231 cluster1
10.166.50.232 cluster2
10.166.50.233 cluster3
??編輯保存后惩琉,在/etc/init.d/目錄下執(zhí)行如下命令,使修改后的內(nèi)容生效夺荒。
./network restart
2.2.5瞒渠、配置jdk
??在集群所有節(jié)點(diǎn)執(zhí)行如下命令:
vim /etc/profile
??執(zhí)行命令后對(duì)/etc/profile文檔進(jìn)行編輯良蒸,在最后一行后面換行添加如下內(nèi)容:
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
??保存退出。
??然后執(zhí)行命令
source /etc/profile
??立即生效環(huán)境變量伍玖。
??這里可以通過執(zhí)行java -version命令來檢查jdk是否配置好了嫩痰,若是配置好了顯示如圖1所示。
2.2.6窍箍、創(chuàng)建cassandra存儲(chǔ)文件夾
??在10.166.50.231執(zhí)行如下命令:
mkdir /var/lib/cassandra
mkdir /var/lib/cassandra/data
mkdir /var/lib/cassandra/commitlog
mkdir /var/lib/cassandra/saved_caches
mkdir /usr/local/cassandra/logs
2.2.7串纺、配置cassandra參數(shù)
??執(zhí)行如下命令對(duì)cassandra.yaml文件進(jìn)行編輯。
vim /usr/local/cassandra/conf/cassandra.yaml
??執(zhí)行命令后椰棘,對(duì)cassandra.yaml文件配置如下所示:
rpc_address: 10.166.50.231
rpc_port: 9160
listen_address: 10.166.50.231
- seeds: "10.166.50.231,10.166.50.232,10.166.50.233"
data_file_directories:
-/var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
saved_caches_directory: /var/lib/cassandra/saved_caches
??配置說明如下:
??rpc_address:本機(jī)ip纺棺。
??rpc_port:默認(rèn)9160,若是與機(jī)器其他程序發(fā)生端口沖突需要修改邪狞。
??listen_address:本機(jī)ip祷蝌。
??-seeds:需要填寫上集群所有機(jī)器的ip。
??data_file_directories:與前面創(chuàng)建的文件路徑一致帆卓。
??commitlog_directory:與前面創(chuàng)建的文件路徑一致巨朦。
??saved_caches_directory:與前面創(chuàng)建的文件路徑一致。
??注意:這里有一個(gè)cluster_name屬性需要根據(jù)自己實(shí)際情況編輯剑令,默認(rèn)“Test Cluster”糊啡,同一個(gè)集群的所有機(jī)器名字應(yīng)相同。
2.2.8吁津、其他節(jié)點(diǎn)配置
??執(zhí)行如下命令將配置文件傳到集群所有剩下節(jié)點(diǎn)上并配置修改好棚蓄,這里將10.166.50.231節(jié)點(diǎn)上配置好的文件/usr/local/cassandra和/usr/local/jdk1.8傳到10.166.50.232和10.166.50.233節(jié)點(diǎn)的/usr/local/路徑下。
scp -r /usr/local/cassandra root@10.166.50.232:/usr/local
scp -r /usr/local/jdk1.8 root@10.166.50.232:/usr/local
??執(zhí)行命令后會(huì)提示輸入密碼腺毫,輸入對(duì)應(yīng)ip的登陸密碼即可癣疟。
??在所有其余節(jié)點(diǎn)(10.166.50.232,10.166.50.233)上按照2.2.3和2.2.4配置好JDK并關(guān)閉防火墻。
??在10.166.50.232和10.166.50.233節(jié)點(diǎn)按照2.2.6配置好對(duì)應(yīng)文件潮酒。
2.2.9睛挚、啟動(dòng)cassandra
??在所有節(jié)點(diǎn)的/usr/local/cassandra/bin/目錄下執(zhí)行如下命令啟動(dòng)cassandra。
./cassandra -R
??在/usr/local/cassandra/bin目錄下執(zhí)行如下命令查看是否集群所有節(jié)點(diǎn)都啟動(dòng)了急黎,如圖2所示扎狱。
./nodetool status
2.3、測(cè)試cassandra
2.3.1勃教、登陸sqlsh
??任意一個(gè)節(jié)點(diǎn)在/usr/local/cassnadra/bin/目錄下執(zhí)行如下命令淤击,這里是在10.166.50.231節(jié)點(diǎn)執(zhí)行:
./cqlsh 10.166.50.231
??命令行后面填寫任意ip皆可。
2.3.2故源、創(chuàng)建keyspace
??執(zhí)行如下cassandra命令創(chuàng)建名為test的keyspace(可理解為數(shù)據(jù)庫實(shí)例)污抬。
create keyspace test with replication = {'class':'SimpleStrategy','replication_factor':3}
??這里可以參考:https://www.w3cschool.cn/cassandra/cassandra_create_keyspace.html
2.3.3、創(chuàng)建table
??執(zhí)行如下cassandra命令創(chuàng)建名為emp的表。
use test;
create table emp(emp_id int primary key,emp_name text,emp_city text,emp_sal varint);
2.3.4印机、插入數(shù)據(jù)
??執(zhí)行如下命令矢腻,往emp表中插入幾條數(shù)據(jù)。
insert into emp (emp_id, emp_name, emp_city, emp_sal) VALUES(1,'ram', 'Hs', 50000);
insert into emp (emp_id, emp_name, emp_city, emp_sal) VALUES(2,'ss', 'Hys', 60000);
2.3.5射赛、查詢數(shù)據(jù)
??執(zhí)行如下命令多柑,可以查詢到已經(jīng)插入的數(shù)據(jù),結(jié)果如圖3所示楣责。至此竣灌,cassandra集群部署完成。
select * from emp;
3秆麸、集群上presto安裝部署及測(cè)試
3.1初嘹、準(zhǔn)備安裝環(huán)境
??Presto數(shù)據(jù)查詢引擎安裝所需的軟件包名、版本及安裝目錄見表3-1蛔屹。
??????????表3-1 presto安裝所需軟件包名削樊、版本及安裝目錄信息
軟件包名 | 軟件名稱 | 版本 | 安裝目錄 |
---|---|---|---|
presto-server-0.230.tar.gz | Presto安裝包 | 0.230 | /usr/local/ |
jdk-8u241-linux-x64.tar.gz | Presto客戶端連接工具 | 0.230 | /usr/local/ |
??注意:附上軟件包下載地址。
??presto-server:https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.230/
??presto-cli:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.230/
3.2兔毒、安裝過程
3.2.1、上傳安裝包
??利用xshell和xftp將presto-server-0.230.tar.gz和presto-cli-0.230-executable.jar上傳到10.166.50.231節(jié)點(diǎn)上的/usr/local/目錄下甸箱。這里我們采用的方式是在一個(gè)節(jié)點(diǎn)(10.166.50.231)編輯好所有配置文件后利用scp命令將配置文件傳到集群其余各個(gè)節(jié)點(diǎn)上育叁,若是不想這樣干也可以一個(gè)個(gè)節(jié)點(diǎn)單獨(dú)配置。
3.2.2芍殖、解壓安裝包
??在10.166.50.231節(jié)點(diǎn)的/usr/local目錄下執(zhí)行如下命令解壓presto-server-0.230.tar.gz并對(duì)presto-server-0.230.tar.gz和presto-cli-0.230-executable.jar重命名豪嗽,這里我沒有對(duì)presto-server-0.230.tar.gz重命名了,你可根據(jù)自己需要重命名豌骏。
tar -zxvf presto-server-0.230.tar.gz
mv presto-cli-0.230-executable.jar presto-cli
3.2.3龟梦、創(chuàng)建etc文件夾
??在10.166.50.231節(jié)點(diǎn)執(zhí)行如下命令在/usr/local/presto-server-0.230/目錄下創(chuàng)建etc文件夾,其余文件都要?jiǎng)?chuàng)建窃躲,但是我們用scp命令因?yàn)樵?31節(jié)點(diǎn)創(chuàng)建了计贰,其余節(jié)點(diǎn)就不用執(zhí)行該命令了。
mkdir /usr/local/presto-server-0.230/etc
3.2.4蒂窒、配置node.properties文件
??在10.166.50.231節(jié)點(diǎn)上執(zhí)行如下命令在/usr/local/presto-server-0.230/etc/目錄下創(chuàng)建node.properties文件躁倒,其余節(jié)點(diǎn)node.properties文件內(nèi)容和這個(gè)相同。
vim /usr/local/presto-server-0.230/etc/node.properties
??創(chuàng)建node.properties文件后編輯內(nèi)容如下所示洒琢。
node.environment=pretest
node.id=cluster1
node.data-dir=/usr/local/presto-server-0.230/presto/data
??配置說明如下:
??node.environment:presto部署集群上的節(jié)點(diǎn)該屬性值應(yīng)相同秧秉,默認(rèn)pretest。
??node.id:本機(jī)的標(biāo)識(shí)符衰抑,只要是唯一確認(rèn)的名稱就行象迎,這里我們寫為cluster1。
??node.data-dir:數(shù)據(jù)備份地址呛踊,一般寫為/usr/local/presto-server-0.230/presto/data砾淌。
3.2.5啦撮、配置jvm.config文件
??在10.166.50.231節(jié)點(diǎn)上執(zhí)行如下命令在/usr/local/presto-server-0.230/etc/目錄下創(chuàng)建jvm.config文件,其余節(jié)點(diǎn)jvm.config文件內(nèi)容和這個(gè)相同拇舀。
vim /usr/local/presto-server-0.230/etc/jvm.config
??創(chuàng)建jvm.config文件后編輯內(nèi)容如下所示逻族。
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
??這里的配置是參考官網(wǎng)說明配置的,具體請(qǐng)參考下面網(wǎng)址內(nèi)容骄崩。
https://prestodb.io/docs/current/installation/deployment.html聘鳞。
3.2.6、配置config.properties文件
??config.properties文檔在coordinator節(jié)點(diǎn)上和worker節(jié)點(diǎn)上內(nèi)容不一樣要拂,需要注意抠璃。
??1)coordinator節(jié)點(diǎn)
??在10.166.50.231節(jié)點(diǎn)(coordinator節(jié)點(diǎn))上執(zhí)行如下命令在/usr/local/presto-server-0.230/etc/目錄下創(chuàng)建config.properties文件。
vim /usr/local/presto-server-0.230/etc/config.properties
??創(chuàng)建config.properties文件后編輯內(nèi)容如下所示脱惰。
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=16GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://10.166.50.231:8080
??配置說明如下:
??coordinator:該屬性值為true或者false搏嗡,用來判斷該節(jié)點(diǎn)是否是集群的coordinator節(jié)點(diǎn)。
??node-scheduler.include-coordinator:該屬性值為ture或者false拉一,用來判斷是否將coordinator節(jié)點(diǎn)當(dāng)做worker節(jié)點(diǎn)使用采盒,一般正常集群coordinator節(jié)點(diǎn)是不將coordinator節(jié)點(diǎn)當(dāng)做worker使用,其值為false蔚润,原因是coordinator若也當(dāng)成worker使用會(huì)影響效率磅氨,有興趣可以深入研究。
??http-server.http.port:用來后面在網(wǎng)頁打開presto管理界面的端口嫡纠,默認(rèn)8080烦租。
??query.max-memory:集群最大的查詢?nèi)蝿?wù)量所能用內(nèi)存。
??query.max-memory-per-node:每個(gè)節(jié)點(diǎn)能查詢的最大數(shù)據(jù)量所能用內(nèi)存除盏。
??query.max-total-memory-per-node:每個(gè)節(jié)點(diǎn)能查詢叉橱、寫入等的最大數(shù)據(jù)量所能用內(nèi)存。
??discovery-server.enabled:Presto使用發(fā)現(xiàn)服務(wù)來查找群集中的所有節(jié)點(diǎn)者蠕。每個(gè)Presto實(shí)例在啟動(dòng)時(shí)都會(huì)向Discovery服務(wù)注冊(cè)窃祝。為了簡(jiǎn)化部署并避免運(yùn)行其他服務(wù),Presto協(xié)調(diào)器可以運(yùn)行Discovery服務(wù)的嵌入式版本蠢棱。它與Presto共享HTTP服務(wù)器锌杀,因此使用相同的端口。根據(jù)官網(wǎng)我們寫true值。
??discovery.uri:由于啟用了Prestocoordinator內(nèi)嵌的Discovery服務(wù),因此這個(gè)uri就是coordinator節(jié)點(diǎn)的uri荒适,這里是10.166.50.231。根據(jù)實(shí)際環(huán)境設(shè)置該uri突想。注意:這個(gè)uri一定不能以”/”結(jié)尾。
??2)worker節(jié)點(diǎn)
??步驟同coordinator節(jié)點(diǎn)相同,不同的是config.properties配置文件信息如下所示猾担。
coordinator=false
#node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=16GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://10.166.50.231:8080
3.2.7袭灯、配置log.properties文件
??在10.166.50.231節(jié)點(diǎn)(coordinator節(jié)點(diǎn))上執(zhí)行如下命令在/usr/local/presto-server-0.230/etc/目錄下創(chuàng)建log.properties文件,其余節(jié)點(diǎn)log.properties內(nèi)容和這個(gè)相同绑嘹。
vim /usr/local/presto-server-0.230/etc/log.properties
??創(chuàng)建log.properties文件后編輯內(nèi)容如下所示稽荧。
com.facebook.presto=INFO
3.2.8、配置數(shù)據(jù)源cassandra
??在/usr/local/presto-server-0.230/etc路徑下創(chuàng)建catalog文件夾工腋,其余節(jié)點(diǎn)內(nèi)容和這個(gè)相同姨丈。
mkdir /usr/local/presto-server-0.230/etc/catalog
??在catalog文件下創(chuàng)建并編輯cassandra.properties文件,其余節(jié)點(diǎn)內(nèi)容和這個(gè)相同擅腰。
vim /usr/local/presto-server-0.230/catalog/etc/cassandra.properties
??在創(chuàng)建的cassandra.properties文件下編輯內(nèi)容如下蟋恬,其余節(jié)點(diǎn)內(nèi)容和這個(gè)相同:
connector.name=cassandra
cassandra.contact-points=10.166.50.231,10.166.50.232,10.166.50.233
??配置說明:
??connector.name:連接什么數(shù)據(jù)源就寫什么,這里連接的是cassandra趁冈,所以寫的是cassandra歼争。
??cassandra.contact-points:集群上所有節(jié)點(diǎn)的ip都要寫上。
3.2.9渗勘、其他節(jié)點(diǎn)配置
??執(zhí)行如下命令將配置文件傳到集群所有剩下節(jié)點(diǎn)上并配置修改好沐绒,這里將10.166.50.231節(jié)點(diǎn)上配置好的文件/usr/local/presto-server-0.230傳到10.166.50.232和10.166.50.233節(jié)點(diǎn)的/usr/local/路徑下。
scp -r /usr/local/presto-server-0.230 root@10.166.50.232:/usr/local
??執(zhí)行命令后會(huì)提示輸入密碼旺坠,輸入對(duì)應(yīng)ip的登陸密碼即可洒沦。
??在所有其余節(jié)點(diǎn)(10.166.50.232,10.166.50.233)上按照3.2.3、3.2.4价淌、3.2.5、3.2.6瞒津、3.2.7和3.2.8章節(jié)配置好對(duì)應(yīng)文件蝉衣。
3.2.10、啟動(dòng)presto服務(wù)
??執(zhí)行如下命令啟動(dòng)presto服務(wù)巷蚪。
sh /usr/local/presto-server-0.230/bin/launcher start
??可以通過如下命令檢測(cè)節(jié)點(diǎn)是否正常啟動(dòng)病毡。
sh /usr/local/presto-server-0.230/bin/launcher status
3.3、測(cè)試presto
3.3.1屁柏、登陸presto-cli
??這里我們只在10.166.50.231節(jié)點(diǎn)安裝了presto-cli客戶端啦膜,有需要的可以在集群任意節(jié)點(diǎn)安裝,不限制淌喻。
??先對(duì)presto-cli命令賦予權(quán)限僧家,在/usr/local/目錄下執(zhí)行如下命令。
chmod +x ./presto-cli
??在/usr/local/目錄下執(zhí)行如下命令裸删,啟動(dòng)presto-cli的客戶端八拱。
./presto-cli --server 10.166.50.231:8080 --catalog cassandra --schema test
??catalog對(duì)應(yīng)數(shù)據(jù)源,schema對(duì)應(yīng)數(shù)據(jù)庫實(shí)例,結(jié)果如下圖4所示肌稻。
3.3.2清蚀、查詢數(shù)據(jù)
??在presto-cli打開的查詢界面輸入以下命令,結(jié)果如圖5所示爹谭。至此presto成功部署在集群上并連接上了cassandra數(shù)據(jù)庫枷邪。
select * from emp;
如果您覺得有用,希望轉(zhuǎn)發(fā)給更多需要的人