“ 本文介紹如何設置ambari的各服務啓動順序”
聲明:博主寫了一些Ambari自定義服務系列文章,可以在歷史文章中查看。 仔細看,肯定會對ambari的自定義服務有一個更清晰的認識。 引言:ambari平臺系統上的服務有很多,衆所周知,每一個服務都是由各個組件所組成。如果我點擊頁面上的 啓動/停止全部服務 或者 啓動/停止單個服務,各個組件之間的啓動停止順序是怎麼設置的呢?本篇內容爲你解除心中的疑問
一、Role Command Order
角色是組件的另一個名稱(例如:NAMENODE,DATANODE,RESOURCEMANAGER,HBASE_MASTER等)。 顧名思義,可以告訴Ambari關於應該爲堆棧中定義的組件運行命令的順序。 例如:“應在啓動NameNode之前啓動ZooKeeper服務器”。或者“只有在NameNode和DataNodes啓動後才能啓動HBase Master”。 這可以通過在stack-version文件夾中包含role_command_order.json文件來指定。
在Ambari的Service目錄中,存在很多個叫做role_command_order.json的配置文件。這個文件中定義了Service狀態以及Action的依賴。
resource目錄下的role_command_order.json定義着全局的的依賴。每個Stack目錄下也會存在role_command_order.json。相同的配置,Stack下面的會覆蓋全局的。不同的配置,Ambari會拼接在一起。高版本的Stack會繼承低版本的配置。相同的也會overwrite,不同的merge。
二、Format
該文件以JSON格式指定,包含一個JSON對象。在每個section對象中,鍵描述了依賴的component-action,值列出了應該在它之前完成的component-actions。
{ "_comment": "Section 1 comment", "section_name_1": { "_comment": "Section containing role command orders", "<DEPENDENT_COMPONENT_1>-<COMMAND>": ["<DEPENDS_ON_COMPONENT_1>-<COMMAND>", "<DEPENDS_ON_COMPONENT_1>-<COMMAND>"], "<DEPENDENT_COMPONENT_2>-<COMMAND>": ["<DEPENDS_ON_COMPONENT_3>-<COMMAND>"], ... }, "_comment": "Next section comment", ... }
三、Sections
Section Name | When Used |
---|---|
general_deps | 命令順序適用於所有情況 |
optional_glusterfs | 當集羣沒有GLUSTERFS服務實例時,將應用命令順序 |
optionalnoglusterfs | 當集羣具有GLUSTERFS服務的實例時,將應用命令順序 |
namenodeoptionalha | 安裝HDFS服務且存在JOURNALNODE組件時啓用命令順序(啓用HDFS HA) |
resourcemanageroptionalha | 安裝YARN服務時存在命令順序,並且存在多個RESOURCEMANAGER主機組件(啓用了YARN HA) |
四、COMMAND
Ambari目前支持的命令是
- INSTALL
- UNINSTALL
- START
- RESTART
- STOP
- EXECUTE
- ABORT
- UPGRADE
- SERVICE_CHECK
- CUSTOM_COMMAND
- ACTIONEXECUTE
舉例:
Role Command Order | Explanation |
---|---|
"HIVEMETASTORE-START": ["MYSQLSERVER-START", "NAMENODE-START"] | 在啓動Hive Metastore之前啓動MySQL和NameNode組件 |
"MAPREDUCESERVICECHECK-SERVICE_CHECK": ["NODEMANAGER-START", "RESOURCEMANAGER-START"], | MapReduce服務檢查需要ResourceManager和NodeManagers啓動 |
"ZOOKEEPERSERVER-STOP" : ["HBASEMASTER-STOP", "HBASEREGIONSERVER-STOP", "METRICSCOLLECTOR-STOP"], | 在停止ZooKeeper服務器之前,請確保已停止HBase Masters,HBase RegionServers和AMS Metrics Collector。 |
"ELASTICSEARCHSERVICE-START": ["METRICSCOLLECTOR-START", "METRICSMONITOR-START", "METRICSGRAFANA-START"] | 當啓動metrics和ES組件時,metrics組件啓動在前,ES組件在後 |
"ELASTICSEARCHSERVICECHECK-SERVICECHECK": ["ELASTICSEARCHSERVICE-START"] | ES check操作在ES start操作之後 |
"-": ["-", "-"] | 組件名-命令 |
五、實例
{ "general_deps" : { "_comment" : "dependencies for elasticsearch", "ELASTICSEARCH_SERVICE-START": ["METRICS_COLLECTOR-START", "METRICS_MONITOR-START", "METRICS_GRAFANA-START"], "ELASTICSEARCH_SERVICE-RESTART": ["METRICS_COLLECTOR-START", "METRICS_MONITOR-START", "METRICS_GRAFANA-START"], "ELASTICSEARCH_SERVICE_CHECK-SERVICE_CHECK": ["ELASTICSEARCH_SERVICE-START"] } }
說明:在執行key命令之前,請先確保value項都被執行。
在執行 ELASTICSEARCH_SERVICE
啓動之前,啓動 METRICS_COLLECTOR
, METRICS_MONITOR
, METRICS_GRAFANA
在執行 ELASTICSEARCH_SERVICE
重啓之前,啓動 METRICS_COLLECTOR
, METRICS_MONITOR
, METRICS_GRAFANA
在執行 ELASTICSEARCH_SERVICE
檢查操作在 ELASTICSEARCH_SERVICE
開始操作之後。
六、參考資料
【1】:https://cwiki.apache.org/confluence/display/AMBARI/How-To+Define+Stacks+and+Services#How-ToDefineStacksandServices-RoleCommandOrder
更多精彩乾貨內容,請關注微信公衆號實時查看