自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ironfan在大數(shù)據(jù)集群部署、配置管理中的應(yīng)用

云計(jì)算
在Serengeti中,有二個(gè)最重要最關(guān)鍵的功能:一是虛擬機(jī)管理,即在vCenter中為一個(gè)Hadoop集群創(chuàng)建和管理所需要的虛擬機(jī);另一個(gè)是集群軟件安裝配置管理,即在已安裝好操作系統(tǒng)的虛擬機(jī)上安裝Hadoop相關(guān)組件(包括Zookeeper,Hadoop,Hive,Pig等),更新配置文件(例如Namenode/Jobtracker/Zookeeper結(jié)點(diǎn)的IP等信息),然后啟動(dòng)Hadoop服務(wù)。

Ironfan介紹

在Serengeti中,有二個(gè)最重要最關(guān)鍵的功能:一是虛擬機(jī)管理,即在vCenter中為一個(gè)Hadoop集群創(chuàng)建和管理所需要的虛擬機(jī);另一個(gè)是集群軟件安裝配置管理,即在已安裝好操作系統(tǒng)的虛擬機(jī)上安裝Hadoop相關(guān)組件(包括Zookeeper,Hadoop,Hive,Pig等),更新配置文件(例如Namenode/Jobtracker/Zookeeper結(jié)點(diǎn)的IP等信息),然后啟動(dòng)Hadoop服務(wù)。Ironfan就是在Serengeti中負(fù)責(zé)集群軟件安裝配置管理的組件。

Ironfan是基于Chef技術(shù)開發(fā)的集群軟件部署配置管理工具。Chef是一個(gè)類似于Puppet和CFEngine的開源的系統(tǒng)配置管理工具,它定義了一套簡單易用的DSL(Domain Specific language)語言用于在一臺已安裝好基本操作系統(tǒng)的機(jī)器上安裝配置任意軟件和配置系統(tǒng)本身。Ironfan基于Chef的框架和API提供了簡單易用的自動(dòng)化部署和管理集群的命令行工具。Ironfan支持部署Zookeeper,Hadoop和HBase集群,也可以編寫新的cookbook以部署任意其他非Hadoop集群。

Ironfan最初由美國一家Big Data初創(chuàng)公司Infochimps使用Ruby語言開發(fā),并在github.com上以Apache Licensev2開源。最開始Ironfan只支持在Amazon EC2的Ubuntu虛擬機(jī)上部署Hadoop集群。VMwareProject Serengeti團(tuán)隊(duì)選擇了基于Ironfan來開發(fā)Big Data集群工具,并實(shí)現(xiàn)了一系列重大改進(jìn),讓Ironfan可以在VMware vCenter中的CentOS 5.x虛擬機(jī)上創(chuàng)建部署Hadoop集群。ProjectSerengeti改進(jìn)后的Ironfan同樣以Apache License v2在github.com上開源,供用戶免費(fèi)下載和修改。

Ironfan架構(gòu)

下圖描繪了Ironfan的架構(gòu)。Ironfan主要包括Cluster OrchestrationEngine,VM Provision Engine,SoftwareProvision Engine和用于存儲數(shù)據(jù)的Chef Server 和Package Server。

·ClusterOrchestration Engine:Ironfan的總控制器,負(fù)責(zé)加載解析集群定義文件,創(chuàng)建虛擬機(jī),在ChefServer中保存集群的配置信息,并調(diào)用Chef REST API為各個(gè)虛擬機(jī)創(chuàng)建對應(yīng)的ChefNode和Chef Client, 并設(shè)定各個(gè)虛擬機(jī)的ChefRole。

·VMProvision Engine:創(chuàng)建cluster中的所有虛擬機(jī),并等待虛擬機(jī)得到IP。VM Provision Engine提供了接口以支持在各種虛擬機(jī)云環(huán)境中創(chuàng)建虛擬機(jī),目前實(shí)現(xiàn)了Amazon EC2和VMware vCenter的支持。在Serengeti中,所有虛擬機(jī)由Ironfan的調(diào)用者在VMware vCenter中創(chuàng)建,并將IP保存在cluster spec文件中,傳遞給Ironfan的VM Provision Engine。

·SoftwareProvision Engine: 使用虛擬機(jī)中預(yù)先創(chuàng)建好的缺省用戶名和密碼,SSH遠(yuǎn)程登錄到所有虛擬機(jī)中同時(shí)啟動(dòng)chef-client來安裝軟件。chef-client是Chef框架中的代理程序,負(fù)責(zé)在其運(yùn)行的結(jié)點(diǎn)上執(zhí)行預(yù)先由Chef Role指定的安裝配置腳本。chef-client也會(huì)將執(zhí)行進(jìn)度數(shù)據(jù)保存在Chef Server中。

