You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by rl...@apache.org on 2015/11/13 07:58:26 UTC

[2/2] incubator-hawq git commit: Revert "HAWQ-40. Refact hawq standby init. Change standby start sequence and do init directly on standby host."

Revert "HAWQ-40. Refact hawq standby init. Change standby start sequence and do init directly on standby host."

This reverts commit d0c9c1de4ab4eb8d5a6fe44345cda28a70486c81.


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/17f0a564
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/17f0a564
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/17f0a564

Branch: refs/heads/master
Commit: 17f0a56420354c179267a0eceeb1ddebe2c400ef
Parents: 75926a3
Author: stanlyxiang <st...@gmail.com>
Authored: Fri Nov 13 14:53:49 2015 +0800
Committer: stanlyxiang <st...@gmail.com>
Committed: Fri Nov 13 14:53:49 2015 +0800

----------------------------------------------------------------------
 tools/bin/hawq_ctl                   | 157 +++++++---------
 tools/bin/hawqpylib/hawqlib.py       |   6 +-
 tools/bin/lib/hawq_bash_functions.sh | 132 -------------
 tools/bin/lib/hawqinit.sh            | 301 +++++++++++++-----------------
 4 files changed, 192 insertions(+), 404 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/17f0a564/tools/bin/hawq_ctl
----------------------------------------------------------------------
diff --git a/tools/bin/hawq_ctl b/tools/bin/hawq_ctl
index 4890cd4..880451a 100755
--- a/tools/bin/hawq_ctl
+++ b/tools/bin/hawq_ctl
@@ -66,7 +66,7 @@ class HawqInit:
                 if item in self.hawq_dict:
                     logger.info("Check: %s is set" % item)
                 else:
-                    sys.exit("Check: %s not configured in hawq-site.xml" % item)
+                    sys.exit("Check: %s not configured in hawq-site.xml." % item)
 
         self.master_host_name = self.hawq_dict['hawq_master_address_host']
         self.master_port = self.hawq_dict['hawq_master_address_port']
@@ -88,13 +88,9 @@ class HawqInit:
             self.standby_host_name = self.hawq_dict['hawq_standby_address_host']
             self.standby_port = self.master_port
             self.standby_address = self.standby_host_name + ":" + self.standby_port
-            if self.standby_host_name in (self.master_host_name, 'localhost', '127.0.0.1'):
-                logger.error("Standby host should not be the same as master host")
-                sys.exit(1)
         else:
             logger.info("No standby host configured, skip it")
             self.standby_host_name = ''
-
         if 'enable_secure_filesystem' in self.hawq_dict:
             self.enable_secure_filesystem=self.hawq_dict['enable_secure_filesystem']
             self.krb_server_keyfile =self.hawq_dict['krb_server_keyfile']
@@ -135,16 +131,16 @@ class HawqInit:
     def check_hdfs_path(self):
         cmd = "%s/bin/gpcheckhdfs hdfs %s %s %s" % \
               (self.GPHOME, self.dfs_url, self.enable_secure_filesystem, self.krb_server_keyfile)
-        logger.info("Check if hdfs path is available")
+        logger.info("Check if hdfs path is available.")
         logger.debug("Check hdfs: %s" % cmd)
-        check_return_code(local_ssh(cmd, logger, warning = True), logger, "Check hdfs failed, please verify your hdfs settings")
+        check_return_code(local_ssh(cmd, logger, warning = True), logger, "Check hdfs failed, please verify your hdfs settings.")
 
     def set_total_vsegment_num(self):
         cmd = "%s; hawq config -c default_segment_num -v %s --skipvalidation -q > /dev/null" % \
                (source_hawq_env, self.total_vseg_num)
         result = local_ssh(cmd, logger)
         if result != 0:
-            logger.warn("Set default_segment_num failed")
+            logger.warn("Set default_segment_num failed.")
         return result
 
     def set_vsegment_num_per_node(self):
@@ -153,7 +149,7 @@ class HawqInit:
               (source_hawq_env, self.vseg_num_per_node)
         result = local_ssh(cmd, logger)
         if result != 0:
-            logger.warn("Set hawq_resourcemanager_query_vsegment_number_per_segment_limit failed")
+            logger.warn("Set hawq_resourcemanager_query_vsegment_number_per_segment_limit failed.")
         return result
 
     def _get_master_init_cmd(self):
@@ -167,7 +163,7 @@ class HawqInit:
         return cmd
 
     def hawq_remove_standby(self):
-        """Removes the standby master"""
+        """Removes the standby master."""
         running_standby_host = ''
 
         try:
@@ -177,7 +173,7 @@ class HawqInit:
             rows = dbconn.execSQL(conn, query)
             conn.close()
         except DatabaseError, ex:
-            logger.error("Failed to connect to database, this script can only be run when the database is up")
+            logger.error("Failed to connect to database, this script can only be run when the database is up.")
             sys.exit(1)
 
         for row in rows:
@@ -187,14 +183,12 @@ class HawqInit:
         if running_standby_host:
             logger.info("running standby host is %s" % running_standby_host)
             signal.signal(signal.SIGINT,signal.SIG_IGN)
-            logger.info("Stop HAWQ cluster")
-            cmd = "%s; hawq stop master -a -q" % source_hawq_env
-            check_return_code(local_ssh(cmd, logger), logger, "Stop HAWQ master failed, exit")
-            cmd = "%s; hawq stop allsegments -a -q" % source_hawq_env
-            check_return_code(local_ssh(cmd, logger), logger, "Stop HAWQ segments failed, exit")
-            logger.info("Start HAWQ master")
+            cmd = "%s; hawq stop cluster -a -q" % source_hawq_env
+            logger.info("Stop HAWQ cluster.")
+            check_return_code(local_ssh(cmd, logger), logger, "Stop HAWQ cluster failed, exit.")
+            logger.info("Start HAWQ master.")
             cmd = "%s; hawq start master -m -q" % source_hawq_env
-            check_return_code(local_ssh(cmd, logger), logger, "Start HAWQ master failed, exit")
+            check_return_code(local_ssh(cmd, logger), logger, "Start HAWQ master failed, exit.")
 
             try:
                 logger.info('Remove standby from Database catalog.')
@@ -207,15 +201,15 @@ class HawqInit:
                 #conn.close()
                 cmd = 'env PGOPTIONS="-c gp_session_role=utility" %s/bin/psql -p %s -d template1 -c \
                     "select gp_remove_master_standby();"' % (self.GPHOME, self.master_port)
-                check_return_code(local_ssh(cmd, logger), logger, \
-                                  "Update catalog failed, exit", "Catalog updated successfully.")
-                logger.info("Stop HAWQ master")
+                local_ssh(cmd, logger)
+                logger.info('Database catalog updated successfully.')
+                logger.info("Stop HAWQ master.")
                 cmd = "%s; hawq stop master -a" % source_hawq_env
-                check_return_code(local_ssh(cmd, logger), logger, "Stop hawq master failed, exit")
+                check_return_code(local_ssh(cmd, logger), logger, "Stop hawq master failed, exit.")
             except DatabaseError, ex:
-                logger.error("Failed to connect to database, this script can only be run when the database is up")
+                logger.error("Failed to connect to database, this script can only be run when the database is up.")
                 cmd = "%s; hawq stop master -a" % source_hawq_env
-                check_return_code(local_ssh(cmd, logger), logger, "Stop hawq master failed, exit")
+                check_return_code(local_ssh(cmd, logger), logger, "Stop hawq master failed, exit.")
             remove_property_xml("hawq_standby_address_host", "%s/etc/hawq-site.xml" % self.GPHOME)
             host_list = parse_hosts_file(self.GPHOME)
             sync_hawq_site(self.GPHOME, host_list)
