<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package: org.apache.hadoop.hbase, class: HBaseClusterManager, class: HBaseShellCommandProvider">
<meta name="generator" content="javadoc/SourceToHTMLConverter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body class="source-page">
<main role="main">
<div class="source-container">
<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
<span class="source-line-no">002</span><span id="line-2"> * Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="source-line-no">003</span><span id="line-3"> * or more contributor license agreements.  See the NOTICE file</span>
<span class="source-line-no">004</span><span id="line-4"> * distributed with this work for additional information</span>
<span class="source-line-no">005</span><span id="line-5"> * regarding copyright ownership.  The ASF licenses this file</span>
<span class="source-line-no">006</span><span id="line-6"> * to you under the Apache License, Version 2.0 (the</span>
<span class="source-line-no">007</span><span id="line-7"> * "License"); you may not use this file except in compliance</span>
<span class="source-line-no">008</span><span id="line-8"> * with the License.  You may obtain a copy of the License at</span>
<span class="source-line-no">009</span><span id="line-9"> *</span>
<span class="source-line-no">010</span><span id="line-10"> *     http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="source-line-no">011</span><span id="line-11"> *</span>
<span class="source-line-no">012</span><span id="line-12"> * Unless required by applicable law or agreed to in writing, software</span>
<span class="source-line-no">013</span><span id="line-13"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
<span class="source-line-no">014</span><span id="line-14"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<span class="source-line-no">015</span><span id="line-15"> * See the License for the specific language governing permissions and</span>
<span class="source-line-no">016</span><span id="line-16"> * limitations under the License.</span>
<span class="source-line-no">017</span><span id="line-17"> */</span>
<span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase;</span>
<span class="source-line-no">019</span><span id="line-19"></span>
<span class="source-line-no">020</span><span id="line-20">import java.io.File;</span>
<span class="source-line-no">021</span><span id="line-21">import java.io.IOException;</span>
<span class="source-line-no">022</span><span id="line-22">import java.util.Locale;</span>
<span class="source-line-no">023</span><span id="line-23">import java.util.Map;</span>
<span class="source-line-no">024</span><span id="line-24">import org.apache.commons.lang3.StringUtils;</span>
<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.conf.Configuration;</span>
<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.conf.Configured;</span>
<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.HBaseClusterManager.CommandProvider.Operation;</span>
<span class="source-line-no">028</span><span id="line-28">import org.apache.hadoop.hbase.util.Pair;</span>
<span class="source-line-no">029</span><span id="line-29">import org.apache.hadoop.hbase.util.ReflectionUtils;</span>
<span class="source-line-no">030</span><span id="line-30">import org.apache.hadoop.hbase.util.RetryCounter;</span>
<span class="source-line-no">031</span><span id="line-31">import org.apache.hadoop.hbase.util.RetryCounter.RetryConfig;</span>
<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.util.RetryCounterFactory;</span>
<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.util.Shell;</span>
<span class="source-line-no">034</span><span id="line-34">import org.apache.yetus.audience.InterfaceAudience;</span>
<span class="source-line-no">035</span><span id="line-35">import org.slf4j.Logger;</span>
<span class="source-line-no">036</span><span id="line-36">import org.slf4j.LoggerFactory;</span>
<span class="source-line-no">037</span><span id="line-37"></span>
<span class="source-line-no">038</span><span id="line-38">/**</span>
<span class="source-line-no">039</span><span id="line-39"> * A default cluster manager for HBase. Uses SSH, and hbase shell scripts to manage the cluster.</span>
<span class="source-line-no">040</span><span id="line-40"> * Assumes Unix-like commands are available like 'ps', 'kill', etc. Also assumes the user running</span>
<span class="source-line-no">041</span><span id="line-41"> * the test has enough "power" to start &amp; stop servers on the remote machines (for example, the test</span>
<span class="source-line-no">042</span><span id="line-42"> * user could be the same user as the user the daemon is running as)</span>
<span class="source-line-no">043</span><span id="line-43"> */</span>
<span class="source-line-no">044</span><span id="line-44">@InterfaceAudience.Private</span>
<span class="source-line-no">045</span><span id="line-45">public class HBaseClusterManager extends Configured implements ClusterManager {</span>
<span class="source-line-no">046</span><span id="line-46"></span>
<span class="source-line-no">047</span><span id="line-47">  protected enum Signal {</span>
<span class="source-line-no">048</span><span id="line-48">    SIGKILL,</span>
<span class="source-line-no">049</span><span id="line-49">    SIGSTOP,</span>
<span class="source-line-no">050</span><span id="line-50">    SIGCONT,</span>
<span class="source-line-no">051</span><span id="line-51">  }</span>
<span class="source-line-no">052</span><span id="line-52"></span>
<span class="source-line-no">053</span><span id="line-53">  protected static final Logger LOG = LoggerFactory.getLogger(HBaseClusterManager.class);</span>
<span class="source-line-no">054</span><span id="line-54">  private String sshUserName;</span>
<span class="source-line-no">055</span><span id="line-55">  private String sshOptions;</span>
<span class="source-line-no">056</span><span id="line-56"></span>
<span class="source-line-no">057</span><span id="line-57">  /**</span>
<span class="source-line-no">058</span><span id="line-58">   * The command format that is used to execute the remote command. Arguments: 1 SSH options, 2 user</span>
<span class="source-line-no">059</span><span id="line-59">   * name , 3 "@" if username is set, 4 host, 5 original command, 6 service user.</span>
<span class="source-line-no">060</span><span id="line-60">   */</span>
<span class="source-line-no">061</span><span id="line-61">  private static final String DEFAULT_TUNNEL_CMD =</span>
<span class="source-line-no">062</span><span id="line-62">    "timeout 30 /usr/bin/ssh %1$s %2$s%3$s%4$s \"sudo -u %6$s %5$s\"";</span>
<span class="source-line-no">063</span><span id="line-63">  private String tunnelCmd;</span>
<span class="source-line-no">064</span><span id="line-64"></span>
<span class="source-line-no">065</span><span id="line-65">  /**</span>
<span class="source-line-no">066</span><span id="line-66">   * The command format that is used to execute the remote command with sudo. Arguments: 1 SSH</span>
<span class="source-line-no">067</span><span id="line-67">   * options, 2 user name , 3 "@" if username is set, 4 host, 5 original command, 6 timeout.</span>
<span class="source-line-no">068</span><span id="line-68">   */</span>
<span class="source-line-no">069</span><span id="line-69">  private static final String DEFAULT_TUNNEL_SUDO_CMD =</span>
<span class="source-line-no">070</span><span id="line-70">    "timeout %6$s /usr/bin/ssh %1$s %2$s%3$s%4$s \"sudo %5$s\"";</span>
<span class="source-line-no">071</span><span id="line-71">  private String tunnelSudoCmd;</span>
<span class="source-line-no">072</span><span id="line-72"></span>
<span class="source-line-no">073</span><span id="line-73">  static final String RETRY_ATTEMPTS_KEY = "hbase.it.clustermanager.retry.attempts";</span>
<span class="source-line-no">074</span><span id="line-74">  static final int DEFAULT_RETRY_ATTEMPTS = 5;</span>
<span class="source-line-no">075</span><span id="line-75"></span>
<span class="source-line-no">076</span><span id="line-76">  static final String RETRY_SLEEP_INTERVAL_KEY = "hbase.it.clustermanager.retry.sleep.interval";</span>
<span class="source-line-no">077</span><span id="line-77">  static final int DEFAULT_RETRY_SLEEP_INTERVAL = 1000;</span>
<span class="source-line-no">078</span><span id="line-78"></span>
<span class="source-line-no">079</span><span id="line-79">  protected RetryCounterFactory retryCounterFactory;</span>
<span class="source-line-no">080</span><span id="line-80"></span>
<span class="source-line-no">081</span><span id="line-81">  @Override</span>
<span class="source-line-no">082</span><span id="line-82">  public void setConf(Configuration conf) {</span>
<span class="source-line-no">083</span><span id="line-83">    super.setConf(conf);</span>
<span class="source-line-no">084</span><span id="line-84">    if (conf == null) {</span>
<span class="source-line-no">085</span><span id="line-85">      // Configured gets passed null before real conf. Why? I don't know.</span>
<span class="source-line-no">086</span><span id="line-86">      return;</span>
<span class="source-line-no">087</span><span id="line-87">    }</span>
<span class="source-line-no">088</span><span id="line-88">    sshUserName = conf.get("hbase.it.clustermanager.ssh.user", "");</span>
<span class="source-line-no">089</span><span id="line-89">    String extraSshOptions = conf.get("hbase.it.clustermanager.ssh.opts", "-o ConnectTimeout=10");</span>
<span class="source-line-no">090</span><span id="line-90">    sshOptions = System.getenv("HBASE_SSH_OPTS");</span>
<span class="source-line-no">091</span><span id="line-91">    if (!extraSshOptions.isEmpty()) {</span>
<span class="source-line-no">092</span><span id="line-92">      sshOptions = StringUtils.join(new Object[] { sshOptions, extraSshOptions }, " ");</span>
<span class="source-line-no">093</span><span id="line-93">    }</span>
<span class="source-line-no">094</span><span id="line-94">    sshOptions = (sshOptions == null) ? "" : sshOptions;</span>
<span class="source-line-no">095</span><span id="line-95">    sshUserName = (sshUserName == null) ? "" : sshUserName;</span>
<span class="source-line-no">096</span><span id="line-96">    tunnelCmd = conf.get("hbase.it.clustermanager.ssh.cmd", DEFAULT_TUNNEL_CMD);</span>
<span class="source-line-no">097</span><span id="line-97">    tunnelSudoCmd = conf.get("hbase.it.clustermanager.ssh.sudo.cmd", DEFAULT_TUNNEL_SUDO_CMD);</span>
<span class="source-line-no">098</span><span id="line-98">    // Print out ssh special config if any.</span>
<span class="source-line-no">099</span><span id="line-99">    if (</span>
<span class="source-line-no">100</span><span id="line-100">      (sshUserName != null &amp;&amp; sshUserName.length() &gt; 0)</span>
<span class="source-line-no">101</span><span id="line-101">        || (sshOptions != null &amp;&amp; sshOptions.length() &gt; 0)</span>
<span class="source-line-no">102</span><span id="line-102">    ) {</span>
<span class="source-line-no">103</span><span id="line-103">      LOG.info("Running with SSH user [" + sshUserName + "] and options [" + sshOptions + "]");</span>
<span class="source-line-no">104</span><span id="line-104">    }</span>
<span class="source-line-no">105</span><span id="line-105"></span>
<span class="source-line-no">106</span><span id="line-106">    this.retryCounterFactory = new RetryCounterFactory(</span>
<span class="source-line-no">107</span><span id="line-107">      new RetryConfig().setMaxAttempts(conf.getInt(RETRY_ATTEMPTS_KEY, DEFAULT_RETRY_ATTEMPTS))</span>
<span class="source-line-no">108</span><span id="line-108">        .setSleepInterval(conf.getLong(RETRY_SLEEP_INTERVAL_KEY, DEFAULT_RETRY_SLEEP_INTERVAL)));</span>
<span class="source-line-no">109</span><span id="line-109">  }</span>
<span class="source-line-no">110</span><span id="line-110"></span>
<span class="source-line-no">111</span><span id="line-111">  protected String getServiceUser(ServiceType service) {</span>
<span class="source-line-no">112</span><span id="line-112">    Configuration conf = getConf();</span>
<span class="source-line-no">113</span><span id="line-113">    switch (service) {</span>
<span class="source-line-no">114</span><span id="line-114">      case HADOOP_DATANODE:</span>
<span class="source-line-no">115</span><span id="line-115">      case HADOOP_NAMENODE:</span>
<span class="source-line-no">116</span><span id="line-116">        return conf.get("hbase.it.clustermanager.hadoop.hdfs.user", "hdfs");</span>
<span class="source-line-no">117</span><span id="line-117">      case ZOOKEEPER_SERVER:</span>
<span class="source-line-no">118</span><span id="line-118">        return conf.get("hbase.it.clustermanager.zookeeper.user", "zookeeper");</span>
<span class="source-line-no">119</span><span id="line-119">      default:</span>
<span class="source-line-no">120</span><span id="line-120">        return conf.get("hbase.it.clustermanager.hbase.user", "hbase");</span>
<span class="source-line-no">121</span><span id="line-121">    }</span>
<span class="source-line-no">122</span><span id="line-122">  }</span>
<span class="source-line-no">123</span><span id="line-123"></span>
<span class="source-line-no">124</span><span id="line-124">  /**</span>
<span class="source-line-no">125</span><span id="line-125">   * Executes commands over SSH</span>
<span class="source-line-no">126</span><span id="line-126">   */</span>
<span class="source-line-no">127</span><span id="line-127">  protected class RemoteShell extends Shell.ShellCommandExecutor {</span>
<span class="source-line-no">128</span><span id="line-128">    private String hostname;</span>
<span class="source-line-no">129</span><span id="line-129">    private String user;</span>
<span class="source-line-no">130</span><span id="line-130"></span>
<span class="source-line-no">131</span><span id="line-131">    public RemoteShell(String hostname, String[] execString, File dir, Map&lt;String, String&gt; env,</span>
<span class="source-line-no">132</span><span id="line-132">      long timeout) {</span>
<span class="source-line-no">133</span><span id="line-133">      super(execString, dir, env, timeout);</span>
<span class="source-line-no">134</span><span id="line-134">      this.hostname = hostname;</span>
<span class="source-line-no">135</span><span id="line-135">    }</span>
<span class="source-line-no">136</span><span id="line-136"></span>
<span class="source-line-no">137</span><span id="line-137">    public RemoteShell(String hostname, String[] execString, File dir, Map&lt;String, String&gt; env) {</span>
<span class="source-line-no">138</span><span id="line-138">      super(execString, dir, env);</span>
<span class="source-line-no">139</span><span id="line-139">      this.hostname = hostname;</span>
<span class="source-line-no">140</span><span id="line-140">    }</span>
<span class="source-line-no">141</span><span id="line-141"></span>
<span class="source-line-no">142</span><span id="line-142">    public RemoteShell(String hostname, String[] execString, File dir) {</span>
<span class="source-line-no">143</span><span id="line-143">      super(execString, dir);</span>
<span class="source-line-no">144</span><span id="line-144">      this.hostname = hostname;</span>
<span class="source-line-no">145</span><span id="line-145">    }</span>
<span class="source-line-no">146</span><span id="line-146"></span>
<span class="source-line-no">147</span><span id="line-147">    public RemoteShell(String hostname, String[] execString) {</span>
<span class="source-line-no">148</span><span id="line-148">      super(execString);</span>
<span class="source-line-no">149</span><span id="line-149">      this.hostname = hostname;</span>
<span class="source-line-no">150</span><span id="line-150">    }</span>
<span class="source-line-no">151</span><span id="line-151"></span>
<span class="source-line-no">152</span><span id="line-152">    public RemoteShell(String hostname, String user, String[] execString) {</span>
<span class="source-line-no">153</span><span id="line-153">      super(execString);</span>
<span class="source-line-no">154</span><span id="line-154">      this.hostname = hostname;</span>
<span class="source-line-no">155</span><span id="line-155">      this.user = user;</span>
<span class="source-line-no">156</span><span id="line-156">    }</span>
<span class="source-line-no">157</span><span id="line-157"></span>
<span class="source-line-no">158</span><span id="line-158">    @Override</span>
<span class="source-line-no">159</span><span id="line-159">    public String[] getExecString() {</span>
<span class="source-line-no">160</span><span id="line-160">      String at = sshUserName.isEmpty() ? "" : "@";</span>
<span class="source-line-no">161</span><span id="line-161">      String remoteCmd = StringUtils.join(super.getExecString(), " ");</span>
<span class="source-line-no">162</span><span id="line-162">      String cmd = String.format(tunnelCmd, sshOptions, sshUserName, at, hostname, remoteCmd, user);</span>
<span class="source-line-no">163</span><span id="line-163">      LOG.info("Executing full command [" + cmd + "]");</span>
<span class="source-line-no">164</span><span id="line-164">      return new String[] { "/usr/bin/env", "bash", "-c", cmd };</span>
<span class="source-line-no">165</span><span id="line-165">    }</span>
<span class="source-line-no">166</span><span id="line-166">  }</span>
<span class="source-line-no">167</span><span id="line-167"></span>
<span class="source-line-no">168</span><span id="line-168">  /**</span>
<span class="source-line-no">169</span><span id="line-169">   * Executes commands over SSH</span>
<span class="source-line-no">170</span><span id="line-170">   */</span>
<span class="source-line-no">171</span><span id="line-171">  protected class RemoteSudoShell extends Shell.ShellCommandExecutor {</span>
<span class="source-line-no">172</span><span id="line-172">    private String hostname;</span>
<span class="source-line-no">173</span><span id="line-173"></span>
<span class="source-line-no">174</span><span id="line-174">    public RemoteSudoShell(String hostname, String[] execString, long timeout) {</span>
<span class="source-line-no">175</span><span id="line-175">      this(hostname, execString, null, null, timeout);</span>
<span class="source-line-no">176</span><span id="line-176">    }</span>
<span class="source-line-no">177</span><span id="line-177"></span>
<span class="source-line-no">178</span><span id="line-178">    public RemoteSudoShell(String hostname, String[] execString, File dir, Map&lt;String, String&gt; env,</span>
<span class="source-line-no">179</span><span id="line-179">      long timeout) {</span>
<span class="source-line-no">180</span><span id="line-180">      super(execString, dir, env, timeout);</span>
<span class="source-line-no">181</span><span id="line-181">      this.hostname = hostname;</span>
<span class="source-line-no">182</span><span id="line-182">    }</span>
<span class="source-line-no">183</span><span id="line-183"></span>
<span class="source-line-no">184</span><span id="line-184">    @Override</span>
<span class="source-line-no">185</span><span id="line-185">    public String[] getExecString() {</span>
<span class="source-line-no">186</span><span id="line-186">      String at = sshUserName.isEmpty() ? "" : "@";</span>
<span class="source-line-no">187</span><span id="line-187">      String remoteCmd = StringUtils.join(super.getExecString(), " ");</span>
<span class="source-line-no">188</span><span id="line-188">      String cmd = String.format(tunnelSudoCmd, sshOptions, sshUserName, at, hostname, remoteCmd,</span>
<span class="source-line-no">189</span><span id="line-189">        timeOutInterval / 1000f);</span>
<span class="source-line-no">190</span><span id="line-190">      LOG.info("Executing full command [" + cmd + "]");</span>
<span class="source-line-no">191</span><span id="line-191">      return new String[] { "/usr/bin/env", "bash", "-c", cmd };</span>
<span class="source-line-no">192</span><span id="line-192">    }</span>
<span class="source-line-no">193</span><span id="line-193">  }</span>
<span class="source-line-no">194</span><span id="line-194"></span>
<span class="source-line-no">195</span><span id="line-195">  /**</span>
<span class="source-line-no">196</span><span id="line-196">   * Provides command strings for services to be executed by Shell. CommandProviders are pluggable,</span>
<span class="source-line-no">197</span><span id="line-197">   * and different deployments(windows, bigtop, etc) can be managed by plugging-in custom</span>
<span class="source-line-no">198</span><span id="line-198">   * CommandProvider's or ClusterManager's.</span>
<span class="source-line-no">199</span><span id="line-199">   */</span>
<span class="source-line-no">200</span><span id="line-200">  static abstract class CommandProvider {</span>
<span class="source-line-no">201</span><span id="line-201"></span>
<span class="source-line-no">202</span><span id="line-202">    enum Operation {</span>
<span class="source-line-no">203</span><span id="line-203">      START,</span>
<span class="source-line-no">204</span><span id="line-204">      STOP,</span>
<span class="source-line-no">205</span><span id="line-205">      RESTART</span>
<span class="source-line-no">206</span><span id="line-206">    }</span>
<span class="source-line-no">207</span><span id="line-207"></span>
<span class="source-line-no">208</span><span id="line-208">    public abstract String getCommand(ServiceType service, Operation op);</span>
<span class="source-line-no">209</span><span id="line-209"></span>
<span class="source-line-no">210</span><span id="line-210">    public String isRunningCommand(ServiceType service) {</span>
<span class="source-line-no">211</span><span id="line-211">      return findPidCommand(service);</span>
<span class="source-line-no">212</span><span id="line-212">    }</span>
<span class="source-line-no">213</span><span id="line-213"></span>
<span class="source-line-no">214</span><span id="line-214">    protected String findPidCommand(ServiceType service) {</span>
<span class="source-line-no">215</span><span id="line-215">      return String.format("ps ux | grep proc_%s | grep -v grep | tr -s ' ' | cut -d ' ' -f2",</span>
<span class="source-line-no">216</span><span id="line-216">        service);</span>
<span class="source-line-no">217</span><span id="line-217">    }</span>
<span class="source-line-no">218</span><span id="line-218"></span>
<span class="source-line-no">219</span><span id="line-219">    public String signalCommand(ServiceType service, String signal) {</span>
<span class="source-line-no">220</span><span id="line-220">      return String.format("%s | xargs kill -s %s", findPidCommand(service), signal);</span>
<span class="source-line-no">221</span><span id="line-221">    }</span>
<span class="source-line-no">222</span><span id="line-222">  }</span>
<span class="source-line-no">223</span><span id="line-223"></span>
<span class="source-line-no">224</span><span id="line-224">  /**</span>
<span class="source-line-no">225</span><span id="line-225">   * CommandProvider to manage the service using bin/hbase-* scripts</span>
<span class="source-line-no">226</span><span id="line-226">   */</span>
<span class="source-line-no">227</span><span id="line-227">  static class HBaseShellCommandProvider extends CommandProvider {</span>
<span class="source-line-no">228</span><span id="line-228">    private final String hbaseHome;</span>
<span class="source-line-no">229</span><span id="line-229">    private final String confDir;</span>
<span class="source-line-no">230</span><span id="line-230"></span>
<span class="source-line-no">231</span><span id="line-231">    HBaseShellCommandProvider(Configuration conf) {</span>
<span class="source-line-no">232</span><span id="line-232">      hbaseHome = conf.get("hbase.it.clustermanager.hbase.home", System.getenv("HBASE_HOME"));</span>
<span class="source-line-no">233</span><span id="line-233">      String tmp =</span>
<span class="source-line-no">234</span><span id="line-234">        conf.get("hbase.it.clustermanager.hbase.conf.dir", System.getenv("HBASE_CONF_DIR"));</span>
<span class="source-line-no">235</span><span id="line-235">      if (tmp != null) {</span>
<span class="source-line-no">236</span><span id="line-236">        confDir = String.format("--config %s", tmp);</span>
<span class="source-line-no">237</span><span id="line-237">      } else {</span>
<span class="source-line-no">238</span><span id="line-238">        confDir = "";</span>
<span class="source-line-no">239</span><span id="line-239">      }</span>
<span class="source-line-no">240</span><span id="line-240">    }</span>
<span class="source-line-no">241</span><span id="line-241"></span>
<span class="source-line-no">242</span><span id="line-242">    @Override</span>
<span class="source-line-no">243</span><span id="line-243">    public String getCommand(ServiceType service, Operation op) {</span>
<span class="source-line-no">244</span><span id="line-244">      return String.format("%s/bin/hbase-daemon.sh %s %s %s", hbaseHome, confDir,</span>
<span class="source-line-no">245</span><span id="line-245">        op.toString().toLowerCase(Locale.ROOT), service);</span>
<span class="source-line-no">246</span><span id="line-246">    }</span>
<span class="source-line-no">247</span><span id="line-247">  }</span>
<span class="source-line-no">248</span><span id="line-248"></span>
<span class="source-line-no">249</span><span id="line-249">  /**</span>
<span class="source-line-no">250</span><span id="line-250">   * CommandProvider to manage the service using sbin/hadoop-* scripts.</span>
<span class="source-line-no">251</span><span id="line-251">   */</span>
<span class="source-line-no">252</span><span id="line-252">  static class HadoopShellCommandProvider extends CommandProvider {</span>
<span class="source-line-no">253</span><span id="line-253">    private final String hadoopHome;</span>
<span class="source-line-no">254</span><span id="line-254">    private final String confDir;</span>
<span class="source-line-no">255</span><span id="line-255"></span>
<span class="source-line-no">256</span><span id="line-256">    HadoopShellCommandProvider(Configuration conf) throws IOException {</span>
<span class="source-line-no">257</span><span id="line-257">      hadoopHome = conf.get("hbase.it.clustermanager.hadoop.home", System.getenv("HADOOP_HOME"));</span>
<span class="source-line-no">258</span><span id="line-258">      String tmp =</span>
<span class="source-line-no">259</span><span id="line-259">        conf.get("hbase.it.clustermanager.hadoop.conf.dir", System.getenv("HADOOP_CONF_DIR"));</span>
<span class="source-line-no">260</span><span id="line-260">      if (hadoopHome == null) {</span>
<span class="source-line-no">261</span><span id="line-261">        throw new IOException("Hadoop home configuration parameter i.e. "</span>
<span class="source-line-no">262</span><span id="line-262">          + "'hbase.it.clustermanager.hadoop.home' is not configured properly.");</span>
<span class="source-line-no">263</span><span id="line-263">      }</span>
<span class="source-line-no">264</span><span id="line-264">      if (tmp != null) {</span>
<span class="source-line-no">265</span><span id="line-265">        confDir = String.format("--config %s", tmp);</span>
<span class="source-line-no">266</span><span id="line-266">      } else {</span>
<span class="source-line-no">267</span><span id="line-267">        confDir = "";</span>
<span class="source-line-no">268</span><span id="line-268">      }</span>
<span class="source-line-no">269</span><span id="line-269">    }</span>
<span class="source-line-no">270</span><span id="line-270"></span>
<span class="source-line-no">271</span><span id="line-271">    @Override</span>
<span class="source-line-no">272</span><span id="line-272">    public String getCommand(ServiceType service, Operation op) {</span>
<span class="source-line-no">273</span><span id="line-273">      return String.format("%s/sbin/hadoop-daemon.sh %s %s %s", hadoopHome, confDir,</span>
<span class="source-line-no">274</span><span id="line-274">        op.toString().toLowerCase(Locale.ROOT), service);</span>
<span class="source-line-no">275</span><span id="line-275">    }</span>
<span class="source-line-no">276</span><span id="line-276">  }</span>
<span class="source-line-no">277</span><span id="line-277"></span>
<span class="source-line-no">278</span><span id="line-278">  /**</span>
<span class="source-line-no">279</span><span id="line-279">   * CommandProvider to manage the service using bin/zk* scripts.</span>
<span class="source-line-no">280</span><span id="line-280">   */</span>
<span class="source-line-no">281</span><span id="line-281">  static class ZookeeperShellCommandProvider extends CommandProvider {</span>
<span class="source-line-no">282</span><span id="line-282">    private final String zookeeperHome;</span>
<span class="source-line-no">283</span><span id="line-283"></span>
<span class="source-line-no">284</span><span id="line-284">    ZookeeperShellCommandProvider(Configuration conf) throws IOException {</span>
<span class="source-line-no">285</span><span id="line-285">      zookeeperHome =</span>
<span class="source-line-no">286</span><span id="line-286">        conf.get("hbase.it.clustermanager.zookeeper.home", System.getenv("ZOOBINDIR"));</span>
<span class="source-line-no">287</span><span id="line-287">      if (zookeeperHome == null) {</span>
<span class="source-line-no">288</span><span id="line-288">        throw new IOException("ZooKeeper home configuration parameter i.e. "</span>
<span class="source-line-no">289</span><span id="line-289">          + "'hbase.it.clustermanager.zookeeper.home' is not configured properly.");</span>
<span class="source-line-no">290</span><span id="line-290">      }</span>
<span class="source-line-no">291</span><span id="line-291">    }</span>
<span class="source-line-no">292</span><span id="line-292"></span>
<span class="source-line-no">293</span><span id="line-293">    @Override</span>
<span class="source-line-no">294</span><span id="line-294">    public String getCommand(ServiceType service, Operation op) {</span>
<span class="source-line-no">295</span><span id="line-295">      return String.format("%s/bin/zkServer.sh %s", zookeeperHome,</span>
<span class="source-line-no">296</span><span id="line-296">        op.toString().toLowerCase(Locale.ROOT));</span>
<span class="source-line-no">297</span><span id="line-297">    }</span>
<span class="source-line-no">298</span><span id="line-298"></span>
<span class="source-line-no">299</span><span id="line-299">    @Override</span>
<span class="source-line-no">300</span><span id="line-300">    protected String findPidCommand(ServiceType service) {</span>
<span class="source-line-no">301</span><span id="line-301">      return String.format("ps ux | grep %s | grep -v grep | tr -s ' ' | cut -d ' ' -f2", service);</span>
<span class="source-line-no">302</span><span id="line-302">    }</span>
<span class="source-line-no">303</span><span id="line-303">  }</span>
<span class="source-line-no">304</span><span id="line-304"></span>
<span class="source-line-no">305</span><span id="line-305">  public HBaseClusterManager() {</span>
<span class="source-line-no">306</span><span id="line-306">  }</span>
<span class="source-line-no">307</span><span id="line-307"></span>
<span class="source-line-no">308</span><span id="line-308">  protected CommandProvider getCommandProvider(ServiceType service) throws IOException {</span>
<span class="source-line-no">309</span><span id="line-309">    switch (service) {</span>
<span class="source-line-no">310</span><span id="line-310">      case HADOOP_DATANODE:</span>
<span class="source-line-no">311</span><span id="line-311">      case HADOOP_NAMENODE:</span>
<span class="source-line-no">312</span><span id="line-312">        return new HadoopShellCommandProvider(getConf());</span>
<span class="source-line-no">313</span><span id="line-313">      case ZOOKEEPER_SERVER:</span>
<span class="source-line-no">314</span><span id="line-314">        return new ZookeeperShellCommandProvider(getConf());</span>
<span class="source-line-no">315</span><span id="line-315">      default:</span>
<span class="source-line-no">316</span><span id="line-316">        Class&lt;? extends CommandProvider&gt; provider =</span>
<span class="source-line-no">317</span><span id="line-317">          getConf().getClass("hbase.it.clustermanager.hbase.command.provider",</span>
<span class="source-line-no">318</span><span id="line-318">            HBaseShellCommandProvider.class, CommandProvider.class);</span>
<span class="source-line-no">319</span><span id="line-319">        return ReflectionUtils.newInstance(provider, getConf());</span>
<span class="source-line-no">320</span><span id="line-320">    }</span>
<span class="source-line-no">321</span><span id="line-321">  }</span>
<span class="source-line-no">322</span><span id="line-322"></span>
<span class="source-line-no">323</span><span id="line-323">  /**</span>
<span class="source-line-no">324</span><span id="line-324">   * Execute the given command on the host using SSH</span>
<span class="source-line-no">325</span><span id="line-325">   * @return pair of exit code and command output</span>
<span class="source-line-no">326</span><span id="line-326">   * @throws IOException if something goes wrong.</span>
<span class="source-line-no">327</span><span id="line-327">   */</span>
<span class="source-line-no">328</span><span id="line-328">  protected Pair&lt;Integer, String&gt; exec(String hostname, ServiceType service, String... cmd)</span>
<span class="source-line-no">329</span><span id="line-329">    throws IOException {</span>
<span class="source-line-no">330</span><span id="line-330">    LOG.info("Executing remote command: {}, hostname:{}", StringUtils.join(cmd, " "), hostname);</span>
<span class="source-line-no">331</span><span id="line-331"></span>
<span class="source-line-no">332</span><span id="line-332">    RemoteShell shell = new RemoteShell(hostname, getServiceUser(service), cmd);</span>
<span class="source-line-no">333</span><span id="line-333">    try {</span>
<span class="source-line-no">334</span><span id="line-334">      shell.execute();</span>
<span class="source-line-no">335</span><span id="line-335">    } catch (Shell.ExitCodeException ex) {</span>
<span class="source-line-no">336</span><span id="line-336">      // capture the stdout of the process as well.</span>
<span class="source-line-no">337</span><span id="line-337">      String output = shell.getOutput();</span>
<span class="source-line-no">338</span><span id="line-338">      // add output for the ExitCodeException.</span>
<span class="source-line-no">339</span><span id="line-339">      throw new Shell.ExitCodeException(ex.getExitCode(),</span>
<span class="source-line-no">340</span><span id="line-340">        "stderr: " + ex.getMessage() + ", stdout: " + output);</span>
<span class="source-line-no">341</span><span id="line-341">    }</span>
<span class="source-line-no">342</span><span id="line-342"></span>
<span class="source-line-no">343</span><span id="line-343">    LOG.info("Executed remote command, exit code:{} , output:{}", shell.getExitCode(),</span>
<span class="source-line-no">344</span><span id="line-344">      shell.getOutput());</span>
<span class="source-line-no">345</span><span id="line-345"></span>
<span class="source-line-no">346</span><span id="line-346">    return new Pair&lt;&gt;(shell.getExitCode(), shell.getOutput());</span>
<span class="source-line-no">347</span><span id="line-347">  }</span>
<span class="source-line-no">348</span><span id="line-348"></span>
<span class="source-line-no">349</span><span id="line-349">  private Pair&lt;Integer, String&gt; execWithRetries(String hostname, ServiceType service, String... cmd)</span>
<span class="source-line-no">350</span><span id="line-350">    throws IOException {</span>
<span class="source-line-no">351</span><span id="line-351">    RetryCounter retryCounter = retryCounterFactory.create();</span>
<span class="source-line-no">352</span><span id="line-352">    while (true) {</span>
<span class="source-line-no">353</span><span id="line-353">      try {</span>
<span class="source-line-no">354</span><span id="line-354">        return exec(hostname, service, cmd);</span>
<span class="source-line-no">355</span><span id="line-355">      } catch (IOException e) {</span>
<span class="source-line-no">356</span><span id="line-356">        retryOrThrow(retryCounter, e, hostname, cmd);</span>
<span class="source-line-no">357</span><span id="line-357">      }</span>
<span class="source-line-no">358</span><span id="line-358">      try {</span>
<span class="source-line-no">359</span><span id="line-359">        retryCounter.sleepUntilNextRetry();</span>
<span class="source-line-no">360</span><span id="line-360">      } catch (InterruptedException ex) {</span>
<span class="source-line-no">361</span><span id="line-361">        // ignore</span>
<span class="source-line-no">362</span><span id="line-362">        LOG.warn("Sleep Interrupted:", ex);</span>
<span class="source-line-no">363</span><span id="line-363">      }</span>
<span class="source-line-no">364</span><span id="line-364">    }</span>
<span class="source-line-no">365</span><span id="line-365">  }</span>
<span class="source-line-no">366</span><span id="line-366"></span>
<span class="source-line-no">367</span><span id="line-367">  /**</span>
<span class="source-line-no">368</span><span id="line-368">   * Execute the given command on the host using SSH</span>
<span class="source-line-no">369</span><span id="line-369">   * @return pair of exit code and command output</span>
<span class="source-line-no">370</span><span id="line-370">   * @throws IOException if something goes wrong.</span>
<span class="source-line-no">371</span><span id="line-371">   */</span>
<span class="source-line-no">372</span><span id="line-372">  public Pair&lt;Integer, String&gt; execSudo(String hostname, long timeout, String... cmd)</span>
<span class="source-line-no">373</span><span id="line-373">    throws IOException {</span>
<span class="source-line-no">374</span><span id="line-374">    LOG.info("Executing remote command: {} , hostname:{}", StringUtils.join(cmd, " "), hostname);</span>
<span class="source-line-no">375</span><span id="line-375"></span>
<span class="source-line-no">376</span><span id="line-376">    RemoteSudoShell shell = new RemoteSudoShell(hostname, cmd, timeout);</span>
<span class="source-line-no">377</span><span id="line-377">    try {</span>
<span class="source-line-no">378</span><span id="line-378">      shell.execute();</span>
<span class="source-line-no">379</span><span id="line-379">    } catch (Shell.ExitCodeException ex) {</span>
<span class="source-line-no">380</span><span id="line-380">      // capture the stdout of the process as well.</span>
<span class="source-line-no">381</span><span id="line-381">      String output = shell.getOutput();</span>
<span class="source-line-no">382</span><span id="line-382">      // add output for the ExitCodeException.</span>
<span class="source-line-no">383</span><span id="line-383">      throw new Shell.ExitCodeException(ex.getExitCode(),</span>
<span class="source-line-no">384</span><span id="line-384">        "stderr: " + ex.getMessage() + ", stdout: " + output);</span>
<span class="source-line-no">385</span><span id="line-385">    }</span>
<span class="source-line-no">386</span><span id="line-386"></span>
<span class="source-line-no">387</span><span id="line-387">    LOG.info("Executed remote command, exit code:{} , output:{}", shell.getExitCode(),</span>
<span class="source-line-no">388</span><span id="line-388">      shell.getOutput());</span>
<span class="source-line-no">389</span><span id="line-389"></span>
<span class="source-line-no">390</span><span id="line-390">    return new Pair&lt;&gt;(shell.getExitCode(), shell.getOutput());</span>
<span class="source-line-no">391</span><span id="line-391">  }</span>
<span class="source-line-no">392</span><span id="line-392"></span>
<span class="source-line-no">393</span><span id="line-393">  public Pair&lt;Integer, String&gt; execSudoWithRetries(String hostname, long timeout, String... cmd)</span>
<span class="source-line-no">394</span><span id="line-394">    throws IOException {</span>
<span class="source-line-no">395</span><span id="line-395">    RetryCounter retryCounter = retryCounterFactory.create();</span>
<span class="source-line-no">396</span><span id="line-396">    while (true) {</span>
<span class="source-line-no">397</span><span id="line-397">      try {</span>
<span class="source-line-no">398</span><span id="line-398">        return execSudo(hostname, timeout, cmd);</span>
<span class="source-line-no">399</span><span id="line-399">      } catch (IOException e) {</span>
<span class="source-line-no">400</span><span id="line-400">        retryOrThrow(retryCounter, e, hostname, cmd);</span>
<span class="source-line-no">401</span><span id="line-401">      }</span>
<span class="source-line-no">402</span><span id="line-402">      try {</span>
<span class="source-line-no">403</span><span id="line-403">        retryCounter.sleepUntilNextRetry();</span>
<span class="source-line-no">404</span><span id="line-404">      } catch (InterruptedException ex) {</span>
<span class="source-line-no">405</span><span id="line-405">        // ignore</span>
<span class="source-line-no">406</span><span id="line-406">        LOG.warn("Sleep Interrupted:", ex);</span>
<span class="source-line-no">407</span><span id="line-407">      }</span>
<span class="source-line-no">408</span><span id="line-408">    }</span>
<span class="source-line-no">409</span><span id="line-409">  }</span>
<span class="source-line-no">410</span><span id="line-410"></span>
<span class="source-line-no">411</span><span id="line-411">  private &lt;E extends Exception&gt; void retryOrThrow(RetryCounter retryCounter, E ex, String hostname,</span>
<span class="source-line-no">412</span><span id="line-412">    String[] cmd) throws E {</span>
<span class="source-line-no">413</span><span id="line-413">    if (retryCounter.shouldRetry()) {</span>
<span class="source-line-no">414</span><span id="line-414">      LOG.warn("Remote command: " + StringUtils.join(cmd, " ") + " , hostname:" + hostname</span>
<span class="source-line-no">415</span><span id="line-415">        + " failed at attempt " + retryCounter.getAttemptTimes() + ". Retrying until maxAttempts: "</span>
<span class="source-line-no">416</span><span id="line-416">        + retryCounter.getMaxAttempts() + ". Exception: " + ex.getMessage());</span>
<span class="source-line-no">417</span><span id="line-417">      return;</span>
<span class="source-line-no">418</span><span id="line-418">    }</span>
<span class="source-line-no">419</span><span id="line-419">    throw ex;</span>
<span class="source-line-no">420</span><span id="line-420">  }</span>
<span class="source-line-no">421</span><span id="line-421"></span>
<span class="source-line-no">422</span><span id="line-422">  private void exec(String hostname, ServiceType service, Operation op) throws IOException {</span>
<span class="source-line-no">423</span><span id="line-423">    execWithRetries(hostname, service, getCommandProvider(service).getCommand(service, op));</span>
<span class="source-line-no">424</span><span id="line-424">  }</span>
<span class="source-line-no">425</span><span id="line-425"></span>
<span class="source-line-no">426</span><span id="line-426">  @Override</span>
<span class="source-line-no">427</span><span id="line-427">  public void start(ServiceType service, String hostname, int port) throws IOException {</span>
<span class="source-line-no">428</span><span id="line-428">    exec(hostname, service, Operation.START);</span>
<span class="source-line-no">429</span><span id="line-429">  }</span>
<span class="source-line-no">430</span><span id="line-430"></span>
<span class="source-line-no">431</span><span id="line-431">  @Override</span>
<span class="source-line-no">432</span><span id="line-432">  public void stop(ServiceType service, String hostname, int port) throws IOException {</span>
<span class="source-line-no">433</span><span id="line-433">    exec(hostname, service, Operation.STOP);</span>
<span class="source-line-no">434</span><span id="line-434">  }</span>
<span class="source-line-no">435</span><span id="line-435"></span>
<span class="source-line-no">436</span><span id="line-436">  @Override</span>
<span class="source-line-no">437</span><span id="line-437">  public void restart(ServiceType service, String hostname, int port) throws IOException {</span>
<span class="source-line-no">438</span><span id="line-438">    exec(hostname, service, Operation.RESTART);</span>
<span class="source-line-no">439</span><span id="line-439">  }</span>
<span class="source-line-no">440</span><span id="line-440"></span>
<span class="source-line-no">441</span><span id="line-441">  public void signal(ServiceType service, Signal signal, String hostname) throws IOException {</span>
<span class="source-line-no">442</span><span id="line-442">    execWithRetries(hostname, service,</span>
<span class="source-line-no">443</span><span id="line-443">      getCommandProvider(service).signalCommand(service, signal.toString()));</span>
<span class="source-line-no">444</span><span id="line-444">  }</span>
<span class="source-line-no">445</span><span id="line-445"></span>
<span class="source-line-no">446</span><span id="line-446">  @Override</span>
<span class="source-line-no">447</span><span id="line-447">  public boolean isRunning(ServiceType service, String hostname, int port) throws IOException {</span>
<span class="source-line-no">448</span><span id="line-448">    String ret =</span>
<span class="source-line-no">449</span><span id="line-449">      execWithRetries(hostname, service, getCommandProvider(service).isRunningCommand(service))</span>
<span class="source-line-no">450</span><span id="line-450">        .getSecond();</span>
<span class="source-line-no">451</span><span id="line-451">    return ret.length() &gt; 0;</span>
<span class="source-line-no">452</span><span id="line-452">  }</span>
<span class="source-line-no">453</span><span id="line-453"></span>
<span class="source-line-no">454</span><span id="line-454">  @Override</span>
<span class="source-line-no">455</span><span id="line-455">  public void kill(ServiceType service, String hostname, int port) throws IOException {</span>
<span class="source-line-no">456</span><span id="line-456">    signal(service, Signal.SIGKILL, hostname);</span>
<span class="source-line-no">457</span><span id="line-457">  }</span>
<span class="source-line-no">458</span><span id="line-458"></span>
<span class="source-line-no">459</span><span id="line-459">  @Override</span>
<span class="source-line-no">460</span><span id="line-460">  public void suspend(ServiceType service, String hostname, int port) throws IOException {</span>
<span class="source-line-no">461</span><span id="line-461">    signal(service, Signal.SIGSTOP, hostname);</span>
<span class="source-line-no">462</span><span id="line-462">  }</span>
<span class="source-line-no">463</span><span id="line-463"></span>
<span class="source-line-no">464</span><span id="line-464">  @Override</span>
<span class="source-line-no">465</span><span id="line-465">  public void resume(ServiceType service, String hostname, int port) throws IOException {</span>
<span class="source-line-no">466</span><span id="line-466">    signal(service, Signal.SIGCONT, hostname);</span>
<span class="source-line-no">467</span><span id="line-467">  }</span>
<span class="source-line-no">468</span><span id="line-468">}</span>




























































</pre>
</div>
</main>
</body>
</html>
