hadoop--presto安裝部署
系統環境:hadoop + hive已經配置完成
1、下載presto:https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.167/presto-server-0.167.tar.gz
2、解壓安裝
# tar -zxvf presto-server-0.167.tar.gz -C /usr/local/
/usr/local/presto-server-0.167則為安裝目錄,另外Presto還需要資料目錄,資料目錄最好不要在安裝目錄裡面,方便後面Presto的版本升級。
3、配置presto
在安裝目錄裡建立etc目錄。這目錄會有以下配置(自己建立):
結點屬性(Node Properties):每個結點的環境配置
JVM配置(JVM Config):Java虛擬機器的命令列選項
配置屬性(Config Properties):Persto server的配置
Catelog屬性(Catalog Properties):配置Connector(資料來源)
(1)結點屬性(Node Properties)
結點屬性檔案etc/node.properties,包含每個結點的配置。一個結點是一個Presto例項。這檔案一般是在Presto第一次安裝時建立的。以下是最小配置:
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data
解釋:
node.environment: 環境名字,Presto叢集中的結點的環境名字都必須是一樣的。
node.id: 唯一標識,每個結點的標識都必須是為一的。就算重啟或升級Presto都必須還保持原來的標識。
node.data-dir: 資料目錄,Presto用它來儲存log和其他資料
eg:
node.environment=production
node.id=master-presto-coordinator
node.data-dir=/usr/local/presto-server-0.167/data #data需要自己手動建立
(2)JVM配置(JVM Config)
JVM配置檔案etc/jvm.config,包含啟動Java虛擬機器時的命令列選項。格式是每一行是一個命令列選項。此檔案資料是由shell解析,所以選項中包含空格或特殊字元會被忽略。
以下是參考配置:
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
(3)配置屬性(Config Properties)
配置屬性檔案etc/config.properties,包含Presto server的配置。Presto server可以同時為coordinator和worker,但一個大叢集裡最好就是隻指定一臺機器為coordinator。
以下是coordinator的最小配置:
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080
以下是worker的最小配置:
coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
discovery.uri=http://example.net:8080
如果適用於測試目的,需要將一臺機器同時配置為coordinator和worker,則使用以下配置:
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080
解釋:
coordinator: 是否執行該例項為coordinator(接受client的查詢和管理查詢執行)。
node-scheduler.include-coordinator:coordinator是否也作為work。對於大型叢集來說,在coordinator裡做worker的工作會影響查詢效能。
http-server.http.port:指定HTTP埠。Presto使用HTTP來與外部和內部進行交流。
query.max-memory: 查詢能用到的最大總記憶體
query.max-memory-per-node: 查詢能用到的最大單結點記憶體
discovery-server.enabled: Presto使用Discovery服務去找到叢集中的所有結點。每個Presto例項在啟動時都會在Discovery服務裡註冊。這樣可以簡化部署,不需要額外的服務,Presto的coordinator內建一個Discovery服務。也是使用HTTP埠。
discovery.uri: Discovery服務的URI。將example.net:8080替換為coordinator的host和埠。這個URI不能以斜槓結尾,這個錯誤需特別注意,不然會報404錯誤。
另外還有以下屬性:
jmx.rmiregistry.port: 指定JMX RMI的註冊。JMX client可以連線此埠
jmx.rmiserver.port: 指定JXM RMI的伺服器。可通過JMX監聽。
eg:server配置
coordinator=true
node-scheduler.include-coordinator=false
datasources=jmx,hive
http-server.http.port=8880
query.max-memory=1GB
query.max-memory-per-node=512MB
discovery-server.enabled=true
discovery.uri=http://172.20.1.1:8880
client配置
coordinator=false
http-server.http.port=8880
query.max-memory=1GB
query.max-memory-per-node=512MB
discovery-server.enabled = true
discovery.uri=http://172.20.1.1:8880
(4)日誌級別
建立檔案log.properties
填入內容:
com.facebook.presto=INFO
備註:日誌級別有四種,DEBUG, INFO, WARN and ERROR
(5)連線設定
這裡只說一下hive的,其實官網寫的很清楚,如果有用到其他的,可以點一下官網連線:https://prestodb.io/docs/current/connector.html
hive connector配置如下:
a、建立存放連結配置檔案的資料夾,在之前etc目錄下建立catalog
b、放入一個jmx的配置檔案,jmx.properties,配置內容:connector.name=jmx (通過jmx管理connector)
c、配置一個hive connector的配製檔案,hive.properties,內容如下:
在etc目錄下建立catalog目錄
# mkdir catalog
# cd catalog
# touch hive.properties
connector.name=hive-hadoop2 #取個連線名
hive.metastore.uri=thrift://172.20.1.1:9083 #配置metastore連線
hive.config.resources=/usr/local/hadoop-2.9.1/conf/core-site.xml,/usr/local/hadoop-2.9.1/conf/hdfs-site.xml #指明hadoop的配置檔案,主要是設計hdfs
hive.allow-drop-table=true #給刪表許可權
其他配置如下可參考官網:https://prestodb.io/docs/current/connector/hive.html https://prestodb.io/docs/current/connector/hive-security.html
eg:
(6)
這些都配置好後,就要啟動presto,步驟如下:
a、在bin目錄下啟動服務:bin/launcher start bin/launcher start
b、命令列啟動:下載啟動jar包:presto-cli-0.191-executable.jar,下載連結為: https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.191/presto-cli-0.191-executable.jar
c、下載下來後改個名字為presto,放在bin目錄下,然後給個執行許可權:chmod +x presto ,
d、連線hive,並啟動:./presto --server localhost:8080 --catalog hive --schema default
e、如果要關閉presto服務,執行:bin/launcher stop