一种基于模型的Hadoop部署以及配置方法_3

文档序号:9506013阅读:来源:国知局
,对于熟练掌握Hadoop部署和配置的技术人员来说,手工部署和配置大约耗时5-8小时,而对于Hadoop新手来说,则大约需要耗时3-5天,进一步体现了本方法的可行性和有效性。
[0046]规则引擎程序如下: import java.10.File; import java.util.ArrayList;import java.util.HashMap;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentExcept1n;
import org.dom4j.Element;
import org.dom4j.10.SAXReader;
import com.cloudera.ap1.ClouderaManagerClientBuilder;
import com.cloudera.ap1.DataView;
import com.cloudera.ap1.model.ApiHost;
import com.cloudera.ap1.model.ApiHostList;
import com.cloudera.ap1.v7.RootResourceV7;
import com.google, gson.Gson;
import Tools.Calculator;
importcn.edu.fzu.cloud, passcloud.VMOperat1n;publicclass GenerateDeployResult {
Document document;
Element RulesEle, NumberOfRolesEle, HostsEle, DpsEle, ExclusEle,ConfigsEle;
// HashMap〈String, ArrayList<String>> HostsList = new HashMap〈String,ArrayList<String>>();
ArrayList<String> HostsList = new ArrayList<String>(); int AllHostNum;
ArrayLi st〈String> Smal1VMLi st, MediumVMList, LargeVMLi st,HighCPUVMList, HighMemoryVMLi st, HighStorageVMList;
HashMap〈String,ArrayList<String>> Ro1eHostsMap =new HashMap〈String,ArrayList<String>>();
HashMap〈String,HashMap〈String,String>> Conf igsMap = newHashMap〈String,HashMap〈String,String》();
HashMap<String, Object) result = new HashMap<String, Object)(); public GenerateDeployResult(int AllHostNum, Document doc) { this, document = doc; this.AllHostNum = AllHostNum; this.RulesEle = document.getRootElement(); this.HostsEle = (Element) RulesEle.element(〃Hosts〃); this.NumberOfRolesEle = (Element) RulesEle.element(〃NumberOfRoles〃); this.DpsEle = (Element) RulesEle.element ("Dependencies,,); this.ExclusEle = (Element) RulesEle.element (〃Exclusive_relat1ns〃); this.Conf igsEle = (Element) RulesEle.element ("Configurat1ns,,);
} public HashMap<String, Object) Generate (){this.DealHosts ();this.DealDependencies ();this.DealExclusives ();this.DealNumberOfRoles ();this.DealConf igurat1ns ();this, result, put(〃RoleHostsMap〃,RoleHostsMap);this, result, put (〃Conf igsMap,,,Conf igsMap);this, result, put(〃HostsList〃,HostsList);
System, out.println (^The Deployment Result is:〃);
System, out.println (new Gson ().tojson (result)); return result;
}
publicvoid DealHosts() {
SmallVMList = getVMTypeListByCM("small", getHostNum("small")); MediumVMList = getVMTypeListByCM(〃medium〃, getHostNum(〃medium〃)); LargeVMList = getVMTypeListByCM("large", getHostNum("large"));
H i gh CP UVML i s t = getVMTypeListByCM(〃high_cpu〃,getHostNum(,,high-cpu?));
HighMemoryVMList = getVMTypeListByCM(〃high_memory〃,getHostNum(〃high
-memory,,));
HighStorageVMList = getVMTypeListByCM(〃high-storage〃,getHostNum(〃high-storage,,));
HostsList.addAll(SmallVMList);
HostsList.addAll (MediumVMList);
HostsList.addAll(LargeVMList);
HostsList.addAll(HighCPUVMList);
HostsList.addAll(HighMemoryVMList);
HostsList.addAll(HighStorageVMList);
System, out.println(^The hosts list are:〃);
System, out.println(Smal1VMList + 〃\ n〃+Me diumVMLi st+ 〃\n〃+LargeVMList+〃\n〃+HighCPUVMList+〃\n〃+HighMemoryVMList+〃\n〃+HighStorageVMList);
}
privateint getHostNum(String HostType) { float num = 0;
String numStr = HostsEle.element(HostType).attribute(〃Number〃).getText ();
numStr = numStr.replaceAll(〃AllHostsNum〃,〃〃 + this.AllHostNum);// //System, out.println(numStr);
num = (float) new Calculator ().calculate(numStr);
// //System, out.println (num);return (int) num;
}
private ArrayList<String> getVMTypeListByCM(String type, int demandNum)
{
int num=0;
ArrayList<String> VMList = new ArrayList<String>();
RootResourceV7 apiRoot = new ClouderaManagerClientBuilder().withHost("192.168.6.3").withUsernamePassword(〃admin〃,〃admin〃).build 0.getRootV7 ();
ApiHostList hosts = apiRoot.getHostsResource().readHosts(DataView.FULL);
// System, out.println(new Gson0.tojson (hosts));for (ApiHost host: hosts.getHosts ()) {
if (host.getRoleRef s ().size () ==0&&host.getHostname ().toLowerCase().contains(type)) {
System.(Wi* println (host.getlpAddress ()+〃 don’t have cluster
now,,);
num++;
VMList.add (host.getlpAddress ());
}
if (num>=demandNum)break;
}
return VMList;
}
publicvoid DealDependencies() {
List<Element> HostDps = DpsEle.elements(〃HostDependency〃); for (Element HostDp: HostDps) {
RoleHostsMap.put (HostDp.attribute ("Dependent,,).getText (),getVMTypeListByCM (HostDp.attribute ("Target").getText (),getHostNum (HostDp.attribute(〃Target〃).getText())));
}
//System, out.println ("After deal HostDependencies,the RoleHostsMap
is
//System, out.println(RoleHostsMap);
List<Element> RoleDps = DpsEle.elements(〃RoleDependency〃); for (
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1