|
@@ -33,6 +33,13 @@ function getRmHaDependedConfig(rmHaShouldBeEnabled) {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+function getRmHaHawqConfig(rmHaShouldBeEnabled) {
|
|
|
+ return {
|
|
|
+ type: 'rm_ha_hawq',
|
|
|
+ rmHaShouldBeEnabled: Boolean(rmHaShouldBeEnabled)
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* Initializer for configs which should be affected when Resource Manager is moved from one host to another
|
|
|
* If Resource Manager HA-mode is already activated, several configs are also updated
|
|
@@ -42,13 +49,16 @@ function getRmHaDependedConfig(rmHaShouldBeEnabled) {
|
|
|
App.MoveRmConfigInitializer = App.MoveComponentConfigInitializerClass.create({
|
|
|
|
|
|
initializerTypes: [
|
|
|
- {name: 'rm_ha_depended', method: '_initAsRmHaDepended'}
|
|
|
+ {name: 'rm_ha_depended', method: '_initAsRmHaDepended'},
|
|
|
+ {name: 'rm_ha_hawq', method: '_initAsRmHaHawq'}
|
|
|
],
|
|
|
|
|
|
initializers: {
|
|
|
'yarn.resourcemanager.hostname.{{suffix}}': getRmHaDependedConfig(true),
|
|
|
'yarn.resourcemanager.webapp.address.{{suffix}}': getRmHaDependedConfig(true),
|
|
|
- 'yarn.resourcemanager.webapp.https.address.{{suffix}}': getRmHaDependedConfig(true)
|
|
|
+ 'yarn.resourcemanager.webapp.https.address.{{suffix}}': getRmHaDependedConfig(true),
|
|
|
+ 'yarn.resourcemanager.ha': getRmHaHawqConfig(true),
|
|
|
+ 'yarn.resourcemanager.scheduler.ha': getRmHaHawqConfig(true)
|
|
|
},
|
|
|
|
|
|
/**
|
|
@@ -72,6 +82,54 @@ App.MoveRmConfigInitializer = App.MoveComponentConfigInitializerClass.create({
|
|
|
Em.set(configProperty, 'value', parts.join(':'));
|
|
|
}
|
|
|
return configProperty;
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * This function to generate "rm1_host:port,rm2_host:port" for HAWQ configuration (RM HA specific)
|
|
|
+ * configProperty = {
|
|
|
+ * filename: "yarn-client",
|
|
|
+ * name: "yarn.resourcemanager.ha",
|
|
|
+ * value: "ip-10-32-36-162.ore1.vpc.pivotal.io:8050"
|
|
|
+ * }
|
|
|
+ *
|
|
|
+ * dependencies = {
|
|
|
+ * rm1: "ip-10-32-38-225.ore1.vpc.pivotal.io",
|
|
|
+ * rm2: "ip-10-32-38-162.ore1.vpc.pivotal.io",
|
|
|
+ * sourceHostName: "ip-10-32-36-162.ore1.vpc.pivotal.io",
|
|
|
+ * targetHostName: "ip-10-32-38-34.ore1.vpc.pivotal.io"
|
|
|
+ * }
|
|
|
+ *
|
|
|
+ * dependencies is defined by ReassignMasterWizardStep4Controller._getRmAdditionalDependencies()
|
|
|
+ * Move RM Wizard has 2 combobox in HA case, but it seems to gurantee users can change only one of them.
|
|
|
+ * (Thus, there is only one pair of sourceHostName and targetHostName)
|
|
|
+ *
|
|
|
+ */
|
|
|
+ _initAsRmHaHawq: function (configProperty, localDB, dependencies, initializer) {
|
|
|
+ if (App.get('isRMHaEnabled') === initializer.rmHaShouldBeEnabled) {
|
|
|
+
|
|
|
+ // which of rm1 and rm2 is changed?
|
|
|
+ var rm1, rm2;
|
|
|
+ if(dependencies.rm1 === dependencies.sourceHostName){
|
|
|
+ rm1 = dependencies.targetHostName;
|
|
|
+ rm2 = dependencies.rm2;
|
|
|
+ }else{
|
|
|
+ rm1 = dependencies.rm1;
|
|
|
+ rm2 = dependencies.targetHostName;
|
|
|
+ }
|
|
|
+
|
|
|
+ // https://github.com/apache/hadoop/blob/release-2.7.1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java#L133-L163
|
|
|
+ var DEFAULT_RM_PORT = 8032;
|
|
|
+ var DEFAULT_RM_SCHEDULER_PORT = 8030;
|
|
|
+
|
|
|
+ if(configProperty.name === "yarn.resourcemanager.ha"){
|
|
|
+ var newValue = rm1 + ":" + DEFAULT_RM_PORT + "," + rm2 + ":" + DEFAULT_RM_PORT;
|
|
|
+ }else{
|
|
|
+ var newValue = rm1 + ":" + DEFAULT_RM_SCHEDULER_PORT + "," + rm2 + ":" + DEFAULT_RM_SCHEDULER_PORT;
|
|
|
+ }
|
|
|
+
|
|
|
+ Em.set(configProperty, 'value', newValue);
|
|
|
+ }
|
|
|
+ return configProperty;
|
|
|
}
|
|
|
|
|
|
-});
|
|
|
+});
|