·ChefServer:用于存儲Chef Nodes,Chef Clients, Chef Roles, Chef Cookbooks, 提供Chef RESTAPI, 是Chef框架的重要組成部件。

·PackageServer:用于存儲所需的Hadoop和其他Hadoop所依賴的安裝包。

Ironfan對外提供了Knife CLI命令行接口,其調(diào)用者(即SerengetiWeb Service 組件)創(chuàng)建單獨(dú)進(jìn)程調(diào)用Knife CLI,通過進(jìn)程退出狀態(tài)值判斷成功或者失敗。具體的集群結(jié)點(diǎn)數(shù)據(jù)和執(zhí)行進(jìn)度信息由調(diào)用者隨時(shí)從ChefServer獲取。

 

IronfanKnife CLI

每一個(gè)SerengetiCLI cluster命令都對應(yīng)一個(gè)IronfanKnife CLI命令,包括create (創(chuàng)建集群)、list(查看集群)、config(配置集群)、stop(停止集群)、start(啟動(dòng)集群)、delete(刪除集群)。

clustercreate => knife cluster create -f/opt/serengeti/logs/task///.json--yes --bootstrap

clusterlist => knife cluster show -f/opt/serengeti/logs/task///.json--yes

clusterconfig => knife cluster bootstrap -f/opt/serengeti/logs/task///.json--yes

clusterstop => knife cluster stop -f/opt/serengeti/logs/task///.json--yes

clusterstart => knife cluster start -f/opt/serengeti/logs/task///.json–yes --bootstrap

clusterdelete => knife cluster kill -f/opt/serengeti/logs/task///.json--yes

其中參數(shù)/opt/serengeti/logs/task///.json是Serengeti Web Service傳遞給Ironfan的cluster spec文件,這是一個(gè)JSON格式的文件,包含了集群的結(jié)點(diǎn)分組、結(jié)點(diǎn)個(gè)數(shù)、結(jié)點(diǎn)軟件定義描述、集群的配置、PackageServer和所有虛擬機(jī)的名稱和IP等信息。Ironfan會(huì)分析cluster spec文件,生成Ironfan所需要的cluster定義文件并保存在/opt/serengeti/tmp/.ironfan-clusters/.rb。

Ironfancluster定義文件 (DSL, roles)

 

接下來,我們看看Ironfan是如何定義集群的。下圖是一個(gè)名為demo的cluster的定義文件demo.rb,它是一個(gè)Ruby文件,用Ironfan所定義的DSL語言描述集群的組成結(jié)構(gòu),定義了3個(gè)虛擬機(jī)組。其中每一個(gè)facet定義了一個(gè)虛擬機(jī)組,包含若干個(gè)安裝同樣軟件的虛擬機(jī)。每個(gè)分組中結(jié)點(diǎn)個(gè)數(shù)由instance指定,虛擬機(jī)上要安裝的軟件由role指定。這個(gè)role就是Chef中所定義的role。

 

Chef Roles和 Cookbooks

