Presto介紹,使用及安裝部署

1.Presto是什么

Presto通過使用分布式查詢奔坟,可以快速高效的完成海量數(shù)據(jù)的查詢搭盾。如果你需要處理TB或者PB級別的數(shù)據(jù),那么你可能更希望借助于Hadoop和HDFS來完成這些數(shù)據(jù)的處理鸯隅。作為Hive和Pig(Hive和Pig都是通過MapReduce的管道流來完成HDFS數(shù)據(jù)的查詢)的替代者,Presto不僅可以訪問HDFS蝌以,也可以操作不同的數(shù)據(jù)源,包括:RDBMS和其他的數(shù)據(jù)源(例如:Cassandra)跟畅。

Presto被設(shè)計為數(shù)據(jù)倉庫和數(shù)據(jù)分析產(chǎn)品:數(shù)據(jù)分析、大規(guī)模數(shù)據(jù)聚集和生成報表晤硕。這些工作經(jīng)常通常被認為是線上分析處理操作

2.Presto安裝部署

安裝程序下載地址presto-server-0.167.tar.gz

Presto需要JDK8u92以上版本才可以運行

Presto需要一個用于存儲日志、本地元數(shù)據(jù)等的數(shù)據(jù)目錄舞箍。 建議在安裝目錄的外面創(chuàng)建一個數(shù)據(jù)目錄皆疹。這樣方便Presto進行升級

2.1配置Presto

在安裝目錄中創(chuàng)建一個etc目錄。 在這個etc目錄中放入以下配置信息:

節(jié)點屬性:每個節(jié)點的環(huán)境配置信息(node.properties)

JVM 配置:JVM的命令行選項(jvm.config)

配置屬性:Presto server的配置信息(config.properties)

Catalog屬性:configuration forConnectors(數(shù)據(jù)源)的配置信息

2.1.1 節(jié)點配置

節(jié)點屬性配置文件:etc/node.properties包含針對于每個節(jié)點的特定的配置信息。 一個節(jié)點就是在一臺機器上安裝的Presto實例晃酒。 這份配置文件一般情況下是在Presto第一次安裝的時候,由部署系統(tǒng)創(chuàng)建的贝次。 一個etc/node.properties配置文件至少包含如下配置信息:

node.environment=productionnode.id=ffffffff-ffff-ffff-ffff-ffffffffffffnode.data-dir=/var/presto/data

針對上面的配置信息描述如下:

node.environment: 集群名稱彰导。所有在同一個集群中的Presto節(jié)點必須擁有相同的集群名稱。

node.id: 每個Presto節(jié)點的唯一標(biāo)示位谋。每個節(jié)點的node.id都必須是唯一的。在Presto進行重啟或者升級過程中每個節(jié)點的node.id必須保持不變掏父。如果在一個節(jié)點上安裝多個Presto實例(例如:在同一臺機器上安裝多個Presto節(jié)點),那么每個Presto節(jié)點必須擁有唯一的node.id赊淑。

node.data-dir: 數(shù)據(jù)存儲目錄的位置(操作系統(tǒng)上的路徑)。Presto將會把日期和數(shù)據(jù)存儲在這個目錄下膏燃。

2.1.2 JVM配置

JVM配置文件,etc/jvm.config等龙, 包含一系列在啟動JVM的時候需要使用的命令行選項。這份配置文件的格式是:一系列的選項蛛砰,每行配置一個單獨的選項。由于這些選項不在shell命令中使用泥畅。 因此即使將每個選項通過空格或者其他的分隔符分開,java程序也不會將這些選項分開位仁,而是作為一個命令行選項處理方椎。(就像下面例子中的OnOutOfMemoryError選項)。

一個典型的etc/jvm.config配置文件如下:

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

由于OutOfMemoryError將會導(dǎo)致JVM處于不一致狀態(tài)棠众,所以遇到這種錯誤的時候我們一般的處理措施就是將dump headp中的信息(用于debugging)有决,然后強制終止進程空盼。

Presto會將查詢編譯成字節(jié)碼文件,因此Presto會生成很多class揽趾,因此我們我們應(yīng)該增大Perm區(qū)的大小(在Perm中主要存儲class)并且要允許Jvm class unloading但骨。

2.1.3 配置屬性

Presto的配置文件:etc/config.properties包含了Presto server的所有配置信息。 每個Presto server既是一個coordinator也是一個worker奔缠。 但是在大型集群中校哎,處于性能考慮,建議單獨用一臺機器作為 coordinator闷哆。

一個coordinator的etc/config.properties應(yīng)該至少包含以下信息:

coordinator=truenode-scheduler.include-coordinator=falsehttp-server.http.port=8080task.max-memory=1GBdiscovery-server.enabled=truediscovery.uri=http://example.net:8080

