Added cluster_port and java_opts to the cluster xml configuration support.
Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/361202a0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/361202a0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/361202a0 Branch: refs/heads/prestonc/benchmark Commit: 361202a0b37e3ed42637b2e549b7c188ef6b1dba Parents: b611a89 Author: Preston Carman <[email protected]> Authored: Tue Apr 22 16:40:53 2014 -0700 Committer: Preston Carman <[email protected]> Committed: Thu May 8 14:15:35 2014 -0700 ---------------------------------------------------------------------- .../main/resources/scripts/cluster_actions.py | 6 +- .../resources/scripts/cluster_information.py | 92 +++++++++++++------- .../src/main/resources/scripts/startcc.sh | 26 ++++-- .../src/main/resources/scripts/startnc.sh | 24 +++-- 4 files changed, 100 insertions(+), 48 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/361202a0/vxquery-server/src/main/resources/scripts/cluster_actions.py ---------------------------------------------------------------------- diff --git a/vxquery-server/src/main/resources/scripts/cluster_actions.py b/vxquery-server/src/main/resources/scripts/cluster_actions.py index cef5db1..a7cda17 100644 --- a/vxquery-server/src/main/resources/scripts/cluster_actions.py +++ b/vxquery-server/src/main/resources/scripts/cluster_actions.py @@ -109,14 +109,14 @@ class ClusterActions: def start_cc(self, machine): print "Start Cluster Controller." - print " " + machine.get_id() + " " + machine.get_ip() - command = "./vxquery-server/target/appassembler/bin/startcc.sh " + machine.get_ip() + print " " + machine.get_id() + " " + machine.get_ip() + ":" + machine.get_port() + command = "./vxquery-server/target/appassembler/bin/startcc.sh " + machine.get_ip() + " \"" + machine.get_port() + "\" \"" + machine.get_java_opts() + "\"" self.run_remote_command(machine.get_username(), machine.get_id(), command) def start_nc(self, machine, cc): print "Start Node Controller." print " " + machine.get_id() + " " + machine.get_ip() - command = "./vxquery-server/target/appassembler/bin/startnc.sh " + cc.get_ip() + " " + machine.get_ip() + " " + machine.get_id() + command = "./vxquery-server/target/appassembler/bin/startnc.sh " + machine.get_id() + " " + machine.get_ip() + " " + cc.get_ip() + " \"" + cc.get_port() + "\" \"" + machine.get_java_opts() + "\"" self.run_remote_command(machine.get_username(), machine.get_id(), command) def stop_cc(self, machine): http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/361202a0/vxquery-server/src/main/resources/scripts/cluster_information.py ---------------------------------------------------------------------- diff --git a/vxquery-server/src/main/resources/scripts/cluster_information.py b/vxquery-server/src/main/resources/scripts/cluster_information.py index b31660b..677204b 100644 --- a/vxquery-server/src/main/resources/scripts/cluster_information.py +++ b/vxquery-server/src/main/resources/scripts/cluster_information.py @@ -23,59 +23,79 @@ class ClusterInformation: self.config = parse(self.cluster_xml_file) def get_username(self): - return self.get_text(self.config.getElementsByTagName("username")[0]) + return get_tag_text(self.config, "username") - # Depricated - def get_master_node_ip(self): - master_node = self.config.getElementsByTagName("master_node")[0] - return self.get_cluster_ip(master_node) - - # Depricated - def get_node_ip_list(self): - nodes = [] - for node in self.config.getElementsByTagName("node"): - nodes.append(self.get_cluster_ip(node)) - return nodes + def get_java_opts(self): + return get_tag_text(self.config, "java_opts") def get_master_node_machine(self): master_node = self.config.getElementsByTagName("master_node")[0] - id = self.get_cluster_id(master_node) - ip = self.get_cluster_ip(master_node) + id = NodeXmlReader.get_cluster_id(master_node) + ip = NodeXmlReader.get_cluster_ip(master_node) + port = NodeXmlReader.get_cluster_port(master_node) + java_opts = NodeXmlReader.get_java_opts(master_node) + if java_opts is "": + java_opts = self.get_java_opts() username = self.get_username() - return Machine(id, ip, username) + return Machine(id, ip, username, port, java_opts) def get_node_machine_list(self): nodes = [] username = self.get_username() for node in self.config.getElementsByTagName("node"): - id = self.get_cluster_id(node) - ip = self.get_cluster_ip(node) - nodes.append(Machine(id, ip, username)) + id = NodeXmlReader.get_cluster_id(node) + ip = NodeXmlReader.get_cluster_ip(node) + java_opts = NodeXmlReader.get_java_opts(node) + if java_opts is "": + java_opts = self.get_java_opts() + nodes.append(Machine(id, ip, username, "", java_opts)) return nodes - # -------------------------------------------------------------------------- - # Node Specific Functions - # -------------------------------------------------------------------------- - def get_cluster_ip(self, node): - return self.get_text(node.getElementsByTagName("cluster_ip")[0]) +class NodeXmlReader(object): + ''' -------------------------------------------------------------------------- + Node Specific Functions + -------------------------------------------------------------------------- ''' + @staticmethod + def get_cluster_id(node): + return get_tag_text(node, "id") - def get_cluster_id(self, node): - return self.get_text(node.getElementsByTagName("id")[0]) + @staticmethod + def get_cluster_ip(node): + return get_tag_text(node, "cluster_ip") - def get_text(self, xml_node): - rc = [] - for node in xml_node.childNodes: - if node.nodeType == node.TEXT_NODE: - rc.append(node.data) - return ''.join(rc) + @staticmethod + def get_cluster_port(node): + return get_tag_text(node, "cluster_port") + + @staticmethod + def get_java_opts(node): + return get_tag_text(node, "java_opts") + +def get_tag_text(xml_node, tag): + values = xml_node.getElementsByTagName(tag) + if len(values) > 0: + return get_text(values[0]) + else: + return "" + +def get_text(xml_node): + rc = [] + for node in xml_node.childNodes: + if node.nodeType == node.TEXT_NODE: + rc.append(node.data) + return ''.join(rc) class Machine: + java_opts = "" log_path = "" + port = "" - def __init__(self, id, ip, username): + def __init__(self, id, ip, username, port="", java_opts=""): self.id = id self.ip = ip self.username = username + self.port = port + self.java_opts = java_opts def get_id(self): return self.id @@ -83,6 +103,12 @@ class Machine: def get_ip(self): return self.ip + def get_java_opts(self): + return self.java_opts + + def get_port(self): + return self.port + def get_username(self): return self.username @@ -90,4 +116,4 @@ class Machine: return self.log_path def set_log_path(self, path): - self.log_path = path \ No newline at end of file + self.log_path = path http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/361202a0/vxquery-server/src/main/resources/scripts/startcc.sh ---------------------------------------------------------------------- diff --git a/vxquery-server/src/main/resources/scripts/startcc.sh b/vxquery-server/src/main/resources/scripts/startcc.sh index 68cfe35..d7b397e 100755 --- a/vxquery-server/src/main/resources/scripts/startcc.sh +++ b/vxquery-server/src/main/resources/scripts/startcc.sh @@ -20,18 +20,32 @@ hostname CCHOST=$1 +CCPORT=$2 +J_OPTS=$3 -#Export JAVA_HOME and JAVA_OPTS -export JAVA_HOME=$JAVA_HOME -export JAVA_OPTS=$CCJAVA_OPTS +#Export JAVA_HOME +export JAVA_HOME=${JAVA_HOME} + +# java opts added parameters +if [ ! -z "${J_OPTS}" ] +then + JAVA_OPTS="${JAVA_OPTS} ${J_OPTS}" + export JAVA_OPTS +fi VXQUERY_HOME=`pwd` CCLOGS_DIR=${VXQUERY_HOME}/logs #Remove the logs dir -rm -rf $CCLOGS_DIR -mkdir $CCLOGS_DIR +rm -rf ${CCLOGS_DIR} +mkdir ${CCLOGS_DIR} +# Set up the options for the cc. +CC_OPTIONS=" -client-net-ip-address ${CCHOST} -cluster-net-ip-address ${CCHOST} " +if [ ! -z "${CCPORT}" ] +then + CC_OPTIONS=" ${CC_OPTIONS} -cluster-net-port ${CCPORT} " +fi #Launch hyracks cc script without toplogy -${VXQUERY_HOME}/vxquery-server/target/appassembler/bin/vxquerycc -client-net-ip-address $CCHOST -cluster-net-ip-address $CCHOST &> $CCLOGS_DIR/cc.log & +${VXQUERY_HOME}/vxquery-server/target/appassembler/bin/vxquerycc ${CC_OPTIONS} &> ${CCLOGS_DIR}/cc.log & http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/361202a0/vxquery-server/src/main/resources/scripts/startnc.sh ---------------------------------------------------------------------- diff --git a/vxquery-server/src/main/resources/scripts/startnc.sh b/vxquery-server/src/main/resources/scripts/startnc.sh index c450188..5b22be4 100755 --- a/vxquery-server/src/main/resources/scripts/startnc.sh +++ b/vxquery-server/src/main/resources/scripts/startnc.sh @@ -19,16 +19,21 @@ hostname -CCHOST=$1 +NODEID=$1 IPADDR=$2 -NODEID=$3 - +CCHOST=$3 +CCPORT=$4 +J_OPTS=$5 #Set JAVA_HOME export JAVA_HOME=$JAVA_HOME -#Set JAVA_OPTS -export JAVA_OPTS=$NCJAVA_OPTS +# java opts added parameters +if [ ! -z "${J_OPTS}" ] +then + JAVA_OPTS="${JAVA_OPTS} ${J_OPTS}" + export JAVA_OPTS +fi VXQUERY_HOME=`pwd` NCLOGS_DIR=${VXQUERY_HOME}/logs @@ -37,6 +42,13 @@ NCLOGS_DIR=${VXQUERY_HOME}/logs rm -rf $NCLOGS_DIR mkdir $NCLOGS_DIR +# Set up the options for the cc. +NC_OPTIONS=" -cc-host ${CCHOST} -cluster-net-ip-address ${IPADDR} -data-ip-address ${IPADDR} -result-ip-address ${IPADDR} -node-id ${NODEID} " +if [ ! -z "${CCPORT}" ] +then + NC_OPTIONS=" ${NC_OPTIONS} -cc-port ${CCPORT} " +fi + #Launch hyracks nc -${VXQUERY_HOME}/vxquery-server/target/appassembler/bin/vxquerync -cc-host $CCHOST -cluster-net-ip-address $IPADDR -data-ip-address $IPADDR -result-ip-address $IPADDR -node-id $NODEID &> $NCLOGS_DIR/nc.log & +${VXQUERY_HOME}/vxquery-server/target/appassembler/bin/vxquerync ${NC_OPTIONS} &> ${NCLOGS_DIR}/nc.log &
