AMBARI-3743. YARN dynamic configs generate 0 values nodes. (srimanth)
Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/5b204e1c Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/5b204e1c Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/5b204e1c Branch: refs/heads/branch-1.4-bk Commit: 5b204e1cee5f48da23c105f532c436a3e8ee797d Parents: 4ff2865 Author: Srimanth Gunturi <sgunt...@hortonworks.com> Authored: Mon Nov 11 12:20:09 2013 -0800 Committer: Srimanth Gunturi <sgunt...@hortonworks.com> Committed: Mon Nov 11 13:33:48 2013 -0800 ---------------------------------------------------------------------- .../defaults_providers/yarn_defaults_provider.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/5b204e1c/ambari-web/app/utils/configs/defaults_providers/yarn_defaults_provider.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/configs/defaults_providers/yarn_defaults_provider.js b/ambari-web/app/utils/configs/defaults_providers/yarn_defaults_provider.js index 7a37f0b..4b49f0f 100644 --- a/ambari-web/app/utils/configs/defaults_providers/yarn_defaults_provider.js +++ b/ambari-web/app/utils/configs/defaults_providers/yarn_defaults_provider.js @@ -110,10 +110,11 @@ App.YARNDefaultsProvider = App.DefaultsProvider.create({ }.property('clusterData.cpu', 'clusterData.ram', 'clusterData.hBaseInstalled', 'clusterData.disk', 'reservedRam', 'hBaseRam', 'recommendedMinimumContainerSize'), /** - * amount of RAM per container - * RAM-per-container = abs(MIN_CONTAINER_SIZE, (Total Available RAM) / containers)) + * Amount of RAM per container. + * Calculated to be max(1GB, RAM - reservedRam - hBaseRam) / containers * - * Value in MB! + * @return Memory per container in MB. If greater than 1GB, + * value will be in multiples of 512. */ ramPerContainer: function () { var containers = this.get('containers'); @@ -122,12 +123,18 @@ App.YARNDefaultsProvider = App.DefaultsProvider.create({ if (this.get('clusterData.hBaseInstalled')) { ram -= this.get('hBaseRam') } + // On low memory systems, memory left over after + // removing reserved-RAM and HBase might be + // less than 1GB (even negative). If so, we force + // a 1GB value relying on virtual memory. if (ram < 1) { ram = 1; } ram *= this.get('GB'); var container_ram = Math.abs(ram / containers); - return container_ram > this.get('GB') ? container_ram / (512 * 512) : container_ram; + // If container memory is greater than 1GB, + // we use multiples of 512 as value + return container_ram > this.get('GB') ? (Math.floor(container_ram / 512) * 512) : container_ram; }.property('recommendedMinimumContainerSize', 'containers', 'clusterData.ram', 'clusterData.hBaseInstalled', 'hBaseRam', 'reservedRam'), mapMemory: function () {