在Serengeti中所有Chef Role文件存放于/opt/serengeti/cookbooks/roles/*.rb,所有

Chef Cookbook 文件存放于/opt/serengeti/cookbooks/cookbooks/

以hadoop_namenode role為例,/opt/serengeti/cookbooks/roles/hadoop_namenode.rb 內(nèi)容如下:

name 'hadoop_namenode'

description 'runs a namenode infully-distributed mode. There should be exactly one of these per cluster.'

run_list %w[

role[hadoop] # 一個(gè)role可以包含引用另一個(gè)role

hadoop_cluster::namenode # hadoop_cluster 是一個(gè)cookbook, namenode是此cookbook中的一個(gè)recipe

]

如果開發(fā)者需要修改調(diào)試 role和cookbook,可在修改role和cookbook 文件后,運(yùn)行以下命令上傳role和cookbook:

knife role from file/opt/serengeti/cookbooks/roles/.rb –V

knifecookbook upload -V

Cluster Service Discovery

在集群部署過程之中,有些組件的安裝和服務(wù)的啟動(dòng)順序是有先后依賴的,比如Datanode服務(wù)需要在Namenode服務(wù)啟動(dòng)之后再啟動(dòng),Tasktracker服務(wù)需要在Jobtracker服務(wù)啟動(dòng)之后再啟動(dòng),并且這些服務(wù)通常不在同一個(gè)虛擬機(jī)上。因此Ironfan在部署過程中需要控制不同結(jié)點(diǎn)上服務(wù)的安裝和啟動(dòng)順序,讓有依賴關(guān)系的結(jié)點(diǎn)同步。Ironfan是使用一個(gè)名為cluster_service_discovery的cookbook實(shí)現(xiàn)相關(guān)結(jié)點(diǎn)之間同步。

cluster_service_discoverycookbook定義了provide_service,provider_fqdn,provider_fqdn_for_role,all_providers_for_service等等方法,用于實(shí)現(xiàn)結(jié)點(diǎn)同步。我們以datanode服務(wù)需要等待namenode服務(wù)啟動(dòng)為例講解如何實(shí)現(xiàn)同步:

·在namenoderecipe中,啟動(dòng)namenode服務(wù)之后,調(diào)用provide_service(node[:hadoop][:namenode_service_name]),向Chef Server把此結(jié)點(diǎn)注冊為namenode 服務(wù)的提供者;

·在datanoderecipe中,啟動(dòng)datanode服務(wù)之前,調(diào)用provider_fqdn(node[:hadoop][:namenode_service_name])向Chef Server查詢namenode服務(wù)提供者的FQDN(或IP); provider_fqdn方法會(huì)每隔5秒種向Chef Server查詢一次,直到查詢到結(jié)果,或者30分鐘后超時(shí)報(bào)錯(cuò)。

其他相關(guān)結(jié)點(diǎn)的同步也與此機(jī)制相似,例如Zookeeper結(jié)點(diǎn)之間的相互等待,HBase結(jié)點(diǎn)等待Zookeeper結(jié)點(diǎn),具體方法調(diào)用可查看cluster_service_discovery,zookeeper,hadoop, 和hbase cookbook的源代碼。

關(guān)于vSphere Big Data Extensions:

VMware vSphere Big Data Extensions(簡稱BDE)基于vSphere平臺支持大數(shù)據(jù)和Apache Hadoop作業(yè)。BDE以開源Serengeti項(xiàng)目為基礎(chǔ),為企業(yè)級用戶提供一系列整合的管理工具,通過在vSphere上虛擬化Apache Hadoop,幫助用戶在基礎(chǔ)設(shè)施上實(shí)現(xiàn)靈活、彈性、安全和快捷的大數(shù)據(jù)部署、運(yùn)行和管理工作。了解更多關(guān)于VMware vSphere Big Data Extensions的信息,請參見http://www.vmware.com/hadoop。

 

作者介紹

[[91629]]

胡輝 (Jesse Hu)

VMware高級開發(fā)工程師

擔(dān)任VMware大數(shù)據(jù)產(chǎn)品vSphere BDE和Serengeti開源項(xiàng)目的技術(shù)帶頭人之一,是Serengeti開源項(xiàng)目最早期的開發(fā)者,并實(shí)現(xiàn)了第一個(gè)原型系統(tǒng),是Serengeti集群軟件安裝配置管理模塊Ironfan的設(shè)計(jì)者。在加入VMware之前,曾就職于Yahoo,IBM,Oracle等多家IT企業(yè),對開源社區(qū),云計(jì)算, Mobile, SNS, Web 2.0, Ruby都有了解和研究。

原文鏈接:http://vbigdata.blog.51cto.com/7526470/1338356

責(zé)任編輯:王程程 來源: 51CTO博客vBigData
相關(guān)推薦

2013-11-19 10:42:45

大數(shù)據(jù)Chef

2017-01-11 16:57:51

大數(shù)據(jù)大數(shù)據(jù)集群監(jiān)控

2019-02-20 17:49:32

大數(shù)據(jù)應(yīng)急管理數(shù)據(jù)分析

2020-11-17 14:50:34

大數(shù)據(jù)

2022-07-07 10:43:58

安全配置管理SCM

2022-04-07 12:02:22

區(qū)塊鏈大數(shù)據(jù)數(shù)據(jù)中心

2023-05-30 07:50:56

項(xiàng)目管理權(quán)限

2017-04-28 11:45:16

大數(shù)據(jù)Kafka大數(shù)據(jù)應(yīng)用

2018-10-24 14:36:59

2023-03-10 07:30:24

2009-03-03 17:17:52

環(huán)境配置軟件開發(fā)

2019-01-16 15:14:14

大數(shù)據(jù)無錫廣電智慧無錫

2024-07-08 09:11:53

MongoDBAI大數(shù)據(jù)

2017-04-12 09:49:54

大數(shù)據(jù)應(yīng)用預(yù)測性維修

2021-12-02 15:17:42

大數(shù)據(jù)銀行應(yīng)用

2018-01-02 12:20:23

農(nóng)業(yè)大數(shù)據(jù)農(nóng)產(chǎn)品

2019-02-28 22:21:49

大數(shù)據(jù)醫(yī)療業(yè)安全

2021-11-10 19:11:18

大數(shù)據(jù)大數(shù)據(jù)應(yīng)用;農(nóng)村發(fā)展

2021-11-11 08:34:54

應(yīng)用配置模板

2022-09-09 10:00:13

KubernetesConfigMap
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號