AMBARI-21729 Owner of yarn.include stays to be root:root where as dfs.include gets changed to the correct one upon restart services (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5c78bd75 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5c78bd75 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5c78bd75 Branch: refs/heads/branch-feature-logsearch-ui Commit: 5c78bd752aa5a064966ecee9fcee374cf12eb7a8 Parents: ab8d58b Author: Dmytro Sen <d...@apache.org> Authored: Wed Aug 16 12:34:02 2017 +0300 Committer: Dmytro Sen <d...@apache.org> Committed: Wed Aug 16 12:34:02 2017 +0300 ---------------------------------------------------------------------- .../2.1.0.2.0/package/scripts/params_linux.py | 5 +- .../YARN/2.1.0.2.0/package/scripts/yarn.py | 14 +- .../3.0.0.3.0/package/scripts/params_linux.py | 5 +- .../YARN/3.0.0.3.0/package/scripts/yarn.py | 14 +- .../stacks/2.0.6/YARN/test_resourcemanager.py | 160 ++- .../default_yarn_include_file_dont_manage.json | 1260 ++++++++++++++++++ .../default_yarn_include_file_manage.json | 1260 ++++++++++++++++++ .../secured_yarn_include_file_dont_manage.json | 1078 +++++++++++++++ .../secured_yarn_include_file_manage.json | 1078 +++++++++++++++ .../YARN/package/scripts/params_linux.py | 5 +- .../2.0/services/YARN/package/scripts/yarn.py | 16 +- 11 files changed, 4880 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/5c78bd75/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_linux.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_linux.py index 0b1215b..2ab779f 100644 --- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_linux.py +++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_linux.py @@ -169,9 +169,6 @@ rm_hosts = config['clusterHostInfo']['rm_host'] rm_host = rm_hosts[0] rm_port = config['configurations']['yarn-site']['yarn.resourcemanager.webapp.address'].split(':')[-1] rm_https_port = default('/configurations/yarn-site/yarn.resourcemanager.webapp.https.address', ":8090").split(':')[-1] -# TODO UPGRADE default, update site during upgrade -rm_nodes_exclude_path = default("/configurations/yarn-site/yarn.resourcemanager.nodes.exclude-path","/etc/hadoop/conf/yarn.exclude") -rm_nodes_exclude_dir = os.path.dirname(rm_nodes_exclude_path) java64_home = config['hostLevelParams']['java_home'] java_exec = format("{java64_home}/bin/java") @@ -241,6 +238,7 @@ user_group = config['configurations']['cluster-env']['user_group'] #exclude file exclude_hosts = default("/clusterHostInfo/decom_nm_hosts", []) exclude_file_path = default("/configurations/yarn-site/yarn.resourcemanager.nodes.exclude-path","/etc/hadoop/conf/yarn.exclude") +rm_nodes_exclude_dir = os.path.dirname(exclude_file_path) nm_hosts = default("/clusterHostInfo/nm_hosts", []) #incude file @@ -248,6 +246,7 @@ include_file_path = default("/configurations/yarn-site/yarn.resourcemanager.node include_hosts = None manage_include_files = default("/configurations/yarn-site/manage.include.files", False) if include_file_path and manage_include_files: + rm_nodes_include_dir = os.path.dirname(include_file_path) include_hosts = list(set(nm_hosts) - set(exclude_hosts)) ats_host = set(default("/clusterHostInfo/app_timeline_server_hosts", [])) http://git-wip-us.apache.org/repos/asf/ambari/blob/5c78bd75/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py index 1177107..363d464 100644 --- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py +++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py @@ -390,10 +390,22 @@ def setup_resourcemanager(): create_parents=True, cd_access='a', ) - File(params.rm_nodes_exclude_path, + File(params.exclude_file_path, + content=Template("exclude_hosts_list.j2"), owner=params.yarn_user, group=params.user_group ) + if params.include_hosts: + Directory(params.rm_nodes_include_dir, + mode=0755, + create_parents=True, + cd_access='a', + ) + File(params.include_file_path, + content=Template("include_hosts_list.j2"), + owner=params.yarn_user, + group=params.user_group + ) File(params.yarn_job_summary_log, owner=params.yarn_user, group=params.user_group http://git-wip-us.apache.org/repos/asf/ambari/blob/5c78bd75/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/params_linux.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/params_linux.py index 68d17f0..e66ec3c 100644 --- a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/params_linux.py +++ b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/params_linux.py @@ -166,9 +166,6 @@ rm_hosts = config['clusterHostInfo']['rm_host'] rm_host = rm_hosts[0] rm_port = config['configurations']['yarn-site']['yarn.resourcemanager.webapp.address'].split(':')[-1] rm_https_port = default('/configurations/yarn-site/yarn.resourcemanager.webapp.https.address', ":8090").split(':')[-1] -# TODO UPGRADE default, update site during upgrade -rm_nodes_exclude_path = default("/configurations/yarn-site/yarn.resourcemanager.nodes.exclude-path","/etc/hadoop/conf/yarn.exclude") -rm_nodes_exclude_dir = os.path.dirname(rm_nodes_exclude_path) java64_home = config['hostLevelParams']['java_home'] java_exec = format("{java64_home}/bin/java") @@ -238,6 +235,7 @@ user_group = config['configurations']['cluster-env']['user_group'] #exclude file exclude_hosts = default("/clusterHostInfo/decom_nm_hosts", []) exclude_file_path = default("/configurations/yarn-site/yarn.resourcemanager.nodes.exclude-path","/etc/hadoop/conf/yarn.exclude") +rm_nodes_exclude_dir = os.path.dirname(exclude_file_path) nm_hosts = default("/clusterHostInfo/nm_hosts", []) #incude file @@ -245,6 +243,7 @@ include_file_path = default("/configurations/yarn-site/yarn.resourcemanager.node include_hosts = None manage_include_files = default("/configurations/yarn-site/manage.include.files", False) if include_file_path and manage_include_files: + rm_nodes_include_dir = os.path.dirname(include_file_path) include_hosts = list(set(nm_hosts) - set(exclude_hosts)) ats_host = set(default("/clusterHostInfo/app_timeline_server_hosts", [])) http://git-wip-us.apache.org/repos/asf/ambari/blob/5c78bd75/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/yarn.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/yarn.py b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/yarn.py index 0591511..ef314f3 100644 --- a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/yarn.py +++ b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/package/scripts/yarn.py @@ -391,10 +391,22 @@ def setup_resourcemanager(): create_parents=True, cd_access='a', ) - File(params.rm_nodes_exclude_path, + File(params.exclude_file_path, + content=Template("exclude_hosts_list.j2"), owner=params.yarn_user, group=params.user_group ) + if params.include_hosts: + Directory(params.rm_nodes_include_dir, + mode=0755, + create_parents=True, + cd_access='a', + ) + File(params.include_file_path, + content=Template("include_hosts_list.j2"), + owner=params.yarn_user, + group=params.user_group + ) # This depends on the parent directory already existing. File(params.yarn_job_summary_log, owner=params.yarn_user, http://git-wip-us.apache.org/repos/asf/ambari/blob/5c78bd75/ambari-server/src/test/python/stacks/2.0.6/YARN/test_resourcemanager.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/stacks/2.0.6/YARN/test_resourcemanager.py b/ambari-server/src/test/python/stacks/2.0.6/YARN/test_resourcemanager.py index 8e92116..8a703df 100644 --- a/ambari-server/src/test/python/stacks/2.0.6/YARN/test_resourcemanager.py +++ b/ambari-server/src/test/python/stacks/2.0.6/YARN/test_resourcemanager.py @@ -50,6 +50,28 @@ class TestResourceManager(RMFTestCase): self.assert_configure_default() self.assertNoMoreResources() + def test_configure_default_with_include_file_dont_manage(self): + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", + classname="Resourcemanager", + command="configure", + config_file="default_yarn_include_file_dont_manage.json", + stack_version = self.STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES + ) + self.assert_configure_default(is_include_file_configured=True, manage_include_files=False) + self.assertNoMoreResources() + + def test_configure_default_with_include_file_manage(self): + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", + classname="Resourcemanager", + command="configure", + config_file="default_yarn_include_file_manage.json", + stack_version = self.STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES + ) + self.assert_configure_default(is_include_file_configured=True, manage_include_files=True) + self.assertNoMoreResources() + def test_start_default(self): self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", classname="Resourcemanager", @@ -100,6 +122,28 @@ class TestResourceManager(RMFTestCase): ) self.assert_configure_secured() + def test_configure_secured_with_include_file_dont_manage(self): + + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", + classname="Resourcemanager", + command="configure", + config_file="secured_yarn_include_file_dont_manage.json", + stack_version = self.STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES + ) + self.assert_configure_secured(is_include_file_configured=True, manage_include_files=False) + + def test_configure_secured_with_include_file_manage(self): + + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", + classname="Resourcemanager", + command="configure", + config_file="secured_yarn_include_file_manage.json", + stack_version = self.STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES + ) + self.assert_configure_secured(is_include_file_configured=True, manage_include_files=True) + def test_start_secured(self): self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", classname="Resourcemanager", @@ -179,7 +223,95 @@ class TestResourceManager(RMFTestCase): self.assertNoMoreResources() - def assert_configure_default(self): + def test_decommission_default_with_include_file_dont_manage(self): + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", + classname = "Resourcemanager", + command = "decommission", + config_file="default_yarn_include_file_dont_manage.json", + stack_version = self.STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES + ) + self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude', + owner = 'yarn', + content = Template('exclude_hosts_list.j2'), + group = 'hadoop', + ) + self.assertResourceCalled('Execute', ' yarn --config /etc/hadoop/conf rmadmin -refreshNodes', + environment = {'PATH': "/bin:/usr/bin:/usr/lib/hadoop-yarn/bin"}, + user = 'yarn', + ) + self.assertNoMoreResources() + + def test_decommission_default_with_include_file_manage(self): + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", + classname = "Resourcemanager", + command = "decommission", + config_file="default_yarn_include_file_manage.json", + stack_version = self.STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES + ) + self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude', + owner = 'yarn', + content = Template('exclude_hosts_list.j2'), + group = 'hadoop', + ) + self.assertResourceCalled('File', '/etc/hadoop/conf_for_include/yarn.include', + owner = 'yarn', + content = Template('include_hosts_list.j2'), + group = 'hadoop', + ) + self.assertResourceCalled('Execute', ' yarn --config /etc/hadoop/conf rmadmin -refreshNodes', + environment = {'PATH': "/bin:/usr/bin:/usr/lib/hadoop-yarn/bin"}, + user = 'yarn', + ) + self.assertNoMoreResources() + + def test_decommission_secured_with_include_file_dont_manage(self): + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", + classname = "Resourcemanager", + command = "decommission", + config_file="secured_yarn_include_file_dont_manage.json", + stack_version = self.STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES + ) + self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude', + owner = 'yarn', + content = Template('exclude_hosts_list.j2'), + group = 'hadoop', + ) + self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/rm.service.keytab rm/c6401.ambari.apache....@example.com; yarn --config /etc/hadoop/conf rmadmin -refreshNodes', + environment = {'PATH': "/bin:/usr/bin:/usr/lib/hadoop-yarn/bin"}, + user = 'yarn', + ) + + self.assertNoMoreResources() + + def test_decommission_secured_with_include_file_manage(self): + self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/resourcemanager.py", + classname = "Resourcemanager", + command = "decommission", + config_file="secured_yarn_include_file_manage.json", + stack_version = self.STACK_VERSION, + target = RMFTestCase.TARGET_COMMON_SERVICES + ) + self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude', + owner = 'yarn', + content = Template('exclude_hosts_list.j2'), + group = 'hadoop', + ) + self.assertResourceCalled('File', '/etc/hadoop/conf_for_include/yarn.include', + owner = 'yarn', + content = Template('include_hosts_list.j2'), + group = 'hadoop', + ) + self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/rm.service.keytab rm/c6401.ambari.apache....@example.com; yarn --config /etc/hadoop/conf rmadmin -refreshNodes', + environment = {'PATH': "/bin:/usr/bin:/usr/lib/hadoop-yarn/bin"}, + user = 'yarn', + ) + + self.assertNoMoreResources() + + def assert_configure_default(self, is_include_file_configured = False, manage_include_files=False): self.assertResourceCalled('Directory', '/var/run/hadoop-yarn', owner = 'yarn', group = 'hadoop', @@ -235,9 +367,21 @@ class TestResourceManager(RMFTestCase): cd_access = 'a', ) self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude', + content = Template('exclude_hosts_list.j2'), owner = 'yarn', group = 'hadoop', ) + if is_include_file_configured and manage_include_files: + self.assertResourceCalled('Directory', '/etc/hadoop/conf_for_include', + mode = 0755, + create_parents = True, + cd_access = 'a', + ) + self.assertResourceCalled('File', '/etc/hadoop/conf_for_include/yarn.include', + content = Template('include_hosts_list.j2'), + owner = 'yarn', + group = 'hadoop', + ) self.assertResourceCalled('File', '/var/log/hadoop-yarn/yarn/hadoop-mapreduce.jobsummary.log', owner = 'yarn', group = 'hadoop', @@ -347,7 +491,7 @@ class TestResourceManager(RMFTestCase): group = 'hadoop', ) - def assert_configure_secured(self): + def assert_configure_secured(self, is_include_file_configured = False, manage_include_files=False): self.assertResourceCalled('Directory', '/var/run/hadoop-yarn', owner = 'yarn', group = 'hadoop', @@ -403,9 +547,21 @@ class TestResourceManager(RMFTestCase): cd_access = 'a', ) self.assertResourceCalled('File', '/etc/hadoop/conf/yarn.exclude', + content = Template('exclude_hosts_list.j2'), owner = 'yarn', group = 'hadoop', ) + if is_include_file_configured and manage_include_files: + self.assertResourceCalled('Directory', '/etc/hadoop/conf_for_include', + mode = 0755, + create_parents = True, + cd_access = 'a', + ) + self.assertResourceCalled('File', '/etc/hadoop/conf_for_include/yarn.include', + content = Template('include_hosts_list.j2'), + owner = 'yarn', + group = 'hadoop', + ) self.assertResourceCalled('File', '/var/log/hadoop-yarn/yarn/hadoop-mapreduce.jobsummary.log', owner = 'yarn', group = 'hadoop',