生活随笔
收集整理的這篇文章主要介紹了
presto集群安装
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
presto集群安裝 整合hive
張映?發表于?2019-11-07
分類目錄:?hadoop/spark/scala
標簽:hive,?presto
Presto是一個運行在多臺服務器上的分布式系統。 完整安裝包括一個coordinator(調度節點)和多個worker。 由客戶端提交查詢,從Presto命令行CLI提交到coordinator。 coordinator進行解析,分析并執行查詢計劃,然后分發處理隊列到worker中。
Presto通過使用分布式查詢,可以快速高效的完成海量數據的查詢。作為Hive和Pig的替代者,Presto不僅能訪問HDFS,也能訪問不同的數據源,包括:RDBMS和其他數據源(如Cassandra)。雖然Presto可以解析SQL,但它不是一個標準的數據庫。不是MySQL、PostgreSQL或者Oracle的代替品,也不能用來處理在線事務(OLTP)
?
一,presto與hive對比
優點
1.Presto與hive對比,都能夠處理PB級別的海量數據分析,但Presto是基于內存運算,減少沒必要的硬盤IO,所以更快。
2.能夠連接多個數據源,跨數據源連表查,如從hive查詢大量網站訪問記錄,然后從mysql中匹配出設備信息。
3.部署也比hive簡單,因為hive是基于HDFS的,需要先部署HDFS。
缺點
1.雖然能夠處理PB級別的海量數據分析,但不是代表Presto把PB級別都放在內存中計算的。而是根據場景,如count,avg等聚合運算,是邊讀數據邊計算,再清內存,再讀數據再計算,這種耗的內存并不高。但是連表查,就可能產生大量的臨時數據,因此速度會變慢,反而hive此時會更擅長。
2.為了達到實時查詢,可能會想到用它直連MySql來操作查詢,這效率并不會提升,瓶頸依然在MySql,此時還引入網絡瓶頸,所以會比原本直接操作數據庫要慢。
二,集群服務器說明
bigserver1(10.0.40.237):調度節點(coordinator)
bigserver2(10.0.40.222):worker節點
bigserver3(10.0.40.193):worker節點
Coordinator服務器是用來解析語句,執行計劃分析和管理Presto的worker結點。Presto安裝必須有一個Coordinator和多個worker。如果用于開發環境和測試,則一個Presto實例可以同時擔任這兩個角色。
Coordinator跟蹤每個work的活動情況并協調查詢語句的執行。 Coordinator為每個查詢建立模型,模型包含多個stage,每個stage再轉為task分發到不同的worker上執行。
Worker是負責執行任務和處理數據。Worker從connector獲取數據。Worker之間會交換中間數據。Coordinator是負責從Worker獲取結果并返回最終結果給client。
當Worker啟動時,會廣播自己去發現 Coordinator,并告知 Coordinator它是可用,隨時可以接受task。
Coordinator與Worker通信是通過REST API。
三,下載presto
查看復制打印?
#?wget?https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.227/presto-server-0.227.tar.gz??#?tar?zxvf?presto-server-0.227.tar.gz??#?mv?presto-server-0.227?/bigdata??
四,調度節點presto配置
1,配置目錄介紹
查看復制打印?
[root@bigserver1?presto-server-0.227]#?mkdir?etc?//創建配置目錄??[root@bigserver1?etc]#?tree??.??├──?catalog??│???├──?hive.properties??//連接hive??│???└──?jmx.properties???//連接jmx??├──?config.properties????//Presto?server的配置信息??├──?jvm.config???????????//JVM的命令行選項??├──?log.properties???????//日志配置信息??└──?node.properties??????//每個節點的環境配置信息??
2,調度節點node.properties
查看復制打印?
[root@bigserver1?etc]#?mkdir?/bigdata/presto-server-0.227/data??[root@bigserver1?etc]#?cat?node.properties??node.environment=production??node.id=coordinator1??node.data-dir=/bigdata/presto-server-0.227/data??
node.environment:?環境名字,Presto集群中的結點的環境名字都必須是一樣的。
node.id:?唯一標識,每個結點的標識都必須是為一的。就算重啟或升級Presto都必須還保持原來的標識。
node.data-dir:?數據目錄,Presto用它來保存log和其他數據。
3,調度節點jvm.config
[root@bigserver1?etc]#?cat?jvm.config??-server??-Xmx16G??-XX:+UseG1GC??-XX:G1HeapRegionSize=32M??-XX:+UseGCOverheadLimit??-XX:+ExplicitGCInvokesConcurrent??-XX:+HeapDumpOnOutOfMemoryError??-XX:+ExitOnOutOfMemoryError??-XX:OnOutOfMemoryError=kill?-9?%p??-XX:ReservedCodeCacheSize=150M??
這份配置文件的格式是:一系列的選項,每行配置一個單獨的選項。由于這些選項不在shell命令中使用。 因此即使將每個選項通過空格或者其他的分隔符分開,java程序也不會將這些選項分開,而是作為一個命令行選項處理
4,調度節點config.properties
查看復制打印?
[root@bigserver1?etc]#?cat?config.properties??coordinator=true??node-scheduler.include-coordinator=false??http-server.http.port=38080??query.max-memory=3GB??query.max-memory-per-node=1GB??query.max-total-memory-per-node=2GB??discovery-server.enabled=true??discovery.uri=http://bigserver1:38080??
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:?查詢能用到的最大單結點內存
query.max-total-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錯誤。
query.max-memory-per-node必須小于query.max-total-memory-per-node,query.max-total-memory-per-node 與memory.heap-headroom-per-node 之和必須小于 jvm max memory .也就是jvm.config 中配置的-Xmx
5,調度節點log.properties
[root@bigserver1?etc]#?cat?log.properties??com.facebook.presto=INFO??
日志等級有四個,DEBUG,INFO,WARN,ERROR
6,調度節點jmx.properties
[root@bigserver1?etc]#?cat?catalog/jmx.properties??connector.name=jmx??
7,調度節點hive.properties
查看復制打印?
[root@bigserver1?etc]#?cat?catalog/hive.properties??connector.name=hive-hadoop2??hive.metastore.uri=thrift://bigserver1:9083??hive.config.resources=/bigdata/hadoop/etc/hadoop/core-site.xml,/bigdata/hadoop/etc/hadoop/hdfs-site.xml??hive.allow-drop-table=true??
6和7的connector.name不是亂寫的,不然就會報java.lang.IllegalArgumentException: No factory for connector
8,將調度節點presto復制到worker節點
#?scp?-r?presto-server-0.227?root@bigserver2:/bigdata??#?scp?-r?presto-server-0.227?root@bigserver3:/bigdata??
五,worker節點presto配置
大部分的配置根調度節點一樣,下面只例舉出不同的部分。
1,worker節點config.properties
查看復制打印?
[root@bigserver2?etc]#?cat?config.properties??coordinator=false??http-server.http.port=38080??query.max-memory=3GB??query.max-memory-per-node=1GB??discovery.uri=http://bigserver1:38080??
2,worker節點node.properties
[root@bigserver2?etc]#?cat?node.properties??node.environment=production??node.id=worker1??node.data-dir=/bigdata/presto-server-0.227/data??
每個presto節點的node.id都是不一樣的,這一點要注意
六,設置環境變量,并啟動
1,設置環境變量
查看復制打印?
#?echo?"export?PRESTO_HOME=/bigdata/presto-server-0.227"?>>?~/.bashrc??#?echo?"export?PATH=$PRESTO_HOME/bin:$PATH"?>>?~/.bashrc??#?source?~/.bashrc??
2,每個presto節點都要啟動
查看復制打印?
#?launcher?start?//啟動??#?laucher?status?//查看狀態??#?laucher?stop?//停止????#?jps??6065?DFSZKFailoverController??5268?QuorumPeerMain??17300?HMaster??26484?PrestoServer?//每個presto節點都有??4869?JournalNode??5302?Kafka??5126?Jps??4652?NameNode??5150?ResourceManager??
啟動后,web監控就要以看到了
七,Presto命令行工具
查看復制打印?
#?cd?$PRESTO_HOME/bin??#?wget?-O?presto??https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.227/presto-cli-0.227-executable.jar????#?nohup?hive?--service?metastore?2>&1?>>?/var/log.log?&??//想要查詢連接到hive中查詢數據還需要先啟動hive的metastore????[root@bigserver1?etc]#?presto?--server?bigserver1:38080?--catalog?hive?--schema?default?--debug??presto:default>?show?tables;???Table??-------??(0?rows)????Query?20191107_073229_00007_zn7nx,?FINISHED,?3?nodes????http://bigserver1:38080/ui/query.html?20191107_073229_00007_zn7nx????Splits:?36?total,?19?done?(52.78%)??CPU?Time:?0.0s?total,?????0?rows/s,?????0B/s,?15%?active??Per?Node:?0.0?parallelism,?????0?rows/s,?????0B/s??Parallelism:?0.0??Peak?Memory:?0B??0:01?[0?rows,?0B]?[0?rows/s,?0B/s]????presto:default>?use?tanktest;??USE??
--server連接presto調度節點
--catalog連接的數據源
--schema可以理解成數據庫
八,presto與hive簡單對比
從測試的結果來看,presto比hive要快4-5倍,個人覺得內存夠的話,能達到8-10倍,上面的presto集群,是在測試環境,機器是退休的辦公用公式機
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的presto集群安装的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。