@@ -232,42 +226,24 @@ class HawqInit:
             logger.debug("rm -rf %s %s" % (self.master_data_directory, tmp_dir_list))
             cmd = "rm -rf %s %s" % (self.master_data_directory, tmp_dir_list)
             check_return_code(remote_ssh(cmd, self.standby_host_name, self.user), logger, \
-                              "Delete standby master's directories failed, exit")
+                              "Delete standby master's directories failed, exit.")
             signal.signal(signal.SIGINT,signal.default_int_handler)
-            logger.info('Remove standby master finished')
+            logger.info('Remove standby master finished.')
         else:
-            logger.info("Do not find a running standby master")
-
-    def _init_standby(self):
-        logger.info("Start to init standby master: '%s'" % self.standby_host_name)
-        logger.info("This might take a couple of minutes, please wait...")
-        # Sync config files from master.
-        scpcmd = "scp %s/etc/_mgmt_config %s:%s/etc/_mgmt_config > /dev/null" % \
-                 (self.GPHOME, self.standby_host_name, self.GPHOME)
-        check_return_code(remote_ssh(scpcmd, self.master_host_name, self.user), \
-                          logger, "Sync _mgmt_config failed")
-        scpcmd = "scp %s/etc/slaves %s:%s/etc/slaves > /dev/null" % \
-                 (self.GPHOME, self.standby_host_name, self.GPHOME)
-        check_return_code(remote_ssh(scpcmd, self.master_host_name, self.user), \
-                          logger, "Sync slaves file failed")
-
-        standby_init_cmd = self._get_standby_init_cmd()
-
-        return check_return_code(remote_ssh_nowait(standby_init_cmd, self.standby_host_name, self.user))
-
+            logger.info("Do not find a running standby master.")
 
     def _resync_standby(self):
-        logger.info("Re-sync standby")
+        logger.info("Re-sync standby.")
         cmd = "%s; hawq stop cluster -a" % source_hawq_env
-        check_return_code(local_ssh(cmd, logger), logger, "Stop hawq cluster failed, exit")
+        check_return_code(local_ssh(cmd, logger), logger, "Stop hawq cluster failed, exit.")
         cmd = "cd %s; %s; %s/bin/lib/pysync.py -x gpperfmon/data -x pg_log -x db_dumps %s %s:%s" % \
                  (self.master_data_directory, source_hawq_env,  self.GPHOME, self.master_data_directory,
                   self.standby_host_name, self.master_data_directory)
         result = local_ssh(cmd, logger)
-        check_return_code(result, logger, "Re-sync standby master failed, exit")
+        check_return_code(result, logger, "Re-sync standby master failed, exit.")
         cmd = "%s; hawq start cluster -a" % source_hawq_env
         result = local_ssh(cmd, logger)
-        check_return_code(result, logger, "Start hawq cluster failed")
+        check_return_code(result, logger, "Start hawq cluster failed.")
 
         return result
         
@@ -308,10 +284,18 @@ class HawqInit:
             logger.info("Segments init successfully on nodes '%s'" % self.host_list)
 
         if self.standby_host_name not in ('', 'None', 'none', 'NONE'):
-            check_return_code(self._init_standby(), logger, \
-                              "Init standby failed, exit", \
-                              "Init standby successfully")
-        logger.info("Init HAWQ cluster successfully")
+            logger.info("Start to init standby master: '%s'" % self.standby_host_name)
+            logger.info("This might take a couple of minutes, please wait...")
+            standby_init_cmd = self._get_standby_init_cmd()
+            scpcmd = "scp %s/etc/_mgmt_config %s:%s/etc/_mgmt_config > /dev/null" % \
+                     (self.GPHOME, self.standby_host_name, self.GPHOME)
+            local_ssh(scpcmd)
+            scpcmd = "scp %s/etc/slaves %s:%s/etc/slaves > /dev/null" % \
+                     (self.GPHOME, self.standby_host_name, self.GPHOME)
+            local_ssh(scpcmd)
+            check_return_code(remote_ssh(standby_init_cmd, self.master_host_name, self.user), logger, \
+                              "Standby master init failed, exit", "Standby master init successfully")
+            logger.info("HAWQ cluster init successfully")
         return None
 
     def run(self):
@@ -329,18 +313,16 @@ class HawqInit:
             logger.info("Try to remove standby master")
             self.hawq_remove_standby()
         elif self.node_type == "standby":
-            if self.standby_host_name in ('', 'None', 'none', 'NONE'):
-                logger.info("No standby host found")
-                logger.info("Please check your standby host name")
-                sys.exit(1)
+            logger.info("Start to init standby master")
+            logger.info("This might take couple minutes, please wait...")
             if self.no_update:
                 check_return_code(self._resync_standby(), logger, \
                                   "Standby master re-sync failed, exit", \
                                   "Standby master re-sync successfully")
             else:
-                check_return_code(self._init_standby(), logger, \
-                                  "Init standby failed, exit", \
-                                  "Init standby successfully")
+                cmd = self._get_standby_init_cmd()
+                check_return_code(local_ssh(cmd, logger), logger, "Standby master init failed, exit", \
+                                  "Standby master init successfully")
 
         elif self.node_type == "segment":
             cmd = self._get_segment_init_cmd()
@@ -351,7 +333,7 @@ class HawqInit:
             self.check_hdfs_path()
             self._init_cluster()
         else:
-            sys.exit('hawq init object should be one of master/standby/segment/cluster')
+            sys.exit('node_type should be in master/standby/segment/cluster')
         return None
 
 class HawqStart:
@@ -382,7 +364,7 @@ class HawqStart:
 
         for item in check_items:
             if item not in self.hawq_dict:
-                logger.error("Check: %s not configured in hawq-site.xml" % item)
+                logger.error("Check: %s not configured in hawq-site.xml." % item)
                 sys.exit()
 
         self.master_host_name = self.hawq_dict['hawq_master_address_host']
@@ -451,16 +433,14 @@ class HawqStart:
 
     def _start_all_nodes(self):
         logger.info("Start all the nodes in hawq cluster")
+        logger.info("Starting master node '%s'" % self.master_host_name)
+        check_return_code(self.start_master(), logger, "Master start failed, exit", \
+                          "Master started successfully")
 
         if self.standby_host_name not in ('', 'None', 'none', 'NONE'):
             logger.info("Starting standby master '%s'" % self.standby_host_name)
             check_return_code(self.start_standby(), logger, "Standby master start failed, exit", 
                               "Standby master started successfully")
-
-        logger.info("Starting master node '%s'" % self.master_host_name)
-        check_return_code(self.start_master(), logger, "Master start failed, exit", \
-                          "Master started successfully")
-
         segment_cmd_str = self._start_segment_cmd()
         logger.info("Start segments in list: %s" % self.host_list)
         work_list = []
@@ -475,7 +455,6 @@ class HawqStart:
             logger.error("Segments start failed")
         else:
             logger.info("Segments started successfully")
-            logger.info("HAWQ cluster started successfully")
         return node_init.return_flag
 
     def _start_all_segments(self):
@@ -552,7 +531,7 @@ class HawqStop:
 
         for item in check_items:
             if item not in self.hawq_dict:
-                sys.exit("Check: %s not configured in hawq-site.xml" % item)
+                sys.exit("Check: %s not configured in hawq-site.xml." % item)
 
         self.master_host_name = self.hawq_dict['hawq_master_address_host']
         self.master_port = self.hawq_dict['hawq_master_address_port']
@@ -764,21 +743,13 @@ def remote_ssh(cmd_str, host, user, q=None):
     result = subprocess.Popen(remote_cmd_str, shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
     stdout,stderr = result.communicate()
     if stdout and stdout != '':
-        logger.info(stdout.strip())
-    if stderr and stderr != '':
-        logger.info(stderr.strip())
+        logger.info(stdout)
+    if stderr and stdout != '':
+        logger.info(stderr)
     if q:
         q.put(("done", host, result.returncode))
     return result.returncode
 
-def remote_ssh_nowait(cmd, host, user):
-    if user == "":
-        remote_cmd_str = "ssh -o 'StrictHostKeyChecking no' %s \"%s\"" % (host, cmd)
-    else:
-        remote_cmd_str = "ssh -o 'StrictHostKeyChecking no' %s@%s \"%s\"" % (user, host, cmd)
-    result = subprocess.Popen(remote_cmd_str, shell=True).wait()
-    return result
-
 
 def check_progress(q, total_num, action, quiet=False):
     working_num = total_num
@@ -828,31 +799,31 @@ def hawq_activate_standby(opts, hawq_dict):
     cmd = "%s; hawq stop cluster -a -M fast;" % source_hawq_env
     result = local_ssh(cmd, logger)
     if result != 0:
-        logger.debug("Stop cluster failed, try to stop it immediately")
+        logger.debug("Stop cluster failed, try to stop it immediately.")
         cmd = "%s; hawq stop cluster -a -M immediate;" % source_hawq_env
-        check_return_code(local_ssh(cmd, logger), logger, "Stop cluster failed, exit")
+        check_return_code(local_ssh(cmd, logger), logger, "Stop cluster failed, exit.")
 
     cmd = "%s; hawq config -c hawq_master_address_host -v %s --skipvalidation -q" % \
            (source_hawq_env, hawq_dict['hawq_standby_address_host'])
-    check_return_code(local_ssh(cmd, logger), logger, "Set hawq_master_address_host failed")
+    check_return_code(local_ssh(cmd, logger), logger, "Set hawq_master_address_host failed.")
 
     cmd = "%s; hawq config -c hawq_standby_address_host -v %s --skipvalidation -q" % \
            (source_hawq_env, 'none')
-    check_return_code(local_ssh(cmd, logger), logger, "Set hawq_standby_address_host failed")
+    check_return_code(local_ssh(cmd, logger), logger, "Set hawq_standby_address_host failed.")
 
     cmd = '''echo "gp_persistent_repair_global_sequence = true" >> %s/%s''' % (hawq_dict['hawq_master_directory'], 'postgresql.conf')
-    check_return_code(local_ssh(cmd, logger), logger, "Set gp_persistent_repair_global_sequence = true failed")
+    check_return_code(local_ssh(cmd, logger), logger, "Set gp_persistent_repair_global_sequence = true failed.")
 
     cmd = "%s; hawq start master" % source_hawq_env
-    check_return_code(local_ssh(cmd, logger), logger, "Start master failed")
+    check_return_code(local_ssh(cmd, logger), logger, "Start master failed.")
 
     cmd = "%s; env PGOPTIONS=\"-c gp_session_role=utility\" psql -p %s -d template1 -c \"select gp_remove_master_standby()\
             where (select count(*) from gp_segment_configuration where role='s') = 1;\"" % (source_hawq_env, hawq_dict['hawq_master_address_port'])
     result = local_ssh(cmd, logger)
     cmd = "%s; hawq stop master -a" % source_hawq_env
-    check_return_code(local_ssh(cmd, logger), logger, "Stop master failed")
+    check_return_code(local_ssh(cmd, logger), logger, "Stop master failed.")
     cmd = "%s; hawq start cluster" % source_hawq_env
-    check_return_code(local_ssh(cmd, logger), logger, "Start cluster failed")
+    check_return_code(local_ssh(cmd, logger), logger, "Start cluster failed.")
     cmd = '''sed -i "/gp_persistent_repair_global_sequence/d" %s/%s''' % (hawq_dict['hawq_master_directory'], 'postgresql.conf')
     check_return_code(local_ssh(cmd, logger))
     return None
@@ -917,16 +888,16 @@ def create_parser():
                       dest="masteronly",
                       action="store_true",
                       default=False,
-                      help="Start hawq in utility mode")
+                      help="Start hawq in utility mode.")
     parser.add_option("-U", "--special-mode",
                       choices=['upgrade', 'maintenance'],
                       dest="special_mode",
-                      help="Start hawq in upgrade/maintenance mode")
+                      help="Start hawq in upgrade/maintenance mode.")
     parser.add_option("-R", "--restrict",
                       dest="restrict",
                       action="store_true",
                       default=False,
-                      help="Start hawq in restrict mode")
+                      help="Start hawq in restrict mode.")
     parser.add_option('-r', '--remove-standby', action='store_true',
                       dest='remove_standby', default=False,
                       help='Delete hawq standby master node.')
@@ -937,12 +908,12 @@ def create_parser():
                       type="int",
                       dest="virtual_seg_num",
                       default=8,
-                      help="Sets maximum number of virtual segments per node")
+                      help="Sets maximum number of virtual segments per node.")
     parser.add_option("--vsegment-number",
                       type="int",
                       dest="virtual_seg_num",
                       default=8,
-                      help="Sets maximum number of virtual segments per node")
+                      help="Sets maximum number of virtual segments per node.")
     parser.add_option("--locale",
                       dest="hawq_locale",
                       default="en_US.utf8",

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/17f0a564/tools/bin/hawqpylib/hawqlib.py
----------------------------------------------------------------------
diff --git a/tools/bin/hawqpylib/hawqlib.py b/tools/bin/hawqpylib/hawqlib.py
index bf9168c..b5da22c 100755
--- a/tools/bin/hawqpylib/hawqlib.py
+++ b/tools/bin/hawqpylib/hawqlib.py
@@ -87,12 +87,12 @@ def local_ssh(cmd, logger = None, warning = False):
     stdout,stderr = result.communicate()
     if logger:
         if stdout != '':
-            logger.info(stdout.strip())
+            logger.info(stdout)
         if stderr != '':
             if not warning:
-                logger.error(stderr.strip())
+                logger.error(stderr)
             else:
-                logger.warn(stderr.strip())
+                logger.warn(stderr)
     return result.returncode
 
 

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/17f0a564/tools/bin/lib/hawq_bash_functions.sh
----------------------------------------------------------------------
diff --git a/tools/bin/lib/hawq_bash_functions.sh b/tools/bin/lib/hawq_bash_functions.sh
deleted file mode 100755
index f547c30..0000000
--- a/tools/bin/lib/hawq_bash_functions.sh
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/bin/bash
-
-#Check that SHELL is /bin/bash
-if [ $SHELL != /bin/bash ] && [ `ls -al /bin/sh|grep -c bash` -ne 1 ];then
-    echo "[FATAL]:-Scripts must be run by a user account that has SHELL=/bin/bash"
-    if [ -f /bin/bash ];then
-        echo "[INFO]:-/bin/bash exists, please update user account shell"
-    else
-        echo "[WARN]:-/bin/bash does not exist, does bash need to be installed?"
-    fi
-    exit 2
-fi
-
-declare -a CMDPATH
-CMDPATH=(/usr/kerberos/bin /usr/sfw/bin /opt/sfw/bin /usr/local/bin /bin /usr/bin /sbin /usr/sbin /usr/ucb /sw/bin)
-
-findCmdInPath() {
-        cmdtofind=$1
-
-        if [ $cmdtofind = 'awk' ] && [ `uname` = SunOS ]; then
-            if [ -f "/usr/xpg4/bin/awk" ]; then
-                CMD=/usr/xpg4/bin/awk
-                echo $CMD
-                return
-            else
-                echo $cmdtofind
-                return "Problem in hawq_bash_functions, command '/usr/xpg4/bin/awk' not found. \
-                        You will need to edit the script named hawq_bash_functions.sh to \
-                        properly locate the needed commands for your platform."
-            fi
-        fi
-        for pathel in ${CMDPATH[@]}
-                do
-                CMD=$pathel/$cmdtofind
-                if [ x"$CMD" != x"" ] && [ -f $CMD ]; then
-                        echo $CMD
-                        return
-                fi
-        done
-        echo $cmdtofind
-        return "Problem in hawq_bash_functions, command '$cmdtofind' not found in COMMAND path. \
-                You will need to edit the script named hawq_bash_functions.sh to properly locate \
-                the needed commands for your platform."
-}
-
-AWK=`findCmdInPath awk`
-BASENAME=`findCmdInPath basename`
-CAT=`findCmdInPath cat`
-CLEAR=`findCmdInPath clear`
-CKSUM=`findCmdInPath cksum`
-CUT=`findCmdInPath cut`
-DATE=`findCmdInPath date`
-DD=`findCmdInPath dd`
-DIRNAME=`findCmdInPath dirname`
-DF=`findCmdInPath df`
-DU=`findCmdInPath du`
-ECHO=`findCmdInPath echo`
-EXPR=`findCmdInPath expr`
-FIND=`findCmdInPath find`
-TABECHO=$ECHO
-PROMPT="$ECHO"
-GREP=`findCmdInPath grep`
-GZIPCMD=`findCmdInPath gzip`
-EGREP=`findCmdInPath egrep`
-HEAD=`findCmdInPath head`
-HOSTNAME=`findCmdInPath hostname`
-IPCS=`findCmdInPath ipcs`
-IFCONFIG=`findCmdInPath ifconfig`
-KILL=`findCmdInPath kill`
-LESSCMD=`findCmdInPath less`
-LS=`findCmdInPath ls`
-LOCALE=`findCmdInPath locale`
-MV=`findCmdInPath mv`
-MORECMD=`findCmdInPath more`
-MKDIR=`findCmdInPath mkdir`
-MKFIFO=`findCmdInPath mkfifo`
-NETSTAT=`findCmdInPath netstat`
-PING=`findCmdInPath ping`
-PS=`findCmdInPath ps`
-PYTHON=${GPHOME}/ext/python/bin/python
-RM=`findCmdInPath rm`
-SCP=`findCmdInPath scp`
-SED=`findCmdInPath sed`
-SLEEP=`findCmdInPath sleep`
-SORT=`findCmdInPath sort`
-SPLIT=`findCmdInPath split`
-SSH=`findCmdInPath ssh`
-TAIL=`findCmdInPath tail`
-TAR=`findCmdInPath tar`
-TEE=`findCmdInPath tee`
-TOUCH=`findCmdInPath touch`
-TR=`findCmdInPath tr`
-WC=`findCmdInPath wc`
-WHICH=`findCmdInPath which`
-WHOAMI=`findCmdInPath whoami`
-ZCAT=`findCmdInPath zcat`
-
-CALL_HOST=`$HOSTNAME|$CUT -d. -f1`
-VERBOSE=0
-USER_NAME=`id|$AWK '{print $1}'|$CUT -d"(" -f2|$TR -d ')'`
-PROG_NAME=`echo $0 | $TR -d '-'`
-PROG_NAME=`$BASENAME $PROG_NAME`
-PROG_PIDNAME=`echo $$ $PROG_NAME | awk '{printf "%06d %s\n", $1, $2}'`
-LOG_FILE=/tmp/mylog
-#DEBUG_LEVEL=1
-
-LOG_MSG () {
-        EXIT_STATUS=0
-        TIME=`$DATE +%H":"%M":"%S`
-        CUR_DATE=`$DATE +%Y%m%d`
-        DISPLAY_TXT=0
-        #Check to see if we need to update value of EXIT_STATUS
-        if [ `$ECHO $1|$AWK -F"]" '{print $1}'|$TR -d '\133'|$GREP -c "WARN"` -eq 1 ];then
-            EXIT_STATUS=1
-        fi
-        if [ `$ECHO $1|$AWK -F"]" '{print $1}'|$TR -d '\133'|$GREP -c "FATAL"` -eq 1 ];then
-            EXIT_STATUS=2
-        fi
-        if [ `$ECHO $1|$AWK -F"]" '{print $1}'|$TR -d '\133'|$GREP -c "ERROR"` -eq 1 ];then
-            EXIT_STATUS=2
-        fi
-        if [ "$2" == "verbose" ] || [ "$2" == "VERBOSE" ] || [ "$2" == "v" ] || [ "$2" == "V" ]; then
-            VERBOSE=1
-        fi
-
-        if [ "$VERBOSE" == "1" ]; then
-            $ECHO "${CUR_DATE}:${TIME}:${PROG_PIDNAME}:${CALL_HOST}:${USER_NAME}-$1" | $TEE -a $LOG_FILE
-        else
-            $ECHO "${CUR_DATE}:${TIME}:${PROG_PIDNAME}:${CALL_HOST}:${USER_NAME}-$1" >> $LOG_FILE
-        fi
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/17f0a564/tools/bin/lib/hawqinit.sh
----------------------------------------------------------------------
diff --git a/tools/bin/lib/hawqinit.sh b/tools/bin/lib/hawqinit.sh
index 312f3c1..6a7e1d8 100755
--- a/tools/bin/lib/hawqinit.sh
+++ b/tools/bin/lib/hawqinit.sh
@@ -2,25 +2,22 @@
 
 object_type=$1
 GPHOME=$2
-VERBOSE=0
-if [ "$3" == "1" ]; then
-    VERBOSE=1
-fi
-source ${GPHOME}/bin/lib/hawq_bash_functions.sh
-SOURCE_PATH="source ${GPHOME}/greenplum_path.sh"
-${SOURCE_PATH}
+
+current_time=`date '+%s'`
+mgmt_config_file=${GPHOME}/etc/_mgmt_config
 
 if [ -f /etc/redhat-release ]; then
-    os_version=`${CAT} /etc/redhat-release | ${AWK} '{print substr($7,0,1)}'`
+    os_version=`cat /etc/redhat-release | awk '{print substr($7,0,1)}'`
 else
     os_version='other'
 fi
 
-mgmt_config_file=${GPHOME}/etc/_mgmt_config
+source ${GPHOME}/greenplum_path.sh
+
 if [ -f ${mgmt_config_file} ]; then
     source ${mgmt_config_file} > /dev/null 2>&1
 else
-    ${ECHO} "${mgmt_config_file} is not exist, exit"
+    echo "${mgmt_config_file} is not exist, exit"
     exit 1
 fi
 
@@ -33,7 +30,7 @@ elif [ ${object_type} = "segment" ]; then
    hawq_port=${segment_port}
    tmp_dir_list=${hawq_segment_temp_directory//,/ }
 else
-   ${ECHO} "hawq init object should be one of master/standby/segment"
+   echo "Node object should be master/standby/segment"
    exit 1
 fi
 master_max_connections=${max_connections}
@@ -41,19 +38,19 @@ segment_max_connections=${max_connections}
 master_ip_address_all=""
 standby_ip_address_all=""
 if [ "${os_version}" = "7" ];then
-    master_ip_address_all=`${SSH} ${master_host_name} "${IFCONFIG} |${GREP} -v '127.0.0' | ${GREP} 'inet '|${AWK} '{print \\$2}'"`
+    master_ip_address_all=`ssh ${master_host_name} "/sbin/ifconfig |grep -v '127.0.0' | grep 'inet '|awk '{print \\$2}'"`
     if [ "${standby_host_name}" != "" ] && [ "${standby_host_name}" != "None" ] \
         && [ "${standby_host_name}" != "none" ] && [ "${standby_host_name}" != "NONE" ];then
-        standby_ip_address_all=`${SSH} ${standby_host_name} "${IFCONFIG} |${GREP} -v '127.0.0' | ${GREP} 'inet '|${AWK} '{print \\$2}'"`
+        standby_ip_address_all=`ssh ${standby_host_name} "/sbin/ifconfig |grep -v '127.0.0' | grep 'inet '|awk '{print \\$2}'"`
     fi
-    segment_ip_address_all=`${IFCONFIG} | ${GREP} -v '127.0.0' | ${AWK} '/inet addr/{print substr($2,6)}'`
+    segment_ip_address_all=`/sbin/ifconfig | grep -v '127.0.0' | awk '/inet addr/{print substr($2,6)}'`
 else
-    master_ip_address_all=`${SSH} ${master_host_name} "${IFCONFIG} |${GREP} -v '127.0.0' |${AWK} '/inet addr/{print substr(\\$2,6)}'"`
+    master_ip_address_all=`ssh ${master_host_name} "/sbin/ifconfig |grep -v '127.0.0' |awk '/inet addr/{print substr(\\$2,6)}'"`
     if [ "${standby_host_name}" != "" ] && [ "${standby_host_name}" != "None" ] \
         && [ "${standby_host_name}" != "none" ] && [ "${standby_host_name}" != "NONE" ];then
-        standby_ip_address_all=`${SSH} ${standby_host_name} "${IFCONFIG} |${GREP} -v '127.0.0' |${AWK} '/inet addr/{print substr(\\$2,6)}'"`
+        standby_ip_address_all=`ssh ${standby_host_name} "/sbin/ifconfig |grep -v '127.0.0' |awk '/inet addr/{print substr(\\$2,6)}'"`
     fi
-    segment_ip_address_all=`${IFCONFIG} | ${GREP} -v '127.0.0' | ${AWK} '/inet addr/{print substr($2,6)}'`
+    segment_ip_address_all=`/sbin/ifconfig | grep -v '127.0.0' | awk '/inet addr/{print substr($2,6)}'`
 fi
 
 PG_HBA=pg_hba.conf
@@ -62,15 +59,13 @@ TMP_PG_HBA=/tmp/pg_hba_conf_master.$$
 MASTER_LOG_FILE=${log_filename}
 STANDBY_LOG_FILE=${log_filename}
 SEGMENT_LOG_FILE=${log_filename}
-LOG_FILE=${log_filename}
 
 PSQL=${GPHOME}/bin/psql
-PG_CTL=${GPHOME}/bin/pg_ctl
 if [ "${log_dir}" = "None" ]; then
-    log_dir=${HOME}/hawqAdminLogs
+log_dir=${HOME}/hawqAdminLogs
 fi
 if [ ! -d ${log_dir} ]; then
-    ${MKDIR} -p ${log_dir}
+    mkdir -p ${log_dir}
 fi
 
 if [ ! -f ${log_filename} ]; then
@@ -78,104 +73,103 @@ if [ ! -f ${log_filename} ]; then
 fi
 
 GET_CIDRADDR () {
-    if [ `${ECHO} $1 | ${GREP} -c :` -gt 0 ]; then
-        ${ECHO} $1/128
+    if [ `echo $1 | grep -c :` -gt 0 ]; then
+        echo $1/128
     else
-        ${ECHO} $1/32
+        echo $1/32
     fi
 }
 
 LOAD_GP_TOOLKIT () {
-    CUR_DATE=`${DATE} +%Y%m%d`
-    FILE_TIME=`${DATE} +%H%M%S`
-    TOOLKIT_FILE=/tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME
-    LOG_MSG "[INFO]:-Loading hawq_toolkit..." verbose
+    CUR_DATE=`date +%Y%m%d`
+    FILE_TIME=`date +%H%M%S`
+    echo "[INFO]:-Loading hawq_toolkit..." >> ${MASTER_LOG_FILE}
     ROLNAME=`$PSQL -q -t -A -p ${hawq_port} -c "select rolname from pg_authid where oid=10" template1`
     if [ x"$ROLNAME" == x"" ];then
-        LOG_MSG "[FATAL]:-Failed to retrieve rolname." verbose
+        echo "[FATAL]:-Failed to retrieve rolname." | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    if [ -f ${TOOLKIT_FILE} ]; then
-        ${RM} -f ${TOOLKIT_FILE}
+    if [ -f /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME ]; then
+        rm -f /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME
     fi
 
     # We need SET SESSION AUTH here to load the toolkit
-    ${ECHO} "SET SESSION AUTHORIZATION $ROLNAME;"  >> ${TOOLKIT_FILE} 2>&1
+    echo "SET SESSION AUTHORIZATION $ROLNAME;"  >> /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME 2>&1
     RETVAL=$?
     if [ $RETVAL -ne 0 ];then
-        ${ECHO} "[FATAL]:-Failed to create the hawq_toolkit sql file." | tee -a ${MASTER_LOG_FILE}
+        echo "[FATAL]:-Failed to create the hawq_toolkit sql file." | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    ${CAT} $GPHOME/share/postgresql/gp_toolkit.sql >> ${TOOLKIT_FILE} 2>&1
+    cat $GPHOME/share/postgresql/gp_toolkit.sql >> /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME 2>&1
     RETVAL=$?
     if [ $RETVAL -ne 0 ];then
-        ${ECHO} "[FATAL]:-Failed to create the hawq_toolkit sql file." | tee -a ${MASTER_LOG_FILE}
+        echo "[FATAL]:-Failed to create the hawq_toolkit sql file." | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    $PSQL -q -p ${hawq_port} -f ${TOOLKIT_FILE} template1
+    $PSQL -q -p ${hawq_port} -f /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME template1
     RETVAL=$?
     if [ $RETVAL -ne 0 ];then
-        ${ECHO} "[FATAL]:-Failed to create the hawq_toolkit schema." | tee -a ${MASTER_LOG_FILE} 
+        echo "[FATAL]:-Failed to create the hawq_toolkit schema." | tee -a ${MASTER_LOG_FILE} 
         exit 1
     fi
 
-    $PSQL -q -p ${hawq_port} -f ${TOOLKIT_FILE} postgres
+    $PSQL -q -p ${hawq_port} -f /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME postgres
     RETVAL=$?
     if [ $RETVAL -ne 0 ];then
-        ${ECHO} "[FATAL]:-Failed to create the hawq_toolkit schema." | tee -a ${MASTER_LOG_FILE} 
+        echo "[FATAL]:-Failed to create the hawq_toolkit schema." | tee -a ${MASTER_LOG_FILE} 
         exit 1
     fi
 
-    ${RM} -f ${TOOLKIT_FILE}
+    rm -f /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME
 
     return $RETVAL
 }
 
 update_master_pg_hba(){
     # Updatepg_hba.conf for master.
-    ${CAT} ${hawq_data_directory}/${PG_HBA} |${GREP} '^#' > ${TMP_PG_HBA}
+    cat ${hawq_data_directory}/${PG_HBA} |grep '^#' > ${TMP_PG_HBA}
     mv ${TMP_PG_HBA} ${hawq_data_directory}/${PG_HBA}
     # Setting local access"
-    ${ECHO} "local    all         $USER         ident" >> ${hawq_data_directory}/${PG_HBA}
-    # ${ECHO} "[INFO]:-Setting local host access"
-    ${ECHO} "host     all         $USER         127.0.0.1/28    trust" >> ${hawq_data_directory}/${PG_HBA}
-    MASTER_IPV6_LOCAL_ADDRESS_ALL=(`/sbin/ip -6 address show |${GREP} inet6|${AWK} '{print $2}' |cut -d'/' -f1`)
-    MASTER_HBA_IP_ADDRESS=(`${ECHO} ${master_ip_address_all[@]} ${MASTER_IPV6_LOCAL_ADDRESS_ALL[@]} ${standby_ip_address_all[@]}|tr ' ' '\n'|sort -u|tr '\n' ' '`)
+    echo "local    all         $USER         ident" >> ${hawq_data_directory}/${PG_HBA}
+    # echo "[INFO]:-Setting local host access"
+    echo "host     all         $USER         127.0.0.1/28    trust" >> ${hawq_data_directory}/${PG_HBA}
+    MASTER_IPV6_LOCAL_ADDRESS_ALL=(`/sbin/ip -6 address show |grep inet6|awk '{print $2}' |cut -d'/' -f1`)
+    MASTER_HBA_IP_ADDRESS=(`echo ${master_ip_address_all[@]} ${MASTER_IPV6_LOCAL_ADDRESS_ALL[@]} ${standby_ip_address_all[@]}|tr ' ' '\n'|sort -u|tr '\n' ' '`)
     for ip_address in ${MASTER_HBA_IP_ADDRESS[@]}; do
         CIDR_MASTER_IP=$(GET_CIDRADDR ${ip_address})
-        CHK_COUNT=`${GREP} -c ${CIDR_MASTER_IP} ${hawq_data_directory}/${PG_HBA}`
+        CHK_COUNT=`grep -c ${CIDR_MASTER_IP} ${hawq_data_directory}/${PG_HBA}`
         if [ "$CHK_COUNT" -eq "0" ];then
-            ${ECHO} "host  all     ${USER}    ${CIDR_MASTER_IP}       trust" >> ${hawq_data_directory}/${PG_HBA}
+            echo "host  all     ${USER}    ${CIDR_MASTER_IP}       trust" >> ${hawq_data_directory}/${PG_HBA}
         else
-            ${ECHO} "${CIDR_MASTER_IP} already exist in ${hawq_data_directory}/${PG_HBA}"
+            echo "${CIDR_MASTER_IP} already exist in ${hawq_data_directory}/${PG_HBA}"
         fi
     done
 }
 
 update_standby_pg_hba(){
     # Updatepg_hba.conf for standby master.
-    ${ECHO} "host  all     all    0.0.0.0/0       trust" >> ${hawq_data_directory}/${PG_HBA}
+    echo "host  all     all    0.0.0.0/0       trust" >> ${hawq_data_directory}/${PG_HBA}
 }
 
 update_segment_pg_hba(){
     # Updatepg_hba.conf for segment.
     # Setting local access"
-    MASTERS_HBA_IP_ADDRESSES=(`${ECHO} ${master_ip_address_all[@]} ${standby_ip_address_all[@]}|tr ' ' '\n'|sort -u|tr '\n' ' '`)
+    MASTERS_HBA_IP_ADDRESSES=(`echo ${master_ip_address_all[@]} ${standby_ip_address_all[@]}|tr ' ' '\n'|sort -u|tr '\n' ' '`)
     for ip_address in ${MASTERS_HBA_IP_ADDRESSES[@]}; do
         CIDR_MASTER_IP=$(GET_CIDRADDR ${ip_address})
-        CHK_COUNT=`${GREP} -c ${CIDR_MASTER_IP} ${hawq_data_directory}/${PG_HBA}`
+        CHK_COUNT=`grep -c ${CIDR_MASTER_IP} ${hawq_data_directory}/${PG_HBA}`
         if [ "$CHK_COUNT" -eq "0" ];then
-            ${ECHO} "host  all     all    ${CIDR_MASTER_IP}       trust" >> ${hawq_data_directory}/${PG_HBA}
+            echo "host  all     all    ${CIDR_MASTER_IP}       trust" >> ${hawq_data_directory}/${PG_HBA}
         fi
     done
     for ip_address in ${segment_ip_address_all[@]}; do
         CIDR_MASTER_IP=$(GET_CIDRADDR ${ip_address})
-        CHK_COUNT=`${GREP} -c ${CIDR_MASTER_IP} ${hawq_data_directory}/${PG_HBA}`
+        CHK_COUNT=`grep -c ${CIDR_MASTER_IP} ${hawq_data_directory}/${PG_HBA}`
         if [ "$CHK_COUNT" -eq "0" ];then
-            ${ECHO} "host  all     ${USER} ${CIDR_MASTER_IP}       trust" >> ${hawq_data_directory}/${PG_HBA}
+            echo "host  all     ${USER} ${CIDR_MASTER_IP}       trust" >> ${hawq_data_directory}/${PG_HBA}
         fi
     done
 }
@@ -187,189 +181,145 @@ master_init() {
         --shared_buffers=${shared_buffers} --backend_output=${log_dir}/master.initdb 1>>${MASTER_LOG_FILE} 2>&1
 
     if [ $? -ne 0 ] ; then
-        ${ECHO} "Master postgres initdb failed" | tee -a ${MASTER_LOG_FILE}
+        echo "Master postgres initdb failed" | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
     update_master_pg_hba 1>>${MASTER_LOG_FILE} 2>&1
 
-    ${PG_CTL} -D ${hawq_data_directory} -l ${hawq_data_directory}/pg_log/startup.log -w -t 60 -o " -p ${hawq_port}  --silent-mode=true -M master -i" start >> ${MASTER_LOG_FILE}
+    ${GPHOME}/bin/pg_ctl -D ${hawq_data_directory} -l ${hawq_data_directory}/pg_log/startup.log -w -t 60 -o " -p ${hawq_port}  --silent-mode=true -M master -i" start >> ${MASTER_LOG_FILE}
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Start hawq master failed"  | tee -a ${MASTER_LOG_FILE}
+        echo "Start hawq master failed"  | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    $PSQL -p ${hawq_port} -d template1 -c "create filespace dfs_system on hdfs ('${dfs_url}');" 1>>${MASTER_LOG_FILE} 2>&1
+    ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c "create filespace dfs_system on hdfs ('${dfs_url}');" 1>>${MASTER_LOG_FILE} 2>&1
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Create filespace failed, please check your hdfs settings"  | tee -a ${MASTER_LOG_FILE}
+        echo "Create filespace failed, please check your hdfs settings"  | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    $PSQL -p ${hawq_port} -d template1 -c "create tablespace dfs_default filespace dfs_system;" 1>>${MASTER_LOG_FILE} 2>&1
+    ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c "create tablespace dfs_default filespace dfs_system;" 1>>${MASTER_LOG_FILE} 2>&1
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Create tablespace failed"  | tee -a ${MASTER_LOG_FILE}
+        echo "Create tablespace failed"  | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    env PGOPTIONS="-c gp_session_role=utility" $PSQL -p ${hawq_port} -d template1 -c \
+    env PGOPTIONS="-c gp_session_role=utility" ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c \
         "SET allow_system_table_mods='dml';UPDATE pg_database SET dat2tablespace = (SELECT oid FROM pg_tablespace WHERE spcname = 'dfs_default') WHERE datname = 'template1';" 1>>${MASTER_LOG_FILE} 2>&1
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Configure database template1 failed" | tee -a ${MASTER_LOG_FILE}
+        echo "Configure database template1 failed" | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    $PSQL -p ${hawq_port} -d template1 -c "create database template0 tablespace dfs_default template template1;" 1>>${MASTER_LOG_FILE} 2>&1
+    ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c "create database template0 tablespace dfs_default template template1;" 1>>${MASTER_LOG_FILE} 2>&1
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Create database template0 failed" | tee -a ${MASTER_LOG_FILE}
+        echo "Create database template0 failed" | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    env PGOPTIONS="-c gp_session_role=utility" $PSQL -p ${hawq_port} -d template1 -c "SET allow_system_table_mods='dml';UPDATE pg_database SET datistemplate = 't', datallowconn = false WHERE datname = 'template0';" 1>>${MASTER_LOG_FILE} 2>&1
+    env PGOPTIONS="-c gp_session_role=utility" ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c "SET allow_system_table_mods='dml';UPDATE pg_database SET datistemplate = 't', datallowconn = false WHERE datname = 'template0';" 1>>${MASTER_LOG_FILE} 2>&1
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Configure database template0 failed" | tee -a ${MASTER_LOG_FILE}
+        echo "Configure database template0 failed" | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    $PSQL -p ${hawq_port} -d template1 -c "create database postgres tablespace dfs_default;" 1>>${MASTER_LOG_FILE} 2>&1
+    ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c "create database postgres tablespace dfs_default;" 1>>${MASTER_LOG_FILE} 2>&1
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Create database postgres failed" | tee -a ${MASTER_LOG_FILE}
+        echo "Create database postgres failed" | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    env PGOPTIONS="-c gp_session_role=utility" $PSQL -p ${hawq_port} -d template1 -c "SET allow_system_table_mods='dml';UPDATE pg_database SET datistemplate = 't' WHERE datname = 'postgres';" 1>>${MASTER_LOG_FILE} 2>&1
+    env PGOPTIONS="-c gp_session_role=utility" ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c "SET allow_system_table_mods='dml';UPDATE pg_database SET datistemplate = 't' WHERE datname = 'postgres';" 1>>${MASTER_LOG_FILE} 2>&1
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Configure database postgres failed" | tee -a ${MASTER_LOG_FILE}
+        echo "Configure database postgres failed" | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
-    env PGOPTIONS="-c gp_session_role=utility" $PSQL -p ${hawq_port} -d template1 -c "CHECKPOINT;" 1>>${MASTER_LOG_FILE} 2>&1
+    env PGOPTIONS="-c gp_session_role=utility" ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c "CHECKPOINT;" 1>>${MASTER_LOG_FILE} 2>&1
     if [ $? -ne 0  ] ; then
-        ${ECHO} "CHECKPOINT failed" | tee -a ${MASTER_LOG_FILE}
+        echo "CHECKPOINT failed" | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
 
     LOAD_GP_TOOLKIT
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Load TOOLKIT failed" | tee -a ${MASTER_LOG_FILE}
+        echo "Load TOOLKIT failed" | tee -a ${MASTER_LOG_FILE}
         exit 1
     fi
-    $PSQL -p ${hawq_port} -d template1 -c "alter user \"${USER}\" password 'gparray';" 1>>${MASTER_LOG_FILE} 2>&1
+    ${GPHOME}/bin/psql -p ${hawq_port} -d template1 -c "alter user \"${USER}\" password 'gparray';" 1>>${MASTER_LOG_FILE} 2>&1
 
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Alter user failed" 1>> ${MASTER_LOG_FILE} 2>&1
+        echo "Alter user failed" 1>> ${MASTER_LOG_FILE} 2>&1
         exit 1
     fi
 }
 
 standby_init() {
     # Make sure log file are created.
-    if [ ! -f ${STANDBY_LOG_FILE} ]; then
-        touch ${STANDBY_LOG_FILE};
-    fi
-
-    LOG_MSG ""
-    LOG_MSG "[INFO]:-Stopping HAWQ cluster"
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${SOURCE_PATH}; hawq stop allsegments -a -M fast;" >> ${STANDBY_LOG_FILE} 2>&1
-    if [ $? -ne 0 ] ; then
-        LOG_MSG "[ERROR]:-Stop segments failed" verbose
+    ssh -o 'StrictHostKeyChecking no' ${hawqUser}@${standby_host_name} \
+        "if [ ! -d ${log_dir} ]; then echo \"Try to create log directory for standby master.\"; mkdir -p ${log_dir}; fi" 
+    ssh -o 'StrictHostKeyChecking no' ${hawqUser}@${standby_host_name} \
+        "if [ ! -f ${STANDBY_LOG_FILE} ]; then touch ${STANDBY_LOG_FILE}; fi" 
+    STANDBY_IP_ADDRESSES=`ping -c1 -n ${standby_host_name} | head -n1 | sed 's/.*(\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\)).*/\1/g'`
+    echo "Try to stop HAWQ cluster" 1>>${STANDBY_LOG_FILE}
+    source $GPHOME/greenplum_path.sh
+    # Stop hawq cluster before add new standby master.
+    hawq stop cluster -a >> ${STANDBY_LOG_FILE}
+    # Check if data directory are exist and keep clean.
+    ssh -o 'StrictHostKeyChecking no' ${hawqUser}@${standby_host_name} \
+        "if [ ! -d ${master_data_directory} ]; then echo \"Data directory ${master_data_directory} is not exist, please create it.\"; exit 1; fi" 
+    if [ $? -ne 0  ] ; then
+        echo "Standby master data directory check failed" | tee -a ${STANDBY_LOG_FILE}
         exit 1
-    else
-        LOG_MSG "[INFO]:-HAWQ segments stopped" verbose
     fi
-
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${SOURCE_PATH}; hawq stop master -a -M fast;" >> ${STANDBY_LOG_FILE} 2>&1
-    if [ $? -ne 0 ] ; then
-        LOG_MSG "[ERROR]:-Stop master failed" verbose
+    ssh -o 'StrictHostKeyChecking no' ${hawqUser}@${standby_host_name} \
+        "if [ \"\$(ls -A ${hawq_data_directory})\" ] && [ \"${hawq_data_directory}\" != \"\" ]; then echo \"Data directory ${hawq_data_directory} is not empty, please clean it.\"; exit 1; fi" 
+    if [ $? -ne 0  ] ; then
+        echo "Standby master data directory check failed" | tee -a ${STANDBY_LOG_FILE}
         exit 1
-    else
-        LOG_MSG "[INFO]:-HAWQ master stopped" verbose
     fi
-
+    pushd ${master_data_directory} >> ${STANDBY_LOG_FILE}
     # Sync data directories to standby master.
-    LOG_MSG "[INFO]:-Sync files to standby from master"
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "cd ${master_data_directory}; \
-         ${SOURCE_PATH}; ${GPHOME}/bin/lib/pysync.py -x gpperfmon/data -x pg_log -x db_dumps \
-         ${master_data_directory} ${standby_host_name}:${master_data_directory};" >> ${STANDBY_LOG_FILE} 2>&1
-    if [ $? -ne 0 ] ; then
-        LOG_MSG "[FATAL]:-Sync master files to standby failed" verbose
-        exit 1
-    fi
-
-    ${MKDIR} -p ${master_data_directory}/pg_log | tee -a ${STANDBY_LOG_FILE}
-
-    STANDBY_IP_ADDRESSES=`${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${PING} -c1 -n ${standby_host_name} | head -n1 | sed 's/.*(\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\)).*/\1/g';"`
-    if [ -z "${STANDBY_IP_ADDRESSES}" ] ; then
-        LOG_MSG "[FATAL]:-Standby ip address is empty" verbose
+    echo "Sync master files to standby from master" >> ${STANDBY_LOG_FILE}
+    tar cf - * --exclude="pg_log" --exclude="db_dumps" --exclude="gpperfmon/data"  \
+        | ssh ${standby_host_name} tar xf - -C ${master_data_directory} 1>>${STANDBY_LOG_FILE}
+    if [ $? -ne 0  ] ; then
+        echo "Sync master files to standby failed" | tee -a ${STANDBY_LOG_FILE}
         exit 1
-    else
-        LOG_MSG "[INFO]:-Standby ip address is ${STANDBY_IP_ADDRESSES}" verbose
     fi
-
     
-    LOG_MSG "[INFO]:-Start hawq master" verbose
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${SOURCE_PATH}; hawq start master -a --masteronly >> ${STANDBY_LOG_FILE}"
-    if [ $? -ne 0 ] ; then
-        LOG_MSG "[ERROR]:-Start HAWQ master failed" verbose
-        exit 1
-    else
-        LOG_MSG "[INFO]:-HAWQ master started" verbose
-    fi
-
-    LOG_MSG "[INFO]:-Try to remove existing standby from catalog" verbose
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${SOURCE_PATH}; env PGOPTIONS=\"-c gp_session_role=utility\" $PSQL -p ${master_port} -d template1 \
-         -c\"select gp_remove_master_standby() where (select count(*) from gp_segment_configuration where role='s') = 1;\";" >> ${STANDBY_LOG_FILE} 2>&1
-
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${SOURCE_PATH}; env PGOPTIONS=\"-c gp_session_role=utility\" $PSQL -p ${master_port} -d template1 -c \
-         \"select gp_add_master_standby('${standby_host_name}','${STANDBY_IP_ADDRESSES}','');\";" >>${STANDBY_LOG_FILE} 2>&1
-    if [ $? -ne 0 ] ; then
-        LOG_MSG "[FATAL]:-Register standby infomation failed" verbose
-        exit 1
-    else
-        LOG_MSG "[INFO]:-Register standby to master successfully" verbose
-    fi
-
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${SOURCE_PATH}; hawq stop master -a -M fast;" >> ${STANDBY_LOG_FILE}
-    if [ $? -ne 0 ] ; then
-        LOG_MSG "[ERROR]:-Stop HAWQ master failed" verbose
-        exit 1
-    else
-        LOG_MSG "[INFO]:-HAWQ master stopped" verbose
-    fi
+    ssh -o 'StrictHostKeyChecking no' ${hawqUser}@${standby_host_name} "mkdir -p ${master_data_directory}/pg_log | tee -a ${STANDBY_LOG_FILE};"
+    hawq start standby -a >>  ${STANDBY_LOG_FILE}
+    hawq stop standby -a >>  ${STANDBY_LOG_FILE}
     
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${SOURCE_PATH}; hawq start cluster -a;" >> ${STANDBY_LOG_FILE}
-    if [ $? -ne 0 ] ; then
-        LOG_MSG "[ERROR]:-Start HAWQ cluster failed" verbose
+    hawq start master -a >> ${STANDBY_LOG_FILE}
+    env PGOPTIONS="-c gp_session_role=utility" psql -p ${master_port} -d template1 -c"select gp_remove_master_standby() where (select count(*) from gp_segment_configuration where role='s') = 1;" >> ${STANDBY_LOG_FILE} 2>&1
+    env PGOPTIONS="-c gp_session_role=utility" psql -p ${master_port} -d template1 -c \
+       "select gp_add_master_standby('${standby_host_name}','${STANDBY_IP_ADDRESSES}','');" 1>>${STANDBY_LOG_FILE} 2>&1
+    if [ $? -ne 0  ] ; then
+        echo "Register standby infomation failed" | tee -a ${STANDBY_LOG_FILE}
         exit 1
-    else
-        LOG_MSG "[INFO]:-HAWQ cluster started" verbose
     fi
-
-    ${SSH} -o 'StrictHostKeyChecking no' ${hawqUser}@${master_host_name} \
-        "${SOURCE_PATH}; env PGOPTIONS=\"-c gp_session_role=utility\" $PSQL -p ${master_port} -d template1 \
-         -c\"select * from gp_segment_configuration;\";" >>${STANDBY_LOG_FILE} 2>&1
+    hawq stop master -a >> ${STANDBY_LOG_FILE}
+    
+    hawq start cluster -a >> ${STANDBY_LOG_FILE}
+    env PGOPTIONS="-c gp_session_role=utility" psql -p ${master_port} -d template1 -c"select * from gp_segment_configuration;" 1>>${STANDBY_LOG_FILE} 2>&1
+    popd >> ${STANDBY_LOG_FILE}
 
 }
 
 segment_init() {
     source ${GPHOME}/greenplum_path.sh
-    for tmp_path in `${ECHO} ${hawqSegmentTemp} | sed 's|,| |g'`; do
+    for tmp_path in `echo ${hawqSegmentTemp} | sed 's|,| |g'`; do
         if [ ! -d ${tmp_path} ]; then
-            ${ECHO} "Temp directory is not exist, please create it" | tee -a ${SEGMENT_LOG_FILE}
-            ${ECHO} "Segment init failed on ${HOSTNAME}"
+            echo "Temp directory is not exist, please create it" | tee -a ${SEGMENT_LOG_FILE}
+            echo "Segment init failed on ${HOSTNAME}"
             exit 1
         else
            if [ ! -w "${tmp_path}" ]; then 
-               ${ECHO} "Do not have write permission to temp directory, please check" | tee -a ${SEGMENT_LOG_FILE}
-               ${ECHO} "Segment init failed on ${HOSTNAME}"
+               echo "Do not have write permission to temp directory, please check" | tee -a ${SEGMENT_LOG_FILE}
+               echo "Segment init failed on ${HOSTNAME}"
                exit 1
            fi
         fi
@@ -382,18 +332,18 @@ segment_init() {
          --shared_buffers=${shared_buffers} --backend_output=${log_dir}/segment.initdb 1>>${SEGMENT_LOG_FILE} 2>&1
 
     if [ $? -ne 0 ] ; then
-        ${ECHO} "Postgres initdb failed" | tee -a ${SEGMENT_LOG_FILE}
-        ${ECHO} "Segment init failed on ${HOSTNAME}"
+        echo "Postgres initdb failed" | tee -a ${SEGMENT_LOG_FILE}
+        echo "Segment init failed on ${HOSTNAME}"
         exit 1
     fi
 
     update_segment_pg_hba 1>>${SEGMENT_LOG_FILE} 2>&1
 
-    ${PG_CTL} -D ${hawq_data_directory} -l ${hawq_data_directory}/pg_log/startup.log -w -t 60 -o \
+    ${GPHOME}/bin/pg_ctl -D ${hawq_data_directory} -l ${hawq_data_directory}/pg_log/startup.log -w -t 60 -o \
          " -p ${hawq_port} --silent-mode=true -M segment -i" start >> ${SEGMENT_LOG_FILE}
 
     if [ $? -ne 0  ] ; then
-        ${ECHO} "Segment init failed on ${HOSTNAME}" | tee -a ${SEGMENT_LOG_FILE}
+        echo "Segment init failed on ${HOSTNAME}" | tee -a ${SEGMENT_LOG_FILE}
         exit 1
     fi
     }
@@ -403,18 +353,18 @@ check_data_directorytory() {
     default_mdd=~/hawq-data-directory/masterdd
     default_sdd=~/hawq-data-directory/segmentdd
     if [ "${hawq_data_directory}" = "${default_mdd}" ]; then
-        ${MKDIR} -p ${default_mdd}
+        mkdir -p ${default_mdd}
     elif [ "${hawq_data_directory}" = "${default_sdd}" ]; then
-        ${MKDIR} -p ${default_sdd}
+        mkdir -p ${default_sdd}
     fi
     # Check if data directory already exist and clean.
     if [ -d ${hawq_data_directory} ]; then
         if [ "$(ls -A ${hawq_data_directory})" ] && [ "${hawq_data_directory}" != "" ]; then
-             ${ECHO} "Data directory ${hawq_data_directory} is not empty on ${HOSTNAME}"
+             echo "Data directory ${hawq_data_directory} is not empty on ${HOSTNAME}"
              exit 1
         fi
     else
-        ${ECHO} "Data directory ${hawq_data_directory} does not exist, please create it"
+        echo "Data directory ${hawq_data_directory} does not exist, please create it"
         exit 1
     fi
 }
@@ -423,11 +373,11 @@ check_temp_directory() {
     # Check if temp directory exist.
     for tmp_dir in ${tmp_dir_list}; do
         if [ ! -d ${tmp_dir} ]; then
-            ${ECHO} "Temporary directory ${tmp_dir} does not exist, please create it"
+            echo "Temporary directory ${tmp_dir} does not exist, please create it"
             exit 1
         fi
         if [ ! -w ${tmp_dir} ]; then
-            ${ECHO} "Temporary directory ${tmp_dir} is not writable, exit." ;
+            echo "Temporary directory ${tmp_dir} is not writable, exit." ;
             exit 1
         fi
     done
@@ -439,14 +389,13 @@ if [ ${object_type} == "master" ]; then
     check_temp_directory
     master_init
 elif [ ${object_type} == "standby" ]; then
-    check_data_directorytory
     standby_init
 elif [ ${object_type} == "segment" ]; then
     check_data_directorytory
     check_temp_directory
     segment_init
 else
-    ${ECHO} "Please input correct node object"
+    echo "Please input correct node type"
     exit 1
 fi
 exit 0