Presto集成到Ambari介紹

在Ambari中集成Presto,能在Ambari UI中方便地安裝部署Presto到集群,并能方便修改Presto相關(guān)配置。

Presto官方介紹文檔

英文http://teradata.github.io/presto/docs/current/index.html

中文http://prestodb-china.com/docs/current/index.html#

ambari-presto-service的官方文檔

https://prestodb.io/ambari-presto-service/

Presto在京東的實(shí)踐

Presto在美團(tuán)的應(yīng)用

Presto使用

前提準(zhǔn)備

Red Hat Enterprise Linux6.x 64-bit或者CentOS

已安裝Ambari,并滿足Ambari相關(guān)要求.

Presto 0.148版后需要安裝Oracle JDK 1.8u60+,0.148之前版本需要JDK 1.8u40+。理解JDK配置了解Presto和Ambari JDK之間的關(guān)系。

禁用requiretty。在Red Hat Enterprise Linux6.x上能通過編輯/etc/sudoers文件,注釋掉Defaults requiretty。

節(jié)點(diǎn)已安裝wget。

添加Presto Service

下載文件

官網(wǎng)下載Ambari集成包

確保Ambari已安裝好HDP2.3,在ambari-server運(yùn)行的服務(wù)器上創(chuàng)建如下目錄/var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO

$ mkdir /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO$ cd /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO

將集成文件ambari-presto-1.2.tar.gz放于/var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO目錄下。此處下載Teradata版本,或者此處下載0.148版集成包,上傳集成文件到集群中,并解壓:

$ tar -xvf /path/to/integration/package/ambari-presto-1.1.tar.gz -C /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO$ mv /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO/ambari-presto-1.1/* /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO$ rm -rf /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO/ambari-presto-1.1

最后,將所有集成文件添加可執(zhí)行權(quán)限,并重啟Ambari-server。

$ chmod -R +x /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO/*$ ambari-server restart

上述包是默認(rèn)集成presto0.161版,這里可修改到最新版本,并配置下載最新的rpm和cli包。

#修改presto版本$ cd/var/lib/ambari-server/resources/stacks/HDP/2.5/services/PRESTO$ makedistVERSION=0.168

#修改下載包的對(duì)應(yīng)版本和路徑$ cd/var/lib/ambari-server/resources/stacks/HDP/2.5/services/PRESTO/package/scripts修改:download.ini[download]presto_rpm_url=http://search.maven.org/remotecontent?filepath=com/facebook/presto/presto-server-rpm/0.168/presto-server-rpm-0.168.rpmpresto_cli_url=http://search.maven.org/remotecontent?filepath=com/facebook/presto/presto-cli/0.168/presto-cli-0.168-executable.jar為:[download]presto_rpm_url=http://dpnode08/presto/0.168/presto-server-rpm-0.168.rpmpresto_cli_url=http://dpnode08/presto/0.168/presto-cli-0.168-executable.jar

重啟Ambari server后,在瀏覽器UI界面,點(diǎn)擊Add Service,根據(jù)指示安裝Presto。

添加服務(wù)

選擇主節(jié)點(diǎn)安裝Coordinator

分配Worker節(jié)點(diǎn)和客戶端節(jié)點(diǎn)

自定義配置

自定義配置,主要配置discovery-uri.

主要配置信息有:

#配置Connector{'hive':['connector.name=hive-hadoop2','hive.metastore.uri=thrift://dpnode03:9083','hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml','hive.allow-drop-table=true','hive.storage-format=ORC'],'jmx':['connector.name=jmx']}?#配置JVM-server-Xmx16G-XX:+UseConcMarkSweepGC-XX:+ExplicitGCInvokesConcurrent-XX:+CMSClassUnloadingEnabled-XX:+AggressiveOpts-XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError=kill-9%p-XX:ReservedCodeCacheSize=150M?#discovery.urihttp://dpnode02:8285

啟動(dòng)安裝

啟動(dòng)安裝

安裝完成

運(yùn)行客戶端

$ presto-client

執(zhí)行sql語句,然后在URI上查看相關(guān)運(yùn)行情況。

訪問URI

/var/log/presto 日志/usr/lib/presto 安裝目錄/var/lib/presto 數(shù)據(jù)目錄/etc/presto ? ? 配置文件

拓?fù)?/p>

以下兩步可在群集中的節(jié)點(diǎn)之間分配Presto進(jìn)程。一旦選擇了Presto的拓?fù)洳⑼瓿砂惭b過程,就不可能修改該拓?fù)洹?/p>

Presto由協(xié)調(diào)器coordinator和工作進(jìn)程worker組成。同一代碼運(yùn)行所有節(jié)點(diǎn),因?yàn)闉閣orker和coordinator安裝了相同的PrestoRPM包。每個(gè)節(jié)點(diǎn)上的配置決定了特定節(jié)點(diǎn)的行為方式。 Presto可以以偽分布式模式運(yùn)行,其中一個(gè)節(jié)點(diǎn)上的單個(gè)Presto進(jìn)程充當(dāng)coordinator和worker,或者可以以分布式模式運(yùn)行,其中Presto coordinator在一個(gè)節(jié)點(diǎn)上運(yùn)行,而Presto worker在其他節(jié)點(diǎn)上運(yùn)行。

Presto的客戶端組件是presto-cli可執(zhí)行文件JAR。您應(yīng)該將其放置在您希望通過此命令行訪問Presto服務(wù)器的所有節(jié)點(diǎn)上。 presto-cli可執(zhí)行文件JAR不需要與工作者或協(xié)調(diào)器共同定位,它可以自己安裝。安裝后,可以在/usr/ lib/presto/bin/presto-cli找到CLI。

不要將worker放置在與coordinator相同的節(jié)點(diǎn)上。這樣的嘗試將失敗安裝,因?yàn)榧绍浖L試安裝RPM兩次。為了安排Presto coordinator的工作,有效地將過程變成雙工/協(xié)調(diào)器,請(qǐng)?jiān)谂渲弥袉⒂胣ode-scheduler.include-coordinator。

偽分布式

在一個(gè)節(jié)點(diǎn)上安裝Presto coordinator,不安裝其他的worker。在配置頁面啟用node-scheduler.include-coordinator

分布式

在一個(gè)節(jié)點(diǎn)上安裝Presto coordinator,在其他若干節(jié)點(diǎn)(非coordinator節(jié)點(diǎn))上安裝Presto worker。

Presto配置

沒有缺省值并且需要輸入的一個(gè)配置屬性是discovery.uri。預(yù)期值為http://:8285。注意,它是http而不是https,端口是8285.如果更改http-server.http.port的值,請(qǐng)確保在disovery.uri中進(jìn)行相應(yīng)更改。

一些最常用的屬性顯示在“設(shè)置”選項(xiàng)卡中(默認(rèn)情況下是打開的)。在“高級(jí)”選項(xiàng)卡中,通過打開正確的下拉列表并指定鍵和值來設(shè)置自定義屬性。請(qǐng)注意,指定Presto無法識(shí)別的屬性將導(dǎo)致安裝失敗,或者部分或所有服務(wù)器無法啟動(dòng)。

安裝后,通過選擇Presto服務(wù),然后選擇Configs選項(xiàng)卡,更改Presto配置。更改配置選項(xiàng)后,請(qǐng)確保重新啟動(dòng)Presto以使更改生效。

如果您運(yùn)行的Ambari版本早于2.1(版本號(hào)小于2.1),則在設(shè)置以下內(nèi)存相關(guān)配置時(shí)必須忽略內(nèi)存后綴(GB):query.max-memory-per-node和query.max-memory。對(duì)于這兩個(gè)屬性,內(nèi)存后綴由集成軟件自動(dòng)添加。對(duì)于您添加為自定義屬性的所有其他內(nèi)存相關(guān)配置,在指定值時(shí)必須包括內(nèi)存后綴。

添加刪除Connectors

要添加連接器,請(qǐng)修改connectors.to.add屬性,其格式如下:{'connector1':['key1 = value1','key2 = value2'等],'connector2':['key3 = value3 ','key4 = value4']等}。請(qǐng)注意每個(gè)單個(gè)元素周圍的單引號(hào)。此屬性僅添加連接器,不會(huì)刪除連接器。因此,如果添加connector1,保存配置,重新啟動(dòng)Presto,然后為此屬性指定{},connector1不會(huì)被刪除。如果在連接器設(shè)置中指定了不正確的值,例如將Hive連接器中的hive.metastore.uri設(shè)置為指向無效的主機(jī)名,則Presto將無法啟動(dòng)。

例如,要添加Hive和Kafka連接器,請(qǐng)將connectors.to.add屬性設(shè)置為:

{'hive': ['connector.name=hive-cdh4', 'hive.metastore.uri=thrift://example.net:9083'],'kafka': ['connector.name=kafka', 'kafka.table-names=table1,table2', 'kafka.nodes=host1:port,host2:port']}

要?jiǎng)h除連接器,請(qǐng)修改connectors.to.delete屬性,格式如下:['connector1','connector2'等]。再次,注意每個(gè)元素周圍的單引號(hào)。上述值將刪除連接器connector1和connector2。請(qǐng)注意,tpch連接器不能刪除,因?yàn)樗糜谠趩?dòng)Presto之后。 tpch連接器的存在對(duì)系統(tǒng)的影響可以忽略不計(jì)。

例如,要?jiǎng)h除Hive和Kafka連接器,請(qǐng)將connectors.to.delete屬性設(shè)置為:['hive','kafka']。

HIVE連接器

針對(duì)不同的hadoop版本,Presto都有對(duì)應(yīng)的hive connector:

hive-hadoop1: Apache Hadoop 1.x

hive-hadoop2: Apache Hadoop 2.x

hive-cdh4: Cloudera CDH 4

hive-cdh5: Cloudera CDH 5

創(chuàng)建一個(gè)包含有以下內(nèi)容的文件:etc/catalog/hive.properties,從而在hivecatalog中掛載hive-cdh4的connector。根據(jù)你實(shí)際的hadoop版本和環(huán)境替換掉hive-cdh4和example.net:9083:

connector.name=hive-cdh4hive.metastore.uri=thrift://example.net:9083

HDFS Configuration

hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml

#創(chuàng)建新表時(shí),表的文件存儲(chǔ)格式hive.storage-format=ORC

Mysql連接器

connector.name=mysqlconnection-url=jdbc:mysql://example.net:3306connection-user=rootconnection-password=secret

/usr/lib/presto/bin/presto-cli --server dpnode02:8285 --catalog hive --schema default

JDK配置

在Ambari的安裝過程中,用戶可以選擇Ambari將使用的JDK以及其控制的其他服務(wù)。此JDK可以在安裝后隨時(shí)通過在運(yùn)行Ambari服務(wù)器進(jìn)程的主機(jī)上運(yùn)行ambari-server設(shè)置進(jìn)行編輯,然后通過運(yùn)行ambari-server restart以重新啟動(dòng)該進(jìn)程,以使更改生效。

當(dāng)選擇要運(yùn)行的JDK版本時(shí),用戶會(huì)看到三個(gè)選項(xiàng):1.8,1.7或自定義JDK。如果選擇1.8或1.7選項(xiàng),Ambari將下載該主版本的JDK。但是,JDK的更新(次要)版本根據(jù)Ambari的版本而有所不同。例如,Ambari 2.2.0+將下載1.8u60,之前的版本將下載1.8u40。

當(dāng)Ambari安裝Presto時(shí),使用的JDK將是Ambari配置的JDK(具體來說,是/etc/ambari-server/conf/ambari.properties中的java.home的值)。但是,與其他服務(wù)不同,一旦安裝Presto,它將使用與安裝的JDK相同的JDK,即使Ambari的JDK已重新配置。原因是在RPM安裝期間,Presto的JDK設(shè)置在/etc/presto/env.sh中。要重新配置Presto的JDK,在Presto將運(yùn)行的所有主機(jī)上編輯/etc/presto/env.sh。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容