以下是最基本的worker配置:

coordinator=falsehttp-server.http.port=8080query.max-memory=50GBquery.max-memory-per-node=1GBdiscovery.uri=http://example.net:8080

但是如果你用一臺機器進行測試,那么這一臺機器將會即作為coordinator抱怔,也作為worker。配置文件將會如下所示:

coordinator=truenode-scheduler.include-coordinator=truehttp-server.http.port=8080task.max-memory=1GBdiscovery-server.enabled=truediscovery.uri=http://example.net:8080

對配置項解釋如下:

coordinator:指定是否運維Presto實例作為一個coordinator(接收來自客戶端的查詢情切管理每個查詢的執(zhí)行過程)屈留。

node-scheduler.include-coordinator:是否允許在coordinator服務(wù)中進行調(diào)度工作测蘑。對于大型的集群,在一個節(jié)點上的Presto server即作為coordinator又作為worke將會降低查詢性能碳胳。因為如果一個服務(wù)器作為worker使用,那么大部分的資源都不會被worker占用挨约,那么就不會有足夠的資源進行關(guān)鍵任務(wù)調(diào)度、管理和監(jiān)控查詢執(zhí)行诫惭。

http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP進行內(nèi)部和外部的所有通訊贝攒。

task.max-memory=1GB:一個單獨的任務(wù)使用的最大內(nèi)存 (一個查詢計劃的某個執(zhí)行部分會在一個特定的節(jié)點上執(zhí)行)。 這個配置參數(shù)限制的GROUP BY語句中的Group的數(shù)目、JOIN關(guān)聯(lián)中的右關(guān)聯(lián)表的大小荒适、ORDER BY語句中的行數(shù)和一個窗口函數(shù)中處理的行數(shù)开镣。 該參數(shù)應(yīng)該根據(jù)并發(fā)查詢的數(shù)量和查詢的復(fù)雜度進行調(diào)整。如果該參數(shù)設(shè)置的太低邪财,很多查詢將不能執(zhí)行;但是如果設(shè)置的太高將會導(dǎo)致JVM把內(nèi)存耗光树埠。

discovery-server.enabled:Presto 通過Discovery 服務(wù)來找到集群中所有的節(jié)點。為了能夠找到集群中所有的節(jié)點怎憋,每一個Presto實例都會在啟動的時候?qū)⒆约鹤缘絛iscovery服務(wù)。Presto為了簡化部署绊袋,并且也不想再增加一個新的服務(wù)進程,Presto coordinator 可以運行一個內(nèi)嵌在coordinator 里面的Discovery 服務(wù)癌别。這個內(nèi)嵌的Discovery 服務(wù)和Presto共享HTTP server并且使用同樣的端口。

discovery.uri:Discovery server的URI展姐。由于啟用了Presto coordinator內(nèi)嵌的Discovery 服務(wù),因此這個uri就是Presto coordinator的uri诞仓。修改example.net:8080,根據(jù)你的實際環(huán)境設(shè)置該URI墅拭。注意:這個URI一定不能以“/“結(jié)尾。集群中worker節(jié)點配置的URL地址是你的coordinator的地址

2.1.4 日志配置

日志配置文件:etc/log.properties舒憾。在這個配置文件中允許你根據(jù)不同的日志結(jié)構(gòu)設(shè)置不同的日志級別。每個logger都有一個名字(通常是使用logger的類的全標(biāo)示類名). Loggers通過名字中的“.“來表示層級和集成關(guān)系镀迂。 (像java里面的包). 如下面的log配置信息:

com.facebook.presto=INFO

2.1.5 Catalog屬性

Presto通過connectors訪問數(shù)據(jù)。這些connectors掛載在catalogs上探遵。 connector 可以提供一個catalog中所有的schema和表窟赏。 例如: Hive connector 將每個hive的database都映射成為一個schema涯穷, 所以如果hive connector掛載到了名為hive的catalog, 并且在hive的web有一張名為clicks的表拷况, 那么在Presto中可以通過hive.web.clicks來訪問這張表。

通過在etc/catalog目錄下創(chuàng)建catalog屬性文件來完成catalogs的注冊赚瘦。

2.1.5.1 JMX配置

可以先創(chuàng)建一個etc/catalog/jmx.properties文件,文件中的內(nèi)容如下起意,完成在jmxcatalog上掛載一個jmxconnector:

connector.name=jmx

2.1.5.2 hive配置

connector.name=hive-hadoop2hive.metastore.uri=thrift://dpnode03:9083hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xmlhive.allow-drop-table=truehive.storage-format=PARQUET

Connectorhttps://prestodb.io/docs/current/connector.htmlConnector連接器官方文檔

