Capacity Planning for Hadoop Cluster
Parameters
config
(array|string) One or multiple configuration files and directories.total_memory
(int|string) Total Memory available on the server.memory_system
(int|string) Total Memory allocated to the system.memory_hbase
(int|string) Total Memory allocated to the HBase RegionServers.memory_yarn
(int|string) Total Memory allocated to the Yarn NodeManagers.cores
(int) Number of available cores to the Yarn NodeManagers.disks
(array) List of disk partitions available to the HDFS DataNodes and YARN NodeManagers.module
(String|Array) List of target services based on ryba available modules
node node_modules/ryba/bin/capacity \
-c ./conf \
--partitions /data/1,/data/2 \
-o ./conf/capacity.coffee -w
params =
name: 'capacity'
description: 'Export cluster\' capacity planning in file'
load: require 'masson/lib/utils/load'
run: 'ryba/lib/capacity'
options: [
name: 'output', shortcut: 'o', type: 'string'
description: 'output file'
,
name: 'config', shortcut: 'c', type: 'array'
description: 'config files'
,
name: 'clusters', type: 'boolean'
description: 'Print list of cluster names'
,
name: 'format', shortcut: 'f', type: 'string'
description: 'Format of the output files: [json, cson, js, coffee]'
,
name: 'overwrite', shortcut: 'w', type: 'boolean' # default: 'text'
description: 'Overwrite any existing file.'
,
name: 'nodes', shortcut: 'n', type: 'boolean'
description: 'Print configuration of nodes'
# ,
# name: 'cluster', shortcut: 'c', type: 'string'
# description: 'Print configuration of clusters'
# ,
,
name: 'service', shortcut: 's', type: 'string'
description: 'Print configuration of a services (format cluster:service)'
,
name: 'service_names', type: 'boolean'
description: 'Print list of service names'
,
name: 'partitions', shortcut: 'p', type: 'array'
description: 'List of disk partitions unless discovered.'
,
name: 'hdfs_nn_name_dir' # default: './hdfs/name'
description: 'Absolute path to a single directory or relative path to the HDFS NameNode directories.'
,
name: 'hdfs_dn_data_dir' # default: './hdfs/data', eg '/mydata/1/hdfs/dn,/mydata/2/hdfs/dn'
description: 'List of absolute paths or a relative path for HDFS DataNode directories.'
,
name: 'yarn_nm_local_dir' # default: './yarn/local', eg '/mydata/1/yarn/local,/mydata/2/yarn/local'
description: 'List of absolute paths or a relative path for YARN NodeManager directories.'
,
name: 'yarn_nm_log_dir' # default: './yarn/log', eg '/mydata/1/yarn/log,/mydata/2/yarn/log'
description: 'List of absolute paths or a relative path for YARN NodeManager directories.'
,
name: 'kafka_data_dir' # default: './kafka', eg '/mydata/1/kafka,/mydata/2/kafka'
description: 'List of absolute paths or a relative path for Kafka Broker directories.'
,
name: 'total_memory_gb'
description: " the total memory available per server in GB"
,
name: 'reserved_memory_gb'
description: " the reserved memory for the OS in GB"
,
name: 'nodemanager_memory_gb'
description: "the memory allocated for yarn nodemanager process"
,
name: 'datanode_memory_gb'
description: "the memory allocated for hdfs nodemanager process"
,
name: 'regionserver_memory_gb'
description: "the memory allocated for hbase regionserver process"
,
name: 'yarn_memory_gb'
description: "the memory dedicated for running containers. Should not be overrided"
]
Read configuration
Taken from masson/lib/index.coffee
module.exports = ->
orgparams = parameters(params, main: name: 'main').parse()
load orgparams.config, (err, config) ->
# Normalize coniguration
config = normalize config
# config.params = parameters(params).parse()
capacity orgparams, config, (err) ->
if err
throw err
else
process.exit 0
Dependencies
parameters = require 'parameters'
load = require 'masson/lib/config/load'
normalize = require 'masson/lib/config/normalize'
merge = require 'masson/lib/utils/merge'
capacity = require './'