使用docker部署ambari的若干要點


ambari部署各個組件

使用ambari進行部署時主要需要的組件包括:

  • ambari-server: 主要部署的控制節點,負責控制agent進行部署。
  • mysql: server存儲的數據庫。也支持postgresql等數據庫。
  • ambari-agent: 主要執行部署的節點,根據控制節點,部署相應的服務的相應組件(compoment)。
  • repo: 可以是公網的庫,也可以是本地源。主要提供各個服務安裝的rpm包等。ambari主要使用的是HDP(hortonworks data platform)的庫。
  • consul: 用於DNS解析。因為各個節點之間需要通過域名來相互進行訪問。用consul來提供DNS解析服務,無需在每個節點上配置hosts。對應的,各個容器也需要將DNS(即resolve.conf)指定為部署consul的ip。

部署流程

每個組件都可以單獨做成鏡像。其中repo可以使用公網的庫,也可以使用自己搭建的本地源。

HDP的版本要和ambari的版本對應。對應關系可以查看hdp官網

在實驗中我使用的是ambari 2.2.1-v20的鏡像和HDP 2.4.3。

搭建repo庫

主要是安裝httpd並把HDP和HDP-UTILS的tar包解壓到指定目錄。這個不詳述了。

創建server和agent容器

使用docker-ambariambari-functions來創建集群。

  1. 修改ambari-functions中的server和agent鏡像名稱
  2. source ambari-functions
  3. 運行amb-setttings,查看配置是否有問題
  4. 運行amb-start-cluster 3。啟動server/agent/consul容器。
  5. 此時ambari-server就正常啟動了。
  6. 進入ambari-server容器,ssh-keygen -t rsa -P ''生成密鑰。
  7. 進入ambari-agent,yum install -y sudomkdir -p /var/log/ambari-agent, mkdir -p /var/lib/ambari-agent。將ambari-server的公鑰拷貝到/root/.ssh/authorized_keys文件中。
  8. 從頁面訪問ambari-server。即可按步驟添加多個agent到集群中,並安裝對應的service。

我在虛擬機上單機安裝了HDFS+YARN+MAPREDUCE+SPARK服務。spark可用。我再裝storm時,虛擬機配置太差,撐不住,服務無法啟動。

ambari的好處是集成了監控等功能,組件很全面。

一些問題和待解決的點

  • 集群編排問題。比如需要創建幾個容器,每個容器應該是什么角色,安裝什么組件,要事先規划好,再去創建。
  • ambari-agent容器掛掉重啟后,默認不會重新加入回集群。需要配置適當的腳本,使得
  • 官方ambari-agent沒有sudo,而且對應的ambari-agent的log目錄等都沒有創建。因此需要在官方鏡像基礎上再進行改造。
  • 密鑰的生成以及分發。
  • ambari-agent的規划問題。比如agent作為datanode時,需要使用VOLUME的外掛盤來對數據進行保存,而不是使用容器本身的存儲(容器本身存儲僅10G,也不夠用)。當然,這也可以做到容器的鏡像中或者生成容器時動態掛載。
  • 自動創建集群。這里主要的難點是使用ambari的api創建cluster,添加service等。還需要深入研究下。參考api
  • ambari-agent鏡像細化的問題。現在ambari-agent中實際是一個空的鏡像,沒有安裝service。那么我們是否可以根據service的不同,分別制作出hadoop-ambari-agent鏡像,spark-ambari-agent鏡像等,省去一部分服務安裝的時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM