以前,在 github 上開源了 ambari-Kylin 項目,可離線部署,支持 hdp 2.6+ 及 hdp 3.0+ 。github 地址爲:https://github.com/841809077/ambari-Kylin ,歡迎 star 。html
這段時間,陸續有很多朋友經過公衆號聯繫到我,問我相關的集成步驟。今天正好休息,索性將 ambari 自定義服務集成的原理給你們整理出來。前端
它其實不難,可是網絡上並無多少這方面的資料分享,官方也不多,因此學習門檻就稍微高了一些。但你若是能持續關注我,我相信您能快速上手。python
ambari 是一個可視化管理 Hadoop 生態系統的一個開源服務,像 hdfs、yarn、mapreduce、zookeeper、hive、hbase、spark、kafka 等均可以使用 ambari 界面來統一安裝、部署、監控、告警等。mysql
對於未受 ambari 界面管理的服務,好比 Elasticsearch、Kylin、甚至是一個 jar 包,均可以利用 自定義服務集成相關技術 將 服務 集成到 ambari 界面裏。這樣,就能夠經過 ambari 實現對 自定義服務 的 安裝、配置、啓動、監聽啓動狀態、中止、指標監控、告警、快速連接 等不少操做,極其方便。git
對於安裝過 ambari 的朋友可能比較熟悉,咱們在部署 hdp 集羣的時候,在界面上,會讓咱們選擇 hdp stack 的版本,好比有 2.0、... 、2.六、3.0、3.1 等,每個 stack 版本在 ambari 節點上都有對應的目錄,裏面存放着 hdp 各服務,像 hdfs、yarn、mapreduce、spark、hbase 這些,stack 版本高一些的,服務相對多一些。stack 版本目錄具體在 ambari-server 節點的 /var/lib/ambari-server/resources/stacks/HDP 下,咱們用 python 開發的自定義服務腳本就會放到這個目錄下。github
將自定義服務放到指定目錄下,咱們須要重啓 ambari server 才能在 添加服務 界面加載出來咱們的自定義服務,ambari 在安裝自定義服務的過程當中,也會將 python 開發的自定義服務腳本分發到 agent 節點上,由 agent 節點的 自定義服務腳本 來執行 安裝、部署 步驟。sql
等經過 ambari 安裝自定義服務以後,ambari 會在數據庫(好比 mysql)相關表裏將自定義服務相關信息進行保存,和記錄其它 hdp 服務同樣的邏輯。數據庫
一個自定義服務暫且將它定義爲一個項目,項目名稱須爲大寫,使用 python 編寫。該項目框架有那麼幾個必不可少的文件或目錄,分別是:json
metainfo.xml 文件:描述了對整個項目的約束配置,是一個 核心 文件。網絡
configuration 目錄:裏面放置一個或多個 xml 文件,用於將該服務的配置信息展現在前端頁面,也能夠在ambari 頁面上對服務的一些配置作更改,以下圖所示:
package 目錄:裏面包含 scripts 文件夾,該目錄下存放着 python 文件,用於對服務的安裝、配置、啓動、中止等操做。自定義服務 python 腳本依賴的模塊是 resource_management 。該模塊分佈在不一樣的目錄下,但內容是一致的,以下圖所示:
除了上述必不可少的目錄或文件以外,還有一些文件能夠豐富咱們自定義服務的功能。好比:
alerts.json 文件:描述 ambari 對服務的 告警 設置。告警類型有 WEB、Port、Metric、Aggregate 和 Script ,以下圖所示:
quicklinks.json 文件:用於生成快速連接,實現 url 的跳轉。可支持多個 url 展現。
role_command_order.json 文件:決定各個服務組件之間的啓動順序,詳情可參考:https://841809077.github.io/2018/09/26/role_command_order.html
以下圖所示,這是自定義服務 KYLIN 的項目框架:
ambari 自定義服務集成的細節有不少,可是官方網站上並無太多的篇幅去介紹這一塊知識,只能本身慢慢摸索。幸好有公司的支持和我的的努力,我已經將 自定義服務 的大部分知識點掌握,特繪製相關的知識腦圖,具體以下:
後面我會利用業餘時間將上述腦圖中的 12 項錄製成視頻,節約你們學習成本。若是你們有這方面的需求,能夠關注個人公衆號,加我好友,一塊兒討論技術與人生。