3.worker節(jié)點配置

worker節(jié)點配置和上面其他的配置基本一樣服爷,只需要將config.properties稍作修改

coordinator=falsenode-scheduler.include-coordinator=truehttp-server.http.port=5050query.max-memory=8GBquery.max-memory-per-node=1GBdiscovery-server.enabled=truediscovery.uri=http://dpnode03:5050

4.集群安裝

集群安裝,只需要將worker節(jié)點仍源,復(fù)制到其他節(jié)點舔涎,然后啟動就可以了

5.集群啟動

Presto沒有提供start all這種命令,所以需要每一臺機器手動啟動亡嫌,你也可以自己寫一個啟動腳本,啟動整個集群和停止整個集群

在安裝目錄的bin/launcher文件挟冠,就是啟動腳本。Presto可以使用如下命令作為一個后臺進程啟動:

bin/launcher start

另外知染,也可以在前臺運行, 日志和相關(guān)輸出將會寫入stdout/stderr(可以使用類似daemontools的工具捕捉這兩個數(shù)據(jù)流):

bin/launcher run

運行bin/launcher–help控淡,Presto將會列出支持的命令和命令行選項。 另外可以通過運行bin/launcher–verbose命令掺炭,來調(diào)試安裝是否正確。

啟動完之后涧狮,日志將會寫在var/log目錄下么夫,該目錄下有如下文件:

launcher.log: 這個日志文件由launcher創(chuàng)建肤视,并且server的stdout和stderr都被重定向到了這個日志文件中。 這份日志文件中只會有很少的信息钢颂,包括:

在server日志系統(tǒng)初始化的時候產(chǎn)生的日志和JVM產(chǎn)生的診斷和測試信息。

server.log: 這個是Presto使用的主要日志文件殊鞭。一般情況下,該文件中將會包括server初始化失敗時產(chǎn)生的相關(guān)信息操灿。這份文件會被自動輪轉(zhuǎn)和壓縮。

http-request.log: 這是HTTP請求的日志文件趾盐,包括server收到的每個HTTP請求信息,這份文件會被自動輪轉(zhuǎn)和壓縮救鲤。

備注:如果你的機器上已經(jīng)安裝了JDK6或者7的版本,你需要在launcher腳本中添加你的JAVA_HOME

6.命令行接口

命令行接口

Presto CLI為用戶提供了一個用于查詢的可交互終端窗口本缠。CLI是一個可執(zhí)行JAR文件, 這也就意味著你可以像UNIX終端窗口一樣來使用CLI。

下載presto-cli-0.100-executable.jar丹锹,重名名為?presto?, 使用?chmod?+x?命令設(shè)置可執(zhí)行權(quán)限楣黍,然后執(zhí)行:

./presto --server localhost:8080 --catalog hive --schema default

使用?--help?選項運行CLI,可以看到可用的選項阶女。

默認情況下,查詢的結(jié)果是分頁的张肾。而這種分頁的實現(xiàn)不需要你去編寫什么代碼,而是通過配置一系列的配置信息來實現(xiàn)的吞瞪。你也可以通過將環(huán)境變量:PRESTO_PAGER 設(shè)置為你自己的程序名稱來自己實現(xiàn)分頁或者也可以PRESTO_PAGER 的值設(shè)置為空,從而禁止分頁


WEB監(jiān)控界面

http://:<配置的端口>/


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芍秆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妖啥,更是在濱河造成了極大的恐慌,老刑警劉巖荆虱,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诉位,居然都是意外死亡,警方通過查閱死者的電腦和手機菜枷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岳瞭,“玉大人,你說我怎么就攤上這事瞳筏。” “怎么了乏矾?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵迁杨,是天一觀的道長凄硼。 經(jīng)常有香客問我,道長摊沉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任说墨,我火速辦了婚禮,結(jié)果婚禮上尼斧,老公的妹妹穿的比我還像新娘。我一直安慰自己棺棵,他們只是感情好熄捍,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布母怜。 她就那樣靜靜地躺著,像睡著了一般苹熏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轨域,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音疙挺,去河邊找鬼。 笑死铐然,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的搀暑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼自点,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了桂敛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤术唬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粗仓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡借浊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚂斤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡召噩,死狀恐怖母赵,靈堂內(nèi)的尸體忽然破棺而出具滴,到底是詐尸還是另有隱情,我是刑警寧澤构韵,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站疲恢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏显拳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一杂数、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揍移,春花似錦、人聲如沸那伐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畅形。三九已至诉探,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阵具,已是汗流浹背定铜。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揣炕,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓畸陡,卻偏偏與公主長得像虽填,于是被迫代替她去往敵國和親曹动。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容