<!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: HadoopShellCommandProvider">
<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>
