createCluster($clusterName, $version, $state); assert(is_array($result) && isset($result["clusterName"])); assert($result["clusterName"] == $clusterName); assert($result["result"] == 0); assert($result["error"] == ""); print "Add Hosts To Cluster\n"; $hosts = array ( array ( "hostName" => "hrt9n22.cc1.ygridcore.net", "ip" => "127.0.0.1", "totalMem" => 65536, "cpuCount" => 16, "osArch" => "x86_64", "osType" => "RHEL5", "os" => "RHEL5 32-bit", "disksInfo" => "foo", "discoveryStatus" => "SUCCESS", "badHealthReason" => "no error" ), array ( "hostName" => "hrt9n34.cc1.ygridcore.net", "ip" => "127.0.0.2", "totalMem" => 32834, "cpuCount" => 8, "osArch" => "x86_64", "osType" => "RHEL6", "os" => "RHEL6 64-bit", "disksInfo" => "bar", "discoveryStatus" => "SUCCESS", "badHealthReason" => "no error" ), array ( "hostName" => "hrt9n35.cc1.ygridcore.net", "ip" => "127.0.0.3", "totalMem" => 16536, "cpuCount" => 8, "osArch" => "x86_64", "osType" => "RHEL6", "os" => "RHEL6 64-bit", "disksInfo" => "bar", "discoveryStatus" => "SUCCESS", "badHealthReason" => "no error" ), array ( "hostName" => "hrt9n36.cc1.ygridcore.net", "ip" => "127.0.0.4", "totalMem" => 16536, "cpuCount" => 8, "osArch" => "x86_64", "osType" => "RHEL6", "os" => "RHEL6 64-bit", "disksInfo" => "bar", "discoveryStatus" => "SUCCESS", "badHealthReason" => "no error" ), array ( "hostName" => "hrt9n37.cc1.ygridcore.net", "ip" => "127.0.0.5", "totalMem" => 16356, "cpuCount" => 8, "osArch" => "x86_64", "osType" => "RHEL6", "os" => "RHEL6 64-bit", "disksInfo" => "bar", "discoveryStatus" => "SUCCESS", "badHealthReason" => "no error" ) ); $result = $db->addHostsToCluster($clusterName, $hosts); assert(is_array($result)); assert($result["clusterName"] == $clusterName); assert($result["result"] == 0); assert($result["error"] == ""); assert(count($result["hosts"]) == 5); print "Add Services To Cluster\n"; $services = array( array ( "serviceName" => "HDFS", "state" => "UNINSTALLED", "isEnabled" => TRUE ), array ( "serviceName" => "MAPREDUCE", "state" => "UNINSTALLED", "isEnabled" => TRUE ), array ( "serviceName" => "HBASE", "state" => "UNKNOWN", "isEnabled" => TRUE ) ); $result = $db->addServicesToCluster($clusterName, $services); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Add Service Components To Cluster\n"; $comps = array ( "HDFS" => array ( "NAMENODE" => array( "state" => "UNINSTALLED", "desiredState" => ""), "DATANODE" => array( "state" => "UNINSTALLED", "desiredState" => ""), "SNAMENODE" => array( "state" => "UNINSTALLED", "desiredState" => "") ), "MAPREDUCE" => array ( "JOBTRACKER" => array( "state" => "UNINSTALLED", "desiredState" => ""), "TASKTRACKER" => array( "state" => "UNINSTALLED", "desiredState" => "") ), "HBASE" => array ( "HBASE_MASTER" => array( "state" => "UNINSTALLED", "desiredState" => ""), "HBASE_REGIONSERVER" => array( "state" => "UNINSTALLED", "desiredState" => "") ) ); $result = $db->addServiceComponentsToCluster($clusterName, $comps); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Map Hosts to Roles\n"; $mapping = array ( "NAMENODE" => array ("hrt9n22.cc1.ygridcore.net"), "DATANODE" => array ("hrt9n35.cc1.ygridcore.net", "hrt9n36.cc1.ygridcore.net"), "JOBTRACKER" => array ("hrt9n34.cc1.ygridcore.net"), "TASKTRACKER" => array ("hrt9n35.cc1.ygridcore.net", "hrt9n36.cc1.ygridcore.net"), "HBASE_MASTER" => array ("hrt9n37.cc1.ygridcore.net"), "HBASE_REGIONSERVER" => array ("hrt9n35.cc1.ygridcore.net", "hrt9n36.cc1.ygridcore.net") ); foreach ($mapping as $comp => $hosts) { $db->addHostsToComponent($clusterName, $comp, $hosts, "", ""); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); } print "Suggesting Properties\n"; $suggestProperties = new SuggestProperties(); $result = $suggestProperties->suggestProperties("DataCluster", $db, TRUE); // assert checks assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["configs"])); // check num maps/num reduces // minCpu = 8 // maps should be 8 * 2/3 * 2 => 11 // reduces should be (8 * 2) - #maps => 5 assert($result["configs"]["mapred_map_tasks_max"] == 11); assert($result["configs"]["mapred_red_tasks_max"] == 5); // nn on 64GB box assert($result["configs"]["namenode_heapsize"] > 45000 && $result["configs"]["namenode_heapsize"] < 65000); // jt on 32 GB box assert($result["configs"]["jtnode_heapsize"] > 25000 && $result["configs"]["jtnode_heapsize"] < 32000); // hbm on 16GB box assert($result["configs"]["hbase_master_heapsize"] > 14000 && $result["configs"]["hbase_master_heapsize"] < 16000); // tt and dns on same box as hrs // tt/dn capped to 4G as 32-bit assert($result["configs"]["dtnode_heapsize"] > 3000 && $result["configs"]["dtnode_heapsize"] < 4096); assert($result["configs"]["dtnode_heapsize"] == $result["configs"]["hadoop_heapsize"]); assert($result["configs"]["hbase_regionserver_heapsize"] > 4096 && $result["configs"]["hbase_regionserver_heapsize"] < 5000); $result = $db->getServiceConfig($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["properties"]["mapred_map_tasks_max"] == 11); assert($result["properties"]["mapred_red_tasks_max"] == 5); assert($result["properties"]["namenode_heapsize"] > 45000 && $result["properties"]["namenode_heapsize"] < 65000); assert($result["properties"]["jtnode_heapsize"] > 25000 && $result["properties"]["jtnode_heapsize"] < 32000); // update configs to invalid values to test verification $updatedConfigs = array ( "dtnode_heapsize" => 5120, "hbase_regionserver_heapsize" => 8196, "mapred_red_tasks_max" => 8, "jtnode_heapsize" => 35000, "hadoop_heapsize" => 50); print "Updating Properties to invalid values\n"; $result = $db->updateServiceConfigs($clusterName, $updatedConfigs); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Verifying Properties\n"; $result = $db->getServiceConfig($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $configs = $result["properties"]; $result = $suggestProperties->verifyProperties($clusterName, $db, $configs); assert(is_array($result)); assert($result["result"] != 0); assert($result["error"] != ""); assert(is_array($result["cfgErrors"])); assert(is_array($result["cfgWarnings"])); // dtnode heap, jt heap and hadoop heap shld be errors assert(array_key_exists("dtnode_heapsize", $result["cfgErrors"])); assert(array_key_exists("hadoop_heapsize", $result["cfgErrors"])); assert(array_key_exists("jtnode_heapsize", $result["cfgErrors"])); assert(array_key_exists("hbase_regionserver_heapsize", $result["cfgWarnings"])); assert(array_key_exists("mapred_red_tasks_max", $result["cfgWarnings"])); ?>