Presto是什麼?
Presto是一個開源的分佈式SQL查詢引擎,適用於交互式分析查詢,數據量支持GB到PB字節。
Presto的設計和編寫完全是爲了解決像Facebook這樣規模的商業數據倉庫的交互式分析和處理速度的問題。
它可以做什麼?
Presto支持在線數據查詢,包括Hive, Cassandra, 關係數據庫以及專有數據存儲。 一條Presto查詢可以將多個數據源的數據進行合併,可以跨越整個組織進行分析。
Presto以分析師的需求作爲目標,他們期望響應時間小於1秒到幾分鐘。 Presto終結了數據分析的兩難選擇,要麼使用速度快的昂貴的商業方案,要麼使用消耗大量硬件的慢速的“免費”方案。
TDH中和presto一樣的組件叫做inceptor,是星環科技的sql查詢引擎
由於inceptor上層程序連接,時不時會掉線,針對這個問題,現在通過presto進行數據查詢
以下給出presto的配置對接步驟:
需要的包如下:
jdk1.8.0_241
presto-server-0.173.tar.gz
presto-cli-0.161-executable.jar
1.各節點: 創建 presto 用戶,設置密碼。
useradd presto passwd presto mkdir -p /opt/presto/data chown -R presto:presto /opt/presto/data
2.修改用戶資源(root 用戶)
各節點:修改用戶可用資源配置。主要涉及: 用戶最大可用的進程數、進程
能夠打開文件的最大數目。
vi /etc/security/limits.conf
* soft noproc 10240 * hard noproc 10240 * soft nofile 10240 * hard nofile 10240
不同服務器的文件名有差異,本文以 90-nproc.conf 爲例。
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 10240
配置完成後,需重新登陸服務器查驗。
su - presto ulimit -u ulimit -n
3.準備程序
各節點: 上傳 JDK 和 Presto 程序包,並解壓。
tar -vxf jdk-8u111-linux-x64.tar.gz -C /opt/presto
tar -vxf presto-server-0.173.tar.gz -C /opt/presto
4.配置環境變量
各節點: 配置 presto 用戶的 Java 環境變量。
vi /home/presto/.bash_profile
export JAVA_HOME=/opt/presto/jdk1.8.0_111
export PATH=$PATH:$JAVA_HOME/bin
source /home/presto/.bash_profile
java -version
配置 Presto
5.配置 JVM
各節點: 新建 presto-server-0.173/etc 目錄, 在該目錄下新建、配置 jvm.conf
ig 文件。
mkdir /opt/presto/presto-server-0.173/etc
vi /opt/presto/presto-server-0.173/etc/jvm.config
-server -Xmx32G -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -DHADOOP_USER_NAME=hdfs
6.配置日誌級別
各節點: 新建、 配置 log.propertis。
vi /opt/presto/presto-server-0.173/etc/log.propertis
com.facebook.presto=INFO
7.配置節點屬性
各節點: 新建、配置 node.properties(獲取 node.id, 每個節點的 node.id 須不
一樣)。
uuidgen
vi /opt/presto/presto-server-0.173/etc/node.properties
# presto 名稱, 同一集羣必須相同 node.environment=production # presto 節點唯一標識, 執行命令 uuidgen 讀取 node.id=ffffffff-ffff-ffff-ffff-ffffffffffff # 日誌目錄、 計算臨時存儲目錄, presto 用戶有讀寫權限 node.data-dir=/opt/presto/data
配置屬性
各節點: 新建、配置 config.properties。
vi /opt/presto/presto-server-0.173/etc/config.properties
coordinator 節點
coordinator=true # 是否複用爲 worker 節點, false 爲否。默認爲 false node-scheduler.include-coordinator=false # 本節點 presto 服務端口號 http-server.http.port=8888 # query.max-memory-per-node * worker 節點的個數 query.max-memory=54GB query.max-memory-per-node=18GB discovery-server.enabled=true # 本節點、 端口號 discovery.uri=http://coordinator 節點 ip:8888
worker 節點
coordinator=false # 本節點 presto 服務端口號 http-server.http.port=8888 # query.max-memory-per-node * worker 節點的個數 query.max-memory=54GB query.max-memory-per-node=18GB # Presto 中 coordinator 所在節點,以及其端口號 discovery.uri=http://coordinator 節點 ip:8888
8.配置 hive 連接信息
各節點: 創建 catalog 子目錄, 在該目錄新建、 配置 hive.properties。
mkdir /opt/presto/presto-server-0.173/etc/catalog
vi /opt/presto/presto-server-0.173/etc/catalog/hive.properties
1 connector.name=hive-hadoop2 2 hive.metastore.uri=thrift://198.28.1.82:9083 3 hive.config.resources=/opt/presto/core-site.xml,/opt/presto/hdfs-site.xml 4 5 hive.metastore.authentication.type=KERBEROS 6 hive.metastore.service.principal=hive/ht-28-tdh82@TDH 7 hive.metastore.client.principal=hive@TDH 8 hive.metastore.client.keytab=/opt/presto/inceptor.keytab 9 10 hive.hdfs.authentication.type=KERBEROS 11 #hive.hdfs.impersonation.enable=true 12 hive.hdfs.presto.principal= hive@TDH 13 hive.hdfs.presto.keytab=/opt/presto/inceptor.keytab
注意hive.metastore.service.principal=hive/ht-28-tdh82@TDH 一定要加上hosname,這是與開源hive不同的地方
注意#hive.hdfs.impersonation.enable=true 需要註釋這行,否則會有錯誤:
以上就是presto的配置流程
各節點:啓動 Presto 服務。
/opt/presto/presto-server-0.173/bin/launcher start
通過 Presto 客戶端,訪問 Hive 數據進行驗證。
上傳客戶端,授權。 示例如下,其中 default 爲數據庫名稱。
chmod +x presto-cli-0.161-executable.jar
./presto-cli-0.161-executable.jar --server coordinator 節點 ip:8888 --catalog hive --schema default
執行該語句後, 可在 Presto Shell 中執行:
presto> show tables;