You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2017/12/05 16:14:50 UTC
[3/7] ambari git commit: Revert "AMBARI-22588. Hive Client restart
fails: hadooplzo package not present in IOP repos. YARN service issue.
(swagle)"
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_server_interactive.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_server_interactive.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_server_interactive.py
deleted file mode 100644
index 32322cd..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_server_interactive.py
+++ /dev/null
@@ -1,626 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-# Python Imports
-import subprocess
-import os
-import re
-import time
-import shutil
-from datetime import datetime
-import json
-
-# Ambari Commons & Resource Management imports
-from resource_management.libraries.script.script import Script
-from resource_management.libraries.functions import format
-from resource_management.libraries.functions.check_process_status import check_process_status
-from resource_management.core.source import InlineTemplate
-from resource_management.core.resources.system import Execute, Directory
-
-# Imports needed for Rolling/Express Upgrade
-from resource_management.libraries.functions import StackFeature
-from resource_management.libraries.functions.stack_features import check_stack_feature
-from resource_management.libraries.functions import stack_select
-from resource_management.libraries.functions.copy_tarball import copy_to_hdfs
-
-from resource_management.core import shell
-from resource_management.core.exceptions import Fail
-from resource_management.core.logger import Logger
-from ambari_commons import OSCheck, OSConst
-from ambari_commons.os_family_impl import OsFamilyImpl
-
-from resource_management.core.exceptions import ComponentIsNotRunning
-from resource_management.libraries.functions.decorator import retry
-from resource_management.libraries.functions.security_commons import build_expectations, \
- cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
- FILE_TYPE_XML
-
-# Local Imports
-from setup_ranger_hive import setup_ranger_hive
-from hive_service_interactive import hive_service_interactive
-from hive_interactive import hive_interactive
-from hive_server import HiveServerDefault
-from setup_ranger_hive_interactive import setup_ranger_hive_interactive
-
-import traceback
-
-class HiveServerInteractive(Script):
- pass
-
-
-@OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT)
-class HiveServerInteractiveDefault(HiveServerInteractive):
- def install(self, env):
- import params
- self.install_packages(env)
-
- def configure(self, env):
- import params
- env.set_params(params)
- hive_interactive(name='hiveserver2')
-
- def pre_upgrade_restart(self, env, upgrade_type=None):
- Logger.info("Executing Hive Server Interactive Stack Upgrade pre-restart")
- import params
- env.set_params(params)
-
- if params.version and check_stack_feature(StackFeature.ROLLING_UPGRADE, params.version):
- stack_select.select_packages(params.version)
-
- # Copy hive.tar.gz and tez.tar.gz used by Hive Interactive to HDFS
- resource_created = copy_to_hdfs(
- "hive2",
- params.user_group,
- params.hdfs_user,
- skip=params.sysprep_skip_copy_tarballs_hdfs)
-
- resource_created = copy_to_hdfs(
- "tez_hive2",
- params.user_group,
- params.hdfs_user,
- skip=params.sysprep_skip_copy_tarballs_hdfs) or resource_created
-
- if resource_created:
- params.HdfsResource(None, action="execute")
-
- def start(self, env, upgrade_type=None):
- import params
- env.set_params(params)
- self.configure(env)
-
- if params.security_enabled:
- # Do the security setup, internally calls do_kinit()
- self.setup_security()
-
- # TODO : We need have conditional [re]start of LLAP once "status check command" for LLAP is ready.
- # Check status and based on that decide on [re]starting.
-
- # Start LLAP before Hive Server Interactive start.
- status = self._llap_start(env)
- if not status:
- # if we couldnt get LLAP in RUNNING or RUNNING_ALL state, stop LLAP process before bailing out.
- self._llap_stop(env)
- raise Fail("Skipping START of Hive Server Interactive since LLAP app couldn't be STARTED.")
-
- # TODO : test the workability of Ranger and Hive2 during upgrade
- setup_ranger_hive_interactive(upgrade_type=upgrade_type)
- hive_service_interactive('hiveserver2', action='start', upgrade_type=upgrade_type)
-
-
- def stop(self, env, upgrade_type=None):
- import params
- env.set_params(params)
-
- if params.security_enabled:
- self.do_kinit()
-
- # Stop Hive Interactive Server first
- hive_service_interactive('hiveserver2', action='stop')
-
- if not params.is_restart_command:
- self._llap_stop(env)
- else:
- Logger.info("LLAP stop is skipped as its a restart command")
-
- def status(self, env):
- import status_params
- env.set_params(status_params)
-
- # We are not doing 'llap' status check done here as part of status check for 'HSI', as 'llap' status
- # check is a heavy weight operation.
-
- pid_file = format("{hive_pid_dir}/{hive_interactive_pid}")
- # Recursively check all existing gmetad pid files
- check_process_status(pid_file)
-
- def restart_llap(self, env):
- """
- Custom command to Restart LLAP
- """
- Logger.info("Custom Command to retart LLAP")
- import params
- env.set_params(params)
-
- if params.security_enabled:
- self.do_kinit()
-
- self._llap_stop(env)
- self._llap_start(env)
-
- def _llap_stop(self, env):
- import params
- Logger.info("Stopping LLAP")
-
- stop_cmd = ["slider", "stop", params.llap_app_name]
-
- code, output, error = shell.call(stop_cmd, user=params.hive_user, stderr=subprocess.PIPE, logoutput=True)
- if code == 0:
- Logger.info(format("Stopped {params.llap_app_name} application on Slider successfully"))
- elif code == 69 and output is not None and "Unknown application instance" in output:
- Logger.info(format("Application {params.llap_app_name} was already stopped on Slider"))
- else:
- raise Fail(format("Could not stop application {params.llap_app_name} on Slider. {error}\n{output}"))
-
- # Will exit with code 4 if need to run with "--force" to delete directories and registries.
- Execute(('slider', 'destroy', params.llap_app_name, "--force"),
- user=params.hive_user,
- timeout=30,
- ignore_failures=True,
- )
-
- """
- Controls the start of LLAP.
- """
- def _llap_start(self, env, cleanup=False):
- import params
- env.set_params(params)
-
- if params.hive_server_interactive_ha:
- """
- Check llap app state
- """
- Logger.info("HSI HA is enabled. Checking if LLAP is already running ...")
- if params.stack_supports_hive_interactive_ga:
- status = self.check_llap_app_status_in_llap_ga(params.llap_app_name, 2, params.hive_server_interactive_ha)
- else:
- status = self.check_llap_app_status_in_llap_tp(params.llap_app_name, 2, params.hive_server_interactive_ha)
-
- if status:
- Logger.info("LLAP app '{0}' is already running.".format(params.llap_app_name))
- return True
- else:
- Logger.info("LLAP app '{0}' is not running. llap will be started.".format(params.llap_app_name))
- pass
-
- # Call for cleaning up the earlier run(s) LLAP package folders.
- self._cleanup_past_llap_package_dirs()
-
- Logger.info("Starting LLAP")
- LLAP_PACKAGE_CREATION_PATH = Script.get_tmp_dir()
-
- unique_name = "llap-slider%s" % datetime.utcnow().strftime('%Y-%m-%d_%H-%M-%S')
-
- cmd = format("{stack_root}/current/hive-server2-hive2/bin/hive --service llap --slider-am-container-mb {params.slider_am_container_mb} "
- "--size {params.llap_daemon_container_size}m --cache {params.hive_llap_io_mem_size}m --xmx {params.llap_heap_size}m "
- "--loglevel {params.llap_log_level} {params.llap_extra_slider_opts} --output {LLAP_PACKAGE_CREATION_PATH}/{unique_name}")
-
- # Append params that are supported from Hive llap GA version.
- if params.stack_supports_hive_interactive_ga:
- # Figure out the Slider Anti-affinity to be used.
- # YARN does not support anti-affinity, and therefore Slider implements AA by the means of exclusion lists, i.e, it
- # starts containers one by one and excludes the nodes it gets (adding a delay of ~2sec./machine). When the LLAP
- # container memory size configuration is more than half of YARN node memory, AA is implicit and should be avoided.
- slider_placement = 4
- if long(params.llap_daemon_container_size) > (0.5 * long(params.yarn_nm_mem)):
- slider_placement = 0
- Logger.info("Setting slider_placement : 0, as llap_daemon_container_size : {0} > 0.5 * "
- "YARN NodeManager Memory({1})".format(params.llap_daemon_container_size, params.yarn_nm_mem))
- else:
- Logger.info("Setting slider_placement: 4, as llap_daemon_container_size : {0} <= 0.5 * "
- "YARN NodeManager Memory({1})".format(params.llap_daemon_container_size, params.yarn_nm_mem))
- cmd += format(" --slider-placement {slider_placement} --skiphadoopversion --skiphbasecp --instances {params.num_llap_daemon_running_nodes}")
-
- # Setup the logger for the ga version only
- cmd += format(" --logger {params.llap_logger}")
- else:
- cmd += format(" --instances {params.num_llap_nodes}")
- if params.security_enabled:
- llap_keytab_splits = params.hive_llap_keytab_file.split("/")
- Logger.debug("llap_keytab_splits : {0}".format(llap_keytab_splits))
- cmd += format(" --slider-keytab-dir .slider/keytabs/{params.hive_user}/ --slider-keytab "
- "{llap_keytab_splits[4]} --slider-principal {params.hive_llap_principal}")
-
- # Add the aux jars if they are specified. If empty, dont need to add this param.
- if params.hive_aux_jars:
- cmd+= format(" --auxjars {params.hive_aux_jars}")
-
- # Append args.
- llap_java_args = InlineTemplate(params.llap_app_java_opts).get_content()
- cmd += format(" --args \" {llap_java_args}\"")
- # Append metaspace size to args.
- if params.java_version > 7 and params.llap_daemon_container_size > 4096:
- if params.llap_daemon_container_size <= 32768:
- metaspaceSize = "256m"
- else:
- metaspaceSize = "1024m"
- cmd = cmd[:-1] + " -XX:MetaspaceSize="+metaspaceSize+ "\""
-
- run_file_path = None
- try:
- Logger.info(format("LLAP start command: {cmd}"))
- code, output, error = shell.checked_call(cmd, user=params.hive_user, quiet = True, stderr=subprocess.PIPE, logoutput=True)
-
- if code != 0 or output is None:
- raise Fail("Command failed with either non-zero return code or no output.")
-
- # E.g., output:
- # Prepared llap-slider-05Apr2016/run.sh for running LLAP on Slider
- exp = r"Prepared (.*?run.sh) for running LLAP"
- run_file_path = None
- out_splits = output.split("\n")
- for line in out_splits:
- line = line.strip()
- m = re.match(exp, line, re.I)
- if m and len(m.groups()) == 1:
- run_file_name = m.group(1)
- run_file_path = os.path.join(params.hive_user_home_dir, run_file_name)
- break
- if not run_file_path:
- raise Fail("Did not find run.sh file in output: " + str(output))
-
- Logger.info(format("Run file path: {run_file_path}"))
- Execute(run_file_path, user=params.hive_user, logoutput=True)
- Logger.info("Submitted LLAP app name : {0}".format(params.llap_app_name))
-
- # We need to check the status of LLAP app to figure out it got
- # launched properly and is in running state. Then go ahead with Hive Interactive Server start.
- if params.stack_supports_hive_interactive_ga:
- status = self.check_llap_app_status_in_llap_ga(params.llap_app_name, params.num_retries_for_checking_llap_status)
- else:
- status = self.check_llap_app_status_in_llap_tp(params.llap_app_name, params.num_retries_for_checking_llap_status)
- if status:
- Logger.info("LLAP app '{0}' deployed successfully.".format(params.llap_app_name))
- return True
- else:
- Logger.error("LLAP app '{0}' deployment unsuccessful.".format(params.llap_app_name))
- return False
- except:
- # Attempt to clean up the packaged application, or potentially rename it with a .bak
- if run_file_path is not None and cleanup:
- parent_dir = os.path.dirname(run_file_path)
- Directory(parent_dir,
- action = "delete",
- ignore_failures = True,
- )
-
- # throw the original exception
- raise
-
- """
- Checks and deletes previous run 'LLAP package' folders, ignoring three latest packages.
- Last three are are ignore for debugging/reference purposes.
- Helps in keeping check on disk space used.
- """
- def _cleanup_past_llap_package_dirs(self):
- try:
- import params
- Logger.info("Determining previous run 'LLAP package' folder(s) to be deleted ....")
- llap_package_folder_name_prefix = "llap-slider" # Package name is like : llap-sliderYYYY-MM-DD-HH:MM:SS
- num_folders_to_retain = 3 # Hardcoding it as of now, as no considerable use was found to provide an env param.
- file_names = [dir_name for dir_name in os.listdir(Script.get_tmp_dir())
- if dir_name.startswith(llap_package_folder_name_prefix)]
-
- file_names.sort()
- del file_names[-num_folders_to_retain:] # Ignore 'num_folders_to_retain' latest package folders.
- Logger.info("Previous run 'LLAP package' folder(s) to be deleted = {0}".format(file_names))
-
- if file_names:
- for path in file_names:
- abs_path = Script.get_tmp_dir()+"/"+path
- Directory(abs_path,
- action = "delete",
- ignore_failures = True
- )
- else:
- Logger.info("No '{0}*' folder deleted.".format(llap_package_folder_name_prefix))
- except:
- Logger.exception("Exception while doing cleanup for past 'LLAP package(s)':")
-
-
-
- """
- Does kinit and copies keytab for Hive/LLAP to HDFS.
- """
- def setup_security(self):
- import params
-
- self.do_kinit()
-
- # Copy params.hive_llap_keytab_file to hdfs://<host>:<port>/user/<hive_user>/.slider/keytabs/<hive_user> , required by LLAP
- slider_keytab_install_cmd = format("slider install-keytab --keytab {params.hive_llap_keytab_file} --folder {params.hive_user} --overwrite")
- Execute(slider_keytab_install_cmd, user=params.hive_user)
-
- def do_kinit(self):
- import params
-
- hive_interactive_kinit_cmd = format("{kinit_path_local} -kt {params.hive_server2_keytab} {params.hive_principal}; ")
- Execute(hive_interactive_kinit_cmd, user=params.hive_user)
-
- """
- Get llap app status data for LLAP Tech Preview code base.
- """
- def _get_llap_app_status_info_in_llap_tp(self, app_name):
- import status_params
- LLAP_APP_STATUS_CMD_TIMEOUT = 0
-
- llap_status_cmd = format("{stack_root}/current/hive-server2-hive2/bin/hive --service llapstatus --name {app_name} --findAppTimeout {LLAP_APP_STATUS_CMD_TIMEOUT}")
- code, output, error = shell.checked_call(llap_status_cmd, user=status_params.hive_user, stderr=subprocess.PIPE,
- logoutput=False)
- Logger.info("Received 'llapstatus' command 'output' : {0}".format(output))
- if code == 0:
- return self._make_valid_json(output)
- else:
- Logger.info("'LLAP status command' output : ", output)
- Logger.info("'LLAP status command' error : ", error)
- Logger.info("'LLAP status command' exit code : ", code)
- raise Fail("Error getting LLAP app status. ")
-
- """
- Get llap app status data for LLAP GA code base.
-
- Parameters: 'percent_desired_instances_to_be_up' : A value b/w 0.0 and 1.0.
- 'total_timeout' : Total wait time while checking the status via llapstatus command
- 'refresh_rate' : Frequency of polling for llapstatus.
- """
- def _get_llap_app_status_info_in_llap_ga(self, percent_desired_instances_to_be_up, total_timeout, refresh_rate):
- import status_params
-
- # llapstatus comamnd : llapstatus -w -r <percent containers to wait for to be Up> -i <refresh_rate> -t <total timeout for this comand>
- # -w : Watch mode waits until all LLAP daemons are running or subset of the nodes are running (threshold can be specified via -r option) (Default wait until all nodes are running)
- # -r : When watch mode is enabled (-w), wait until the specified threshold of nodes are running (Default 1.0 which means 100% nodes are running)
- # -i : Amount of time in seconds to wait until subsequent status checks in watch mode (Default: 1sec)
- # -t : Exit watch mode if the desired state is not attained until the specified timeout (Default: 300sec)
- #
- # example : llapstatus -w -r 0.8 -i 2 -t 150
- llap_status_cmd = format("{stack_root}/current/hive-server2-hive2/bin/hive --service llapstatus -w -r {percent_desired_instances_to_be_up} -i {refresh_rate} -t {total_timeout}")
- Logger.info("\n\n\n\n\n");
- Logger.info("LLAP status command : {0}".format(llap_status_cmd))
- code, output, error = shell.checked_call(llap_status_cmd, user=status_params.hive_user, quiet=True, stderr=subprocess.PIPE,
- logoutput=True)
-
- if code == 0:
- return self._make_valid_json(output)
- else:
- Logger.info("'LLAP status command' output : ", output)
- Logger.info("'LLAP status command' error : ", error)
- Logger.info("'LLAP status command' exit code : ", code)
- raise Fail("Error getting LLAP app status. ")
-
-
-
-
- """
- Remove extra lines (begginning/end) from 'llapstatus' status output (eg: because of MOTD logging) so as to have
- a valid JSON data to be passed in to JSON converter.
- """
- def _make_valid_json(self, output):
- '''
-
- Note: Extra lines (eg: because of MOTD) may be at the start or the end (some other logging getting appended)
- of the passed-in data.
-
- Sample expected JSON to be passed for 'loads' is either of the form :
-
- Case 'A':
- {
- "amInfo" : {
- "appName" : "llap0",
- "appType" : "org-apache-slider",
- "appId" : "APP1",
- "containerId" : "container_1466036628595_0010_01_000001",
- "hostname" : "hostName",
- "amWebUrl" : "http://hostName:port/"
- },
- "state" : "LAUNCHING",
- ....
- "desiredInstances" : 1,
- "liveInstances" : 0,
- ....
- ....
- }
-
- or
-
- Case 'B':
- {
- "state" : "APP_NOT_FOUND"
- }
-
- '''
- splits = output.split("\n")
-
- len_splits = len(splits)
- if (len_splits < 3):
- raise Fail ("Malformed JSON data received from 'llapstatus' command. Exiting ....")
-
- # Firstly, remove extra lines from the END.
- updated_splits = []
- for itr, line in enumerate(reversed(splits)):
- if line == "}": # Our assumption of end of JSON data.
- updated_splits = splits[:-itr]
- break
-
- if len(updated_splits) > 0:
- splits = updated_splits
- len_splits = len(splits)
-
-
- # Secondly, remove extra lines from the BEGGINNING.
- marker_idx = None # To detect where from to start reading for JSON data
- for idx, split in enumerate(splits):
- curr_elem = split.strip()
- if idx+2 > len_splits:
- raise Fail("Iterated over the received 'llapstatus' comamnd. Couldn't validate the received output for JSON parsing.")
- next_elem = (splits[(idx + 1)]).strip()
- if curr_elem == "{":
- if next_elem == "\"amInfo\" : {" and (splits[len_splits-1]).strip() == '}':
- # For Case 'A'
- marker_idx = idx
- break;
- elif idx+3 == len_splits and next_elem.startswith('"state" : ') and (splits[idx + 2]).strip() == '}':
- # For Case 'B'
- marker_idx = idx
- break;
-
-
- # Remove extra logging from possible JSON output
- if marker_idx is None:
- raise Fail("Couldn't validate the received output for JSON parsing.")
- else:
- if marker_idx != 0:
- del splits[0:marker_idx]
-
- scanned_output = '\n'.join(splits)
- llap_app_info = json.loads(scanned_output)
- return llap_app_info
-
-
- """
- Checks llap app status. The states can be : 'COMPLETE', 'APP_NOT_FOUND', 'RUNNING_PARTIAL', 'RUNNING_ALL' & 'LAUNCHING'.
-
- if app is in 'APP_NOT_FOUND', 'RUNNING_PARTIAL' and 'LAUNCHING' state:
- we wait for 'num_times_to_wait' to have app in (1). 'RUNNING_ALL' or (2). 'RUNNING_PARTIAL'
- state with 80% or more 'desiredInstances' running and Return True
- else :
- Return False
-
- Parameters: llap_app_name : deployed llap app name.
- num_retries : Number of retries to check the LLAP app status.
- """
- def check_llap_app_status_in_llap_tp(self, llap_app_name, num_retries, return_immediately_if_stopped=False):
- curr_time = time.time()
- num_retries = int(num_retries)
- if num_retries <= 0:
- Logger.info("Read 'num_retries' as : {0}. Setting it to : {1}".format(num_retries, 2))
- num_retries = 2
- if num_retries > 20:
- Logger.info("Read 'num_retries' as : {0}. Setting it to : {1}".format(num_retries, 20))
- num_retries = 20
-
- @retry(times=num_retries, sleep_time=2, err_class=Fail)
- def do_retries():
- llap_app_info = self._get_llap_app_status_info_in_llap_tp(llap_app_name)
- return self._verify_llap_app_status(llap_app_info, llap_app_name, return_immediately_if_stopped, curr_time)
-
- try:
- status = do_retries()
- return status
- except Exception, e:
- Logger.info("LLAP app '{0}' did not come up after a wait of {1} seconds.".format(llap_app_name,
- time.time() - curr_time))
- traceback.print_exc()
- return False
-
- def check_llap_app_status_in_llap_ga(self, llap_app_name, num_retries, return_immediately_if_stopped=False):
- curr_time = time.time()
- total_timeout = int(num_retries) * 20; # Total wait time while checking the status via llapstatus command
- Logger.debug("Calculated 'total_timeout' : {0} using config 'num_retries_for_checking_llap_status' : {1}".format(total_timeout, num_retries))
- refresh_rate = 2 # Frequency of checking the llapstatus
- percent_desired_instances_to_be_up = 80 # Out of 100.
- llap_app_info = self._get_llap_app_status_info_in_llap_ga(percent_desired_instances_to_be_up/100.0, total_timeout, refresh_rate)
-
- try:
- return self._verify_llap_app_status(llap_app_info, llap_app_name, return_immediately_if_stopped, curr_time)
- except Exception as e:
- Logger.info(e.message)
- return False
-
- def get_log_folder(self):
- import params
- return params.hive_log_dir
-
- def get_user(self):
- import params
- return params.hive_user
-
- def _verify_llap_app_status(self, llap_app_info, llap_app_name, return_immediately_if_stopped, curr_time):
- if llap_app_info is None or 'state' not in llap_app_info:
- Logger.error("Malformed JSON data received for LLAP app. Exiting ....")
- return False
-
- # counters based on various states.
- live_instances = 0
- desired_instances = 0
- percent_desired_instances_to_be_up = 80 # Used in 'RUNNING_PARTIAL' state.
- if return_immediately_if_stopped and (llap_app_info['state'].upper() in ('APP_NOT_FOUND', 'COMPLETE')):
- return False
- if llap_app_info['state'].upper() == 'RUNNING_ALL':
- Logger.info(
- "LLAP app '{0}' in '{1}' state.".format(llap_app_name, llap_app_info['state']))
- return True
- elif llap_app_info['state'].upper() == 'RUNNING_PARTIAL':
- # Check how many instances were up.
- if 'liveInstances' in llap_app_info and 'desiredInstances' in llap_app_info:
- live_instances = llap_app_info['liveInstances']
- desired_instances = llap_app_info['desiredInstances']
- else:
- Logger.info(
- "LLAP app '{0}' is in '{1}' state, but 'instances' information not available in JSON received. " \
- "Exiting ....".format(llap_app_name, llap_app_info['state']))
- Logger.info(llap_app_info)
- return False
- if desired_instances == 0:
- Logger.info("LLAP app '{0}' desired instance are set to 0. Exiting ....".format(llap_app_name))
- return False
-
- percentInstancesUp = 0
- if live_instances > 0:
- percentInstancesUp = float(live_instances) / desired_instances * 100
- if percentInstancesUp >= percent_desired_instances_to_be_up:
- Logger.info("LLAP app '{0}' in '{1}' state. Live Instances : '{2}' >= {3}% of Desired Instances : " \
- "'{4}'.".format(llap_app_name, llap_app_info['state'],
- llap_app_info['liveInstances'],
- percent_desired_instances_to_be_up,
- llap_app_info['desiredInstances']))
- return True
- else:
- Logger.info("LLAP app '{0}' in '{1}' state. Live Instances : '{2}'. Desired Instances : " \
- "'{3}' after {4} secs.".format(llap_app_name, llap_app_info['state'],
- llap_app_info['liveInstances'],
- llap_app_info['desiredInstances'],
- time.time() - curr_time))
- raise Fail("App state is RUNNING_PARTIAL. Live Instances : '{0}', Desired Instance : '{1}'".format(llap_app_info['liveInstances'],
- llap_app_info['desiredInstances']))
- elif llap_app_info['state'].upper() in ['APP_NOT_FOUND', 'LAUNCHING', 'COMPLETE']:
- status_str = format("LLAP app '{0}' current state is {1}.".format(llap_app_name, llap_app_info['state']))
- Logger.info(status_str)
- raise Fail(status_str)
- else: # Covers any unknown that we get.
- Logger.info(
- "LLAP app '{0}' current state is '{1}'. Expected : 'RUNNING'.".format(llap_app_name, llap_app_info['state']))
- return False
-
-@OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY)
-class HiveServerInteractiveWindows(HiveServerInteractive):
-
- def status(self, env):
- pass
-
-if __name__ == "__main__":
- HiveServerInteractive().execute()
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_server_upgrade.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_server_upgrade.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_server_upgrade.py
deleted file mode 100644
index 1cb95ff..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_server_upgrade.py
+++ /dev/null
@@ -1,134 +0,0 @@
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-
-import os
-import re
-from resource_management.core.logger import Logger
-from resource_management.core.exceptions import Fail
-from resource_management.core.resources.system import Execute
-from resource_management.core import shell
-from resource_management.libraries.functions import format
-from resource_management.libraries.functions import stack_select
-from resource_management.libraries.functions import StackFeature
-from resource_management.libraries.functions.stack_features import check_stack_feature
-from resource_management.libraries.functions.version import format_stack_version
-
-
-def deregister():
- """
- Runs the "hive --service hiveserver2 --deregister <version>" command to
- de-provision the server in preparation for an upgrade. This will contact
- ZooKeeper to remove the server so that clients that attempt to connect
- will be directed to other servers automatically. Once all
- clients have drained, the server will shutdown automatically.
-
- However, since Ambari does not support Hive Server rolling upgrades due to the port change
- affecting Hive Clients not using the ZK discovery service, the daemon might be forcefully
- killed before it has been deregistered and drained.
-
- This function will obtain the Kerberos ticket if security is enabled.
- :return:
- """
- import params
-
- Logger.info('HiveServer2 executing "deregister" command to complete upgrade...')
-
- if params.security_enabled:
- kinit_command=format("{kinit_path_local} -kt {smoke_user_keytab} {smokeuser_principal}; ")
- Execute(kinit_command,user=params.smokeuser)
-
- # calculate the current hive server version
- current_hiveserver_version = _get_current_hiveserver_version()
- if current_hiveserver_version is None:
- raise Fail('Unable to determine the current HiveServer2 version to deregister.')
-
- # deregister
- hive_execute_path = params.execute_path
- # If upgrading, the upgrade-target hive binary should be used to call the --deregister command.
- # If downgrading, the downgrade-source hive binary should be used to call the --deregister command.
- # By now <stack-selector-tool> has been called to set 'current' to target-stack
- if params.downgrade_from_version is not None:
- hive_execute_path = _get_hive_execute_path(params.downgrade_from_version)
-
- command = format('hive --config {hive_server_conf_dir} --service hiveserver2 --deregister ' + current_hiveserver_version)
- Execute(command, user=params.hive_user, path=hive_execute_path, tries=1 )
-
-
-def _get_hive_execute_path(stack_version_formatted):
- """
- Returns the exact execute path to use for the given stack-version.
- This method does not return the "current" path
- :param stack_version_formatted: Exact stack-version to use in the new path
- :return: Hive execute path for the exact stack-version
- """
- import params
-
- hive_execute_path = params.execute_path
- formatted_stack_version = format_stack_version(stack_version_formatted)
- if formatted_stack_version and check_stack_feature(StackFeature.ROLLING_UPGRADE, formatted_stack_version):
- # hive_bin
- new_hive_bin = format('{stack_root}/{stack_version_formatted}/hive/bin')
- if (os.pathsep + params.hive_bin) in hive_execute_path:
- hive_execute_path = hive_execute_path.replace(os.pathsep + params.hive_bin, os.pathsep + new_hive_bin)
- # hadoop_bin_dir
- new_hadoop_bin = stack_select.get_hadoop_dir_for_stack_version("bin", stack_version_formatted)
- old_hadoop_bin = params.hadoop_bin_dir
- if new_hadoop_bin and len(new_hadoop_bin) > 0 and (os.pathsep + old_hadoop_bin) in hive_execute_path:
- hive_execute_path = hive_execute_path.replace(os.pathsep + old_hadoop_bin, os.pathsep + new_hadoop_bin)
- return hive_execute_path
-
-
-def _get_current_hiveserver_version():
- """
- Runs "hive --version" and parses the result in order
- to obtain the current version of hive.
-
- :return: the hiveserver2 version, returned by "hive --version"
- """
- import params
-
- try:
- # When downgrading the source version should be the version we are downgrading from
- source_version = params.version_for_stack_feature_checks
- if params.downgrade_from_version is not None:
- source_version = params.downgrade_from_version
-
- hive_execute_path = _get_hive_execute_path(source_version)
- version_hive_bin = params.hive_bin
- formatted_source_version = format_stack_version(source_version)
- if formatted_source_version and check_stack_feature(StackFeature.ROLLING_UPGRADE, formatted_source_version):
- version_hive_bin = format('{stack_root}/{source_version}/hive/bin')
- command = format('{version_hive_bin}/hive --version')
- return_code, output = shell.call(command, user=params.hive_user, path=hive_execute_path)
- except Exception, e:
- Logger.error(str(e))
- raise Fail('Unable to execute hive --version command to retrieve the hiveserver2 version.')
-
- if return_code != 0:
- raise Fail('Unable to determine the current HiveServer2 version because of a non-zero return code of {0}'.format(str(return_code)))
-
- match = re.search('^(Hive) ([0-9]+.[0-9]+.\S+)', output, re.MULTILINE)
-
- if match:
- current_hive_server_version = match.group(2)
- return current_hive_server_version
- else:
- raise Fail('The extracted hiveserver2 version "{0}" does not matching any known pattern'.format(output))
-
-
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_service.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_service.py
deleted file mode 100644
index eec9031..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_service.py
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-
-import os
-import time
-
-from ambari_commons.constants import UPGRADE_TYPE_ROLLING
-from resource_management.core.logger import Logger
-from resource_management.core import shell
-from resource_management.libraries.functions.format import format
-from resource_management.core.resources.system import File, Execute
-from resource_management.core.resources.service import Service
-from resource_management.core.exceptions import Fail
-from resource_management.core.shell import as_user
-from resource_management.libraries.functions.hive_check import check_thrift_port_sasl
-from resource_management.libraries.functions import get_user_call_output
-from resource_management.libraries.functions.show_logs import show_logs
-from resource_management.libraries.functions import StackFeature
-from resource_management.libraries.functions.stack_features import check_stack_feature
-
-from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
-from ambari_commons import OSConst
-
-
-@OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
-def hive_service(name, action='start', upgrade_type=None):
- import params
- if name == 'metastore':
- if action == 'start' or action == 'stop':
- Service(params.hive_metastore_win_service_name, action=action)
-
- if name == 'hiveserver2':
- if action == 'start' or action == 'stop':
- Service(params.hive_server_win_service_name, action=action)
-
-
-@OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
-def hive_service(name, action='start', upgrade_type=None):
-
- import params
-
- if name == 'metastore':
- pid_file = format("{hive_pid_dir}/{hive_metastore_pid}")
- cmd = format("{start_metastore_path} {hive_log_dir}/hive.out {hive_log_dir}/hive.err {pid_file} {hive_server_conf_dir} {hive_log_dir}")
- elif name == 'hiveserver2':
- pid_file = format("{hive_pid_dir}/{hive_pid}")
- cmd = format("{start_hiveserver2_path} {hive_log_dir}/hive-server2.out {hive_log_dir}/hive-server2.err {pid_file} {hive_server_conf_dir} {hive_log_dir}")
-
-
- if params.security_enabled and check_stack_feature(StackFeature.HIVE_SERVER2_KERBERIZED_ENV, params.version_for_stack_feature_checks):
- hive_kinit_cmd = format("{kinit_path_local} -kt {hive_server2_keytab} {hive_principal}; ")
- Execute(hive_kinit_cmd, user=params.hive_user)
-
- pid = get_user_call_output.get_user_call_output(format("cat {pid_file}"), user=params.hive_user, is_checked_call=False)[1]
- process_id_exists_command = format("ls {pid_file} >/dev/null 2>&1 && ps -p {pid} >/dev/null 2>&1")
-
- if action == 'start':
- if name == 'hiveserver2':
- check_fs_root(params.hive_server_conf_dir, params.execute_path)
-
- daemon_cmd = cmd
-
- # upgrading hiveserver2 (rolling_restart) means that there is an existing,
- # de-registering hiveserver2; the pid will still exist, but the new
- # hiveserver is spinning up on a new port, so the pid will be re-written
- if upgrade_type == UPGRADE_TYPE_ROLLING:
- process_id_exists_command = None
-
- Execute(daemon_cmd,
- user = params.hive_user,
- environment = { 'JAVA_HOME': params.java64_home, 'HIVE_CMD': params.hive_cmd },
- path = params.execute_path,
- not_if = process_id_exists_command)
-
- if params.hive_jdbc_driver == "com.mysql.jdbc.Driver" or \
- params.hive_jdbc_driver == "org.postgresql.Driver" or \
- params.hive_jdbc_driver == "oracle.jdbc.driver.OracleDriver":
-
- validation_called = False
-
- if params.hive_jdbc_target is not None:
- validation_called = True
- validate_connection(params.hive_jdbc_target, params.hive_lib)
- if params.hive2_jdbc_target is not None:
- validation_called = True
- validate_connection(params.hive2_jdbc_target, params.hive_server2_hive2_lib)
-
- if not validation_called:
- emessage = "ERROR! DB connection check should be executed at least one time!"
- Logger.error(emessage)
-
- elif action == 'stop':
-
- daemon_kill_cmd = format("{sudo} kill {pid}")
- daemon_hard_kill_cmd = format("{sudo} kill -9 {pid}")
-
- Execute(daemon_kill_cmd,
- not_if = format("! ({process_id_exists_command})")
- )
-
- wait_time = 5
- Execute(daemon_hard_kill_cmd,
- not_if = format("! ({process_id_exists_command}) || ( sleep {wait_time} && ! ({process_id_exists_command}) )"),
- ignore_failures = True
- )
-
- try:
- # check if stopped the process, else fail the task
- Execute(format("! ({process_id_exists_command})"),
- tries=20,
- try_sleep=3,
- )
- except:
- show_logs(params.hive_log_dir, params.hive_user)
- raise
-
- File(pid_file,
- action = "delete"
- )
-
-def validate_connection(target_path_to_jdbc, hive_lib_path):
- import params
-
- path_to_jdbc = target_path_to_jdbc
- if not params.jdbc_jar_name:
- path_to_jdbc = format("{hive_lib_path}/") + \
- params.default_connectors_map[params.hive_jdbc_driver] if params.hive_jdbc_driver in params.default_connectors_map else None
- if not os.path.isfile(path_to_jdbc):
- path_to_jdbc = format("{hive_lib_path}/") + "*"
- error_message = "Error! Sorry, but we can't find jdbc driver with default name " + params.default_connectors_map[params.hive_jdbc_driver] + \
- " in hive lib dir. So, db connection check can fail. Please run 'ambari-server setup --jdbc-db={db_name} --jdbc-driver={path_to_jdbc} on server host.'"
- Logger.error(error_message)
-
- db_connection_check_command = format(
- "{java64_home}/bin/java -cp {check_db_connection_jar}:{path_to_jdbc} org.apache.ambari.server.DBConnectionVerification '{hive_jdbc_connection_url}' {hive_metastore_user_name} {hive_metastore_user_passwd!p} {hive_jdbc_driver}")
-
- try:
- Execute(db_connection_check_command,
- path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin', tries=5, try_sleep=10)
- except:
- show_logs(params.hive_log_dir, params.hive_user)
- raise
-
-
-def check_fs_root(conf_dir, execution_path):
- import params
-
- if not params.manage_hive_fsroot:
- Logger.info("Skipping fs root check as cluster-env/manage_hive_fsroot is disabled")
- return
-
- if not params.fs_root.startswith("hdfs://"):
- Logger.info("Skipping fs root check as fs_root does not start with hdfs://")
- return
-
- metatool_cmd = format("hive --config {conf_dir} --service metatool")
- cmd = as_user(format("{metatool_cmd} -listFSRoot", env={'PATH': execution_path}), params.hive_user) \
- + format(" 2>/dev/null | grep hdfs:// | cut -f1,2,3 -d '/' | grep -v '{fs_root}' | head -1")
- code, out = shell.call(cmd)
-
- if code == 0 and out.strip() != "" and params.fs_root.strip() != out.strip():
- out = out.strip()
- cmd = format("{metatool_cmd} -updateLocation {fs_root} {out}")
- Execute(cmd,
- user=params.hive_user,
- environment={'PATH': execution_path}
- )
-
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_service_interactive.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_service_interactive.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_service_interactive.py
deleted file mode 100644
index 15b7cb8..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/hive_service_interactive.py
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-
-# Python Imports
-
-# Ambari Commons & Resource Management imports
-import os
-from resource_management.core.logger import Logger
-from resource_management.libraries.functions.format import format
-from resource_management.core.resources.system import File, Execute
-from resource_management.libraries.functions import get_user_call_output
-from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
-from ambari_commons import OSConst
-
-# Local Imports
-from hive_service import check_fs_root
-
-
-@OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
-def hive_service_interactive(name, action='start', upgrade_type=None):
- pass
-
-
-@OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
-def hive_service_interactive(name, action='start', upgrade_type=None):
- import params
-
- pid_file = format("{hive_pid_dir}/{hive_interactive_pid}")
- cmd = format("{start_hiveserver2_interactive_path} {hive_pid_dir}/hive-server2-interactive.out {hive_log_dir}/hive-server2-interactive.err {pid_file} {hive_server_interactive_conf_dir} {hive_log_dir}")
-
- pid = get_user_call_output.get_user_call_output(format("cat {pid_file}"), user=params.hive_user, is_checked_call=False)[1]
- process_id_exists_command = format("ls {pid_file} >/dev/null 2>&1 && ps -p {pid} >/dev/null 2>&1")
-
- if action == 'start':
- check_fs_root(params.hive_server_interactive_conf_dir, params.execute_path_hive_interactive)
- daemon_cmd = cmd
- hive_interactive_bin = format("{stack_root}/current/hive-server2-hive2/bin/hive2")
-
- Execute(daemon_cmd,
- user = params.hive_user,
- environment = { 'JAVA_HOME': params.java64_home, 'HIVE_BIN': hive_interactive_bin },
- path = params.execute_path,
- not_if = process_id_exists_command)
-
- if params.hive_jdbc_driver == "com.mysql.jdbc.Driver" or \
- params.hive_jdbc_driver == "org.postgresql.Driver" or \
- params.hive_jdbc_driver == "oracle.jdbc.driver.OracleDriver":
-
- path_to_jdbc = params.target_hive_interactive
- if not params.jdbc_jar_name:
- path_to_jdbc = format("{hive_interactive_lib}/") + \
- params.default_connectors_map[params.hive_jdbc_driver] if params.hive_jdbc_driver in params.default_connectors_map else None
- if not os.path.isfile(path_to_jdbc):
- path_to_jdbc = format("{hive_interactive_lib}/") + "*"
- error_message = "Error! Sorry, but we can't find jdbc driver with default name " + params.default_connectors_map[params.hive_jdbc_driver] + \
- " in hive lib dir. So, db connection check can fail. Please run 'ambari-server setup --jdbc-db={db_name} --jdbc-driver={path_to_jdbc} on server host.'"
- Logger.error(error_message)
-
- db_connection_check_command = format(
- "{java64_home}/bin/java -cp {check_db_connection_jar}:{path_to_jdbc} org.apache.ambari.server.DBConnectionVerification '{hive_jdbc_connection_url}' {hive_metastore_user_name} {hive_metastore_user_passwd!p} {hive_jdbc_driver}")
- Execute(db_connection_check_command,
- path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin', tries=5, try_sleep=10)
- elif action == 'stop':
-
- daemon_kill_cmd = format("{sudo} kill {pid}")
- daemon_hard_kill_cmd = format("{sudo} kill -9 {pid}")
-
- Execute(daemon_kill_cmd,
- not_if = format("! ({process_id_exists_command})")
- )
-
- # check if stopped the process, otherwise send hard kill command.
- try:
- Execute(format("! ({process_id_exists_command})"),
- tries=10,
- try_sleep=3,
- )
- except:
- Execute(daemon_hard_kill_cmd,
- not_if = format("! ({process_id_exists_command}) ")
- )
-
- # check if stopped the process, else fail the task
- Execute(format("! ({process_id_exists_command})"),
- tries=20,
- try_sleep=3,
- )
-
- File(pid_file,
- action = "delete"
- )
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_server.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_server.py
deleted file mode 100644
index 851dc02..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_server.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-
-import sys
-import os
-import mysql_users
-from resource_management import *
-
-from mysql_service import mysql_service
-from mysql_utils import mysql_configure
-
-
-class MysqlServer(Script):
- def install(self, env):
- import params
- self.install_packages(env)
- self.configure(env)
-
- def clean(self, env):
- import params
- env.set_params(params)
- mysql_users.mysql_deluser()
-
- def configure(self, env):
- import params
- env.set_params(params)
- mysql_configure()
-
- def start(self, env, rolling_restart=False):
- import params
- env.set_params(params)
- mysql_service(daemon_name=params.daemon_name, action='start')
-
- def stop(self, env, rolling_restart=False):
- import params
- env.set_params(params)
- mysql_service(daemon_name=params.daemon_name, action='stop')
-
- def status(self, env):
- import status_params
- env.set_params(status_params)
-
- mysql_service(daemon_name=status_params.daemon_name, action='status')
-
-
-if __name__ == "__main__":
- MysqlServer().execute()
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_service.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_service.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_service.py
deleted file mode 100644
index 8b98ed1..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_service.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-
-from resource_management import *
-
-
-def mysql_service(daemon_name=None, action='start'):
- status_cmd = format("pgrep -l '^{process_name}$'")
- cmd = ('service', daemon_name, action)
-
- if action == 'status':
- try:
- Execute(status_cmd)
- except Fail:
- raise ComponentIsNotRunning()
- elif action == 'stop':
- import params
- Execute(cmd,
- logoutput = True,
- only_if = status_cmd,
- sudo = True,
- )
- elif action == 'start':
- import params
- Execute(cmd,
- logoutput = True,
- not_if = status_cmd,
- sudo = True,
- )
-
-
-
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_users.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_users.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_users.py
deleted file mode 100644
index c023548..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_users.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-
-from resource_management import *
-
-# Used to add hive access to the needed components
-def mysql_adduser():
- import params
-
- File(params.mysql_adduser_path,
- mode=0755,
- content=StaticFile('addMysqlUser.sh')
- )
- hive_server_host = format("{hive_server_host}")
- hive_metastore_host = format("{hive_metastore_host}")
-
- add_metastore_cmd = "bash -x {mysql_adduser_path} {daemon_name} {hive_metastore_user_name} {hive_metastore_user_passwd!p} {hive_metastore_host}"
- add_hiveserver_cmd = "bash -x {mysql_adduser_path} {daemon_name} {hive_metastore_user_name} {hive_metastore_user_passwd!p} {hive_server_host}"
- if (hive_server_host == hive_metastore_host):
- cmd = format(add_hiveserver_cmd)
- else:
- cmd = format(add_hiveserver_cmd + ";" + add_metastore_cmd)
- Execute(cmd,
- tries=3,
- try_sleep=5,
- logoutput=False,
- path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin'
- )
-
-# Removes hive access from components
-def mysql_deluser():
- import params
-
- File(params.mysql_deluser_path,
- mode=0755,
- content=StaticFile('removeMysqlUser.sh')
- )
- hive_server_host = format("{hive_server_host}")
- hive_metastore_host = format("{hive_metastore_host}")
-
- del_hiveserver_cmd = "bash -x {mysql_deluser_path} {daemon_name} {hive_metastore_user_name} {hive_server_host}"
- del_metastore_cmd = "bash -x {mysql_deluser_path} {daemon_name} {hive_metastore_user_name} {hive_metastore_host}"
- if (hive_server_host == hive_metastore_host):
- cmd = format(del_hiveserver_cmd)
- else:
- cmd = format(
- del_hiveserver_cmd + ";" + del_metastore_cmd)
- Execute(cmd,
- tries=3,
- try_sleep=5,
- path='/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin',
- )
-
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_utils.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_utils.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_utils.py
deleted file mode 100644
index 5006b56..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/mysql_utils.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-
-from resource_management import *
-import mysql_users
-
-def mysql_configure():
- import params
-
- # required for running hive
- replace_bind_address = ('sed','-i','s|^bind-address[ \t]*=.*|bind-address = 0.0.0.0|',params.mysql_configname)
- Execute(replace_bind_address,
- sudo = True,
- )
-
- # this also will start mysql-server
- mysql_users.mysql_adduser()
-
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8003b39/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/params.py b/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/params.py
deleted file mode 100644
index 895ec81..0000000
--- a/ambari-server/src/main/resources/stacks/BigInsights/4.2.5/services/HIVE/package/scripts/params.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-"""
-from ambari_commons import OSCheck
-from resource_management.libraries.functions.default import default
-from resource_management.libraries.functions.copy_tarball import get_sysprep_skip_copy_tarballs_hdfs
-
-if OSCheck.is_windows_family():
- from params_windows import *
-else:
- from params_linux import *
-
-sysprep_skip_copy_tarballs_hdfs = get_sysprep_skip_copy_tarballs_hdfs()
-retryAble = default("/commandParams/command_retry_enabled", False)