Presto整合到Ambari介紹

weixin_34236869發表於2017-03-17

在Ambari中整合Presto,能在Ambari UI中方便地安裝部署Presto到叢集,並能方便修改Presto相關配置。

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在京東的實踐

Presto在美團的應用

Presto使用

前提準備

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

已安裝Ambari,並滿足Ambari相關要求.

Presto 0.148版後需要安裝Oracle JDK 1.8u60+,0.148之前版本需要JDK 1.8u40+。理解JDK配置瞭解Presto和Ambari JDK之間的關係。

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

節點已安裝wget。

新增Presto Service

下載檔案

官網下載Ambari整合包

確保Ambari已安裝好HDP2.3,在ambari-server執行的伺服器上建立如下目錄/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

最後,將所有整合檔案新增可執行許可權,並重啟Ambari-server。

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

上述包是預設整合presto0.161版,這裡可修改到最新版本,並配置下載最新的rpm和cli包。

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

#修改下載包的對應版本和路徑$ 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介面,點選Add Service,根據指示安裝Presto。

新增服務

選擇主節點安裝Coordinator

分配Worker節點和客戶端節點

自定義配置

自定義配置,主要配置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

啟動安裝

啟動安裝

安裝完成

執行客戶端

$ presto-client

執行sql語句,然後在URI上檢視相關執行情況。

訪問URI

/var/log/presto 日誌/usr/lib/presto 安裝目錄/var/lib/presto 資料目錄/etc/presto     配置檔案

拓撲

以下兩步可在群集中的節點之間分配Presto程式。一旦選擇了Presto的拓撲並完成安裝過程,就不可能修改該拓撲。

Presto由協調器coordinator和工作程式worker組成。同一程式碼執行所有節點,因為為worker和coordinator安裝了相同的PrestoRPM包。每個節點上的配置決定了特定節點的行為方式。 Presto可以以偽分散式模式執行,其中一個節點上的單個Presto程式充當coordinator和worker,或者可以以分散式模式執行,其中Presto coordinator在一個節點上執行,而Presto worker在其他節點上執行。

Presto的客戶端元件是presto-cli可執行檔案JAR。您應該將其放置在您希望通過此命令列訪問Presto伺服器的所有節點上。 presto-cli可執行檔案JAR不需要與工作者或協調器共同定位,它可以自己安裝。安裝後,可以在/usr/ lib/presto/bin/presto-cli找到CLI。

不要將worker放置在與coordinator相同的節點上。這樣的嘗試將失敗安裝,因為整合軟體將嘗試安裝RPM兩次。為了安排Presto coordinator的工作,有效地將過程變成雙工/協調器,請在配置中啟用node-scheduler.include-coordinator。

偽分散式

在一個節點上安裝Presto coordinator,不安裝其他的worker。在配置頁面啟用node-scheduler.include-coordinator

分散式

在一個節點上安裝Presto coordinator,在其他若干節點(非coordinator節點)上安裝Presto worker。

Presto配置

沒有預設值並且需要輸入的一個配置屬性是discovery.uri。預期值為http://:8285。注意,它是http而不是https,埠是8285.如果更改http-server.http.port的值,請確保在disovery.uri中進行相應更改。

一些最常用的屬性顯示在“設定”選項卡中(預設情況下是開啟的)。在“高階”選項卡中,通過開啟正確的下拉選單並指定鍵和值來設定自定義屬性。請注意,指定Presto無法識別的屬性將導致安裝失敗,或者部分或所有伺服器無法啟動。

安裝後,通過選擇Presto服務,然後選擇Configs選項卡,更改Presto配置。更改配置選項後,請確保重新啟動Presto以使更改生效。

如果您執行的Ambari版本早於2.1(版本號小於2.1),則在設定以下記憶體相關配置時必須忽略記憶體字尾(GB):query.max-memory-per-node和query.max-memory。對於這兩個屬性,記憶體字尾由整合軟體自動新增。對於您新增為自定義屬性的所有其他記憶體相關配置,在指定值時必須包括記憶體字尾。

新增刪除Connectors

要新增聯結器,請修改connectors.to.add屬性,其格式如下:{'connector1':['key1 = value1','key2 = value2'等],'connector2':['key3 = value3 ','key4 = value4']等}。請注意每個單個元素周圍的單引號。此屬性僅新增聯結器,不會刪除聯結器。因此,如果新增connector1,儲存配置,重新啟動Presto,然後為此屬性指定{},connector1不會被刪除。如果在聯結器設定中指定了不正確的值,例如將Hive聯結器中的hive.metastore.uri設定為指向無效的主機名,則Presto將無法啟動。

例如,要新增Hive和Kafka聯結器,請將connectors.to.add屬性設定為:

{'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']}

要刪除聯結器,請修改connectors.to.delete屬性,格式如下:['connector1','connector2'等]。再次,注意每個元素周圍的單引號。上述值將刪除聯結器connector1和connector2。請注意,tpch聯結器不能刪除,因為它用於在啟動Presto之後。 tpch聯結器的存在對系統的影響可以忽略不計。

例如,要刪除Hive和Kafka聯結器,請將connectors.to.delete屬性設定為:['hive','kafka']。

HIVE聯結器

針對不同的hadoop版本,Presto都有對應的hive connector:

hive-hadoop1: Apache Hadoop 1.x

hive-hadoop2: Apache Hadoop 2.x

hive-cdh4: Cloudera CDH 4

hive-cdh5: Cloudera CDH 5

建立一個包含有以下內容的檔案:etc/catalog/hive.properties,從而在hivecatalog中掛載hive-cdh4的connector。根據你實際的hadoop版本和環境替換掉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

#建立新表時,表的檔案儲存格式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以及其控制的其他服務。此JDK可以在安裝後隨時通過在執行Ambari伺服器程式的主機上執行ambari-server設定進行編輯,然後通過執行ambari-server restart以重新啟動該程式,以使更改生效。

當選擇要執行的JDK版本時,使用者會看到三個選項:1.8,1.7或自定義JDK。如果選擇1.8或1.7選項,Ambari將下載該主版本的JDK。但是,JDK的更新(次要)版本根據Ambari的版本而有所不同。例如,Ambari 2.2.0+將下載1.8u60,之前的版本將下載1.8u40。

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

相關文章