CDH集羣中部署Presto

       Presto是完全基於內存的並行計算以及分佈式SQL交互式查詢引擎。它可以共享Hive的元數據,然後直接訪問HDFS中的數據。同Impala一樣,作爲Hadoop之上的SQL交互式查詢引擎,通常比Hive要快5-10倍。Presto是一個運行在多臺服務器上的分佈式系統。完整安裝包括一個coordinator和多個worker。

目錄

一、準備工作

1、下載安裝包

2、角色說明

二、解壓等相關操作

三、準備Presto的配置文件

四、Presto服務的啓動和停止

五、Presto集成Hive

六、測試


一、準備工作

1、下載安裝包

       我們使用的安裝包是presto-server-0.230.tar.gz,鏈接路徑爲:

https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.230/presto-server-0.230.tar.gz

2、角色說明

       由於小編的CDH集羣是四個節點,那麼此處也配置四個節點,其中master節點安裝coordinator,slave節點安裝worker。Presto服務的安裝目錄爲:

/opt/cloudera/parcels/presto

二、解壓等相關操作

       (1)將下載好的tar包上傳到對應目錄並解壓

[root@cdh-master parcels]# pwd
/opt/cloudera/parcels
[root@cdh-master parcels]# tar -zxvf ./presto-server-0.230.tar.gz -C ./

       (2)將解壓好的目錄分發到其餘三個節點,以slave01爲例

scp -r ./presto-server-0.230 cdh-slave01:/opt/cloudera/parcels/

       (3)爲所有節點的presto-server-0.230目錄創建軟連接

ln -s presto-server-0.230 presto

       (4)所有節點的/opt/cloudera/parcels/presto/bin/launcher文件中添加java環境變量

JAVA_HOME=/opt/modules/jdk1.8.0_231
PATH=$JAVA_HOME/bin:$PATH

       使用這種方式就可以直爲Presto服務指定JAVA環境,而不會影響服務器上其它服務的JAVA環境。這裏需要注意的是,此處或許對jdk的版本要求比嚴,jdk小版本儘量大於151

三、準備Presto的配置文件

       1、所有節點的/opt/cloudera/parcels/presto目錄下創建etc目錄,用於存放配置文件。

mkdir etc

       2、所有節點新建node.properties文件,內容如下(這裏以master節點爲例,salve節點需要更改node.id等內容):

node.environment=qgwlpresto
node.id=presto-cdh01
node.data-dir=/data/presto

       node.environment是集羣名稱。所有在同一個集羣中的Presto節點必須擁有相同的集羣名稱。node.id是每個Presto節點的唯一標識。每個節點的node.id都必須是唯一的。在Presto進行重啓或者升級過程中每個節點的node.id必須保持不變。如果在一個節點上安裝多個Presto實例(例如:在同一臺機器上安裝多個Presto節點),那麼每個Presto節點必須擁有唯一的node.id。node.data-dir:數據存儲目錄的位置(操作系統上的路徑)。Presto將會把日期和數據存儲在這個目錄下。

       3、所有節點新建jvm.config文件,配置JVM參數,內容如下:

-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M

       4、所有節點創建config.properties文件,這裏需要注意的是master節點與slave節點的內容不一樣。

       (1)master節點即coordinator節點的配置如下:

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8089
query.max-memory=4GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://cdh-master:8089

       (2)slave節點即worker節點的配置如下:

coordinator=false
http-server.http.port=8089
query.max-memory=4GB
query.max-memory-per-node=1GB
discovery.uri=http://cdh-master:8089

       其中,coordinator指定是否將Presto實例作爲一個coordinator(接收來自客戶端的查詢情切管理每個查詢的執行過程)。node-scheduler.include-coordinator指是否允許在coordinator服務中進行調度工作。對於大型的集羣,在一個節點上的Presto server即作爲coordinator又作爲worker將會降低查詢性能。因爲如果一個服務器作爲worker使用,那麼大部分的資源都不會被worker佔用,那麼就不會有足夠的資源進行關鍵任務調度、管理和監控查詢執行。http-server.http.port即指定HTTP server的端口。Presto使用HTTP進行內部和外部的所有通訊。discovery.uri是Discoveryserver的URI。由於啓用了Prestocoordinator內嵌的Discovery服務,因此這個uri就是Prestocoordinator的uri。

       5、所有節點新建日誌文件log.properties,內容如下:

com.facebook.presto=INFO

四、Presto服務的啓動和停止

# 啓動
/opt/cloudera/parcels/presto/bin/launcher start
# 停止
/opt/cloudera/parcels/presto/bin/launcher stop

       關於Presto的更多命令,可以通過如下命令查看:

/opt/cloudera/parcels/presto/bin/launcher --help

五、Presto集成Hive

       1、在所有節點的/opt/cloudera/parcels/presto/etc目錄下新建catalog目錄:

mkdir catalog

       2、所有節點在catalog目錄下創建hive.properties,該文件與Hive服務集成使用,內容如下:

connector.name=hive-hadoop2
hive.metastore.uri=thrift://cdh-master:9083

       3、修改presto的jvm.config,在配置文件中增加Presto訪問HDFS的用戶名,如下所示:

-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
-DHADOOP_USER_NAME=presto

       4、上述用戶爲presto,需要新建此用戶。

useradd presto

       5、重啓presto服務

/opt/cloudera/parcels/presto/bin/launcher restart

六、測試

       1、這裏測試Presto與Hive的集成使用Presto提供的Presto CLI,該CLI是一個可執行的JAR文件,首先需要下載該文件:

https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.230/presto-cli-0.230-executable.jar

       2、將下載好的文件上傳到/opt/cloudera/parcels/presto/bin目錄下並修改文件名稱:

mv presto-cli-0.230-executable.jar presto

       3、賦權

chmod +x presto

       4、執行如下命令訪問Hive

./presto --server cdh-master:8089 --catalog=hive --schema=databaseName

       5、監控界面可以看到相關信息

 

      至此,本文就結束了,你們在此過程中遇到了什麼問題,歡迎留言,讓我看看你們都遇到了哪些問題~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章