This is an automated email from the ASF dual-hosted git repository.
wuzhiguo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git
The following commit(s) were added to refs/heads/main by this push:
new 0ed48bb6 BIGTOP-4133: Add HBase component on Bigtop-3.3.0 stack (#125)
0ed48bb6 is described below
commit 0ed48bb68496b2ff4566fc91eeb8c98076eff788
Author: Zhiguo Wu <[email protected]>
AuthorDate: Fri Dec 13 15:41:12 2024 +0800
BIGTOP-4133: Add HBase component on Bigtop-3.3.0 stack (#125)
---
.../services/hadoop/configuration/core-site.xml | 23 +-
.../services/hadoop/configuration/hadoop.conf.xml | 4 +-
.../stacks/bigtop/3.3.0/services/hadoop/order.json | 5 +-
.../services/hbase/configuration/hbase-env.xml | 153 ++++++++
.../services/hbase/configuration/hbase-log4j.xml | 183 +++++++++
.../services/hbase/configuration/hbase-policy.xml | 49 +++
.../services/hbase/configuration/hbase-site.xml | 416 +++++++++++++++++++++
.../configuration/hbase.conf.xml} | 16 +-
.../configuration/regionservers.xml} | 21 +-
.../bigtop/3.3.0/services/hbase/metainfo.xml | 85 +++++
.../stacks/bigtop/3.3.0/services/hbase/order.json | 13 +
.../bigtop/3.3.0/services/zookeeper/order.json | 3 +-
.../bigtop/v3_3_0/hbase/HBaseClientScript.java | 52 +++
.../stack/bigtop/v3_3_0/hbase/HBaseParams.java | 115 ++++++
.../stack/bigtop/v3_3_0/hbase/HBaseSetup.java | 103 +++++
.../stack/bigtop/v3_3_0/hbase/HMasterScript.java | 88 +++++
.../bigtop/v3_3_0/hbase/HRegionServerScript.java | 90 +++++
17 files changed, 1382 insertions(+), 37 deletions(-)
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/core-site.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/core-site.xml
index 9f76aeea..945ff7ba 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/core-site.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/core-site.xml
@@ -28,7 +28,8 @@
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
- <description>The size of buffer for use in sequence files.
+ <description>
+ The size of buffer for use in sequence files.
The size of this buffer should probably be a multiple of hardware
page size (4096 on Intel x86), and it determines how much data is
buffered during read and write operations.
@@ -37,15 +38,15 @@
<property>
<name>io.serializations</name>
<value>org.apache.hadoop.io.serializer.WritableSerialization</value>
- <description>A list of comma-delimited serialization classes that can
be used for obtaining serializers and
- deserializers.
+ <description>
+ A list of comma-delimited serialization classes that can be used
for obtaining serializers and deserializers.
</description>
</property>
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value>
- <description>A list of the compression codec classes that can be used
- for compression/decompression.
+ <description>
+ A list of the compression codec classes that can be used for
compression/decompression.
</description>
</property>
<!-- file system properties -->
@@ -59,7 +60,8 @@
<property>
<name>fs.trash.interval</name>
<value>360</value>
- <description>Number of minutes after which the checkpoint gets deleted.
+ <description>
+ Number of minutes after which the checkpoint gets deleted.
If zero, the trash feature is disabled.
This option may be configured both on the server and the client.
If trash is disabled server side then the client side
configuration is checked.
@@ -88,7 +90,8 @@
<property>
<name>ipc.server.tcpnodelay</name>
<value>true</value>
- <description>Turn on/off Nagle's algorithm for the TCP socket
+ <description>
+ Turn on/off Nagle's algorithm for the TCP socket
connection on the server. Setting to true disables the algorithm
and may
decrease latency with a cost of more/smaller packets.
</description>
@@ -105,8 +108,7 @@
<name>hadoop.security.authentication</name>
<value>simple</value>
<description>
- Set the authentication for the cluster. Valid values are: simple or
- kerberos.
+ Set the authentication for the cluster. Valid values are: simple
or kerberos.
</description>
</property>
<property>
@@ -117,7 +119,8 @@
<property>
<name>hadoop.security.auth_to_local</name>
<value>DEFAULT</value>
- <description>The mapping from kerberos principal names to local OS
mapreduce.job.user.names.
+ <description>
+ The mapping from kerberos principal names to local OS
mapreduce.job.user.names.
So the default rule is just "DEFAULT" which takes all principals
in your default domain to their first
component.
"[email protected]" and "omalley/[email protected]" to "omalley",
if your default domain is APACHE.ORG.
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
index 427fd926..97d5d7d1 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
@@ -52,8 +52,8 @@
# limitations under the License.
#
-${hadoop_user} - nofile ${hdfs_user_nofile_limit}
-${hadoop_group} - nproc ${hdfs_user_nproc_limit}
+${hadoop_user} - nofile ${hadoop_user_nofile_limit}
+${hadoop_group} - nproc ${hadoop_user_nproc_limit}
]]>
</value>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/order.json
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/order.json
index 41035f89..88d0990f 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/order.json
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/order.json
@@ -6,11 +6,12 @@
"NAMENODE-RESTART"
],
"DATANODE-STOP": [
- "NAMENODE-START"
+ "HBASE_MASTER-STOP"
],
"NAMENODE-STOP": [
"DATANODE-STOP",
- "SECONDARYNAMENODE-STOP"
+ "SECONDARYNAMENODE-STOP",
+ "HBASE_MASTER-STOP"
],
"NAMENODE-START": [
"ZKFC-START",
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-env.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-env.xml
new file mode 100644
index 00000000..79d40da7
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-env.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ https://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<configuration>
+ <property>
+ <name>hbase_log_dir</name>
+ <value>/var/log/hbase</value>
+ <display-name>HBase Log Dir Prefix</display-name>
+ <description>Log Directories for HBase.</description>
+ </property>
+ <property>
+ <name>hbase_pid_dir</name>
+ <value>/var/run/hbase</value>
+ <display-name>HBase PID Dir</display-name>
+ <description>Pid Directory for HBase.</description>
+ </property>
+ <property>
+ <name>regionserver_heapsize</name>
+ <value>4096</value>
+ <description>Maximum amount of memory each HBase RegionServer can
use.</description>
+ <display-name>HBase RegionServer Maximum Memory</display-name>
+ </property>
+ <property>
+ <name>regionserver_xmn_max</name>
+ <value>4000</value>
+ <display-name>RegionServers maximum value for -Xmn</display-name>
+ <description>
+ Sets the upper bound on HBase RegionServers' young generation size.
+ This value is used in case the young generation size (-Xmn)
calculated based on the max heapsize (regionserver_heapsize)
+ and the -Xmn ratio (regionserver_xmn_ratio) exceeds this value.
+ </description>
+ </property>
+ <property>
+ <name>regionserver_xmn_ratio</name>
+ <value>0.2</value>
+ <display-name>RegionServers -Xmn in -Xmx ratio</display-name>
+ <description>Percentage of max heap size (-Xmx) which used for young
generation heap (-Xmn).</description>
+ </property>
+ <property>
+ <name>master_heapsize</name>
+ <value>4096</value>
+ <display-name>HBase Master Maximum Memory</display-name>
+ <description>Maximum amount of memory each HBase Master can
use.</description>
+ </property>
+ <property>
+ <name>parallel_gc_threads</name>
+ <value>8</value>
+ <display-name>HBase Parallel GC Threads</display-name>
+ <description>The number of JVM parallel garbage collection threads
(e.g. -XX:ParallelGCThreads)</description>
+ </property>
+ <property>
+ <name>java_io_tmpdir</name>
+ <display-name>HBase Java IO Tmpdir</display-name>
+ <value>/tmp</value>
+ <description>Used in hbase-env.sh as
HBASE_OPTS=-Djava.io.tmpdir=java_io_tmpdir</description>
+ </property>
+ <property>
+ <name>regionserver_shutdown_timeout</name>
+ <value>30</value>
+ <display-name>HBase RegionServer shutdown timeout</display-name>
+ <description>
+ After this number of seconds waiting for graceful stop of HBase
Master it will be forced to exit with SIGKILL.
+ The timeout is introduced because there is a known bug when from
time to time HBase RegionServer hangs forever on stop if NN safemode is on.
+ </description>
+ </property>
+ <!-- hbase-env.sh -->
+ <property>
+ <name>content</name>
+ <display-name>hbase-env template</display-name>
+ <description>This is the freemarker template for hbase-env.sh
file</description>
+ <value><![CDATA[
+# Set environment variables here.
+
+# The java implementation to use. Java 1.6 required.
+export JAVA_HOME=${java_home!}
+
+# HBase Configuration directory
+export HBASE_CONF_DIR=${hbase_conf_dir}
+
+# The maximum amount of heap to use, in MB. Default is 1000.
+# export HBASE_HEAPSIZE=1000
+
+# Extra Java runtime options.
+# Below are what we set by default. May only work with SUN JVM.
+# For more on why as well as other possible settings,
+# see http://wiki.apache.org/hadoop/PerformanceTuning
+export SERVER_GC_OPTS="-verbose:gc -XX:+PrintGCDetails
-Xlog:gc:${hbase_log_dir}/gc.log-`date +'%Y%m%d%H%M'`"
+# Uncomment below to enable java garbage collection logging.
+export HBASE_OPTS="$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails
-Xlog:gc:${hbase_log_dir}/gc-hbase.log"
+
+# Uncomment and adjust to enable JMX exporting
+# See jmxremote.password and jmxremote.access in $JRE_HOME/lib/management to
configure remote password access.
+# More details at:
http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
+#
+# export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
+# If you want to configure BucketCache, specify '-XX: MaxDirectMemorySize='
with proper direct memory size
+# export HBASE_THRIFT_OPTS="$HBASE_JMX_BASE
-Dcom.sun.management.jmxremote.port=10103"
+# export HBASE_ZOOKEEPER_OPTS="$HBASE_JMX_BASE
-Dcom.sun.management.jmxremote.port=10104"
+
+# File naming hosts on which HRegionServers will run.
$HBASE_HOME/conf/regionservers by default.
+export HBASE_REGIONSERVERS=${hbase_conf_dir}/regionservers
+
+# Extra ssh options. Empty by default.
+# export HBASE_SSH_OPTS="-o ConnectTimeout=1 -o SendEnv=HBASE_CONF_DIR"
+
+# Where log files are stored. $HBASE_HOME/logs by default.
+export HBASE_LOG_DIR=${hbase_log_dir}
+
+# A string representing this instance of hbase. $USER by default.
+# export HBASE_IDENT_STRING=$USER
+
+# The scheduling priority for daemon processes. See 'man nice'.
+# export HBASE_NICENESS=10
+
+# The directory where pid files are stored. /tmp by default.
+export HBASE_PID_DIR=${hbase_pid_dir}
+
+# Seconds to sleep between slave commands. Unset by default. This
+# can be useful in large clusters, where, e.g., slave rsyncs can
+# otherwise arrive faster than the master can service them.
+# export HBASE_SLAVE_SLEEP=0.1
+
+# Tell HBase whether it should manage it's own instance of Zookeeper or not.
+export HBASE_MANAGES_ZK=false
+
+# Set common JVM configuration
+export HBASE_OPTS="$HBASE_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=100
-XX:-ResizePLAB -XX:ErrorFile=${hbase_log_dir}/hs_err_pid%p.log
-Djava.io.tmpdir=${java_io_tmpdir}"
+export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xmx${master_heapsize}m
-XX:ParallelGCThreads=${parallel_gc_threads} $JDK_DEPENDED_OPTS "
+export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS
-Xms${regionserver_heapsize}m -Xmx${regionserver_heapsize}m
-XX:ParallelGCThreads=${parallel_gc_threads} $JDK_DEPENDED_OPTS"
+]]>
+ </value>
+ <attrs>
+ <type>longtext</type>
+ </attrs>
+ </property>
+</configuration>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-log4j.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-log4j.xml
new file mode 100644
index 00000000..5d74c740
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-log4j.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ https://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<configuration>
+ <property>
+ <name>hbase_log_maxfilesize</name>
+ <value>256</value>
+ <description>The maximum size of backup file before the log is
rotated</description>
+ <display-name>HBase Log: backup file size</display-name>
+ </property>
+ <property>
+ <name>hbase_log_maxbackupindex</name>
+ <value>20</value>
+ <description>The number of backup files</description>
+ <display-name>HBase Log: # of backup files</display-name>
+ </property>
+ <property>
+ <name>hbase_security_log_maxfilesize</name>
+ <value>256</value>
+ <description>The maximum size of security backup file before the log
is rotated</description>
+ <display-name>HBase Security Log: backup file size</display-name>
+ </property>
+ <property>
+ <name>hbase_security_log_maxbackupindex</name>
+ <value>20</value>
+ <description>The number of security backup files</description>
+ <display-name>HBase Security Log: # of backup files</display-name>
+ </property>
+ <property>
+ <name>content</name>
+ <display-name>hbase-log4j template</display-name>
+ <description>This is the freemarker template for log4j.properties
file</description>
+ <value><![CDATA[
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+# Define some default values that can be overridden by system properties
+hbase.root.logger=INFO,console
+hbase.security.logger=INFO,console
+hbase.log.dir=.
+hbase.log.file=hbase.log
+
+# Define the root logger to the system property "hbase.root.logger".
+<#noparse>
+log4j.rootLogger=${hbase.root.logger}
+</#noparse>
+
+# Logging Threshold
+log4j.threshold=ALL
+
+#
+# Daily Rolling File Appender
+#
+log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
+<#noparse>
+log4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}
+</#noparse>
+
+# Rollver at midnight
+log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
+
+# 30-day backup
+#log4j.appender.DRFA.MaxBackupIndex=30
+log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
+
+# Pattern format: Date LogLevel LoggerName LogMessage
+<#noparse>
+log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+</#noparse>
+
+# Rolling File Appender properties
+hbase.log.maxfilesize=${hbase_log_maxfilesize}MB
+hbase.log.maxbackupindex=${hbase_log_maxbackupindex}
+
+# Rolling File Appender
+log4j.appender.RFA=org.apache.log4j.RollingFileAppender
+<#noparse>
+log4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}
+</#noparse>
+
+log4j.appender.RFA.MaxFileSize=${hbase_log_maxfilesize}MB
+log4j.appender.RFA.MaxBackupIndex=${hbase_log_maxbackupindex}
+
+log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
+<#noparse>
+log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}: %m%n
+</#noparse>
+
+#
+# Security audit appender
+#
+hbase.security.log.file=SecurityAuth.audit
+hbase.security.log.maxfilesize=${hbase_security_log_maxfilesize}MB
+hbase.security.log.maxbackupindex=${hbase_security_log_maxbackupindex}
+log4j.appender.RFAS=org.apache.log4j.RollingFileAppender
+<#noparse>
+log4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}
+</#noparse>
+log4j.appender.RFAS.MaxFileSize=${hbase_security_log_maxfilesize}MB
+log4j.appender.RFAS.MaxBackupIndex=${hbase_security_log_maxbackupindex}
+log4j.appender.RFAS.layout=org.apache.log4j.PatternLayout
+<#noparse>
+log4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+log4j.category.SecurityLogger=${hbase.security.logger}
+</#noparse>
+log4j.additivity.SecurityLogger=false
+#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE
+
+#
+# Null Appender
+#
+log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
+
+#
+# console
+# Add "console" to rootlogger above if you want to use this
+#
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.target=System.err
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+<#noparse>
+log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c{2}:
%m%n
+</#noparse>
+
+# Custom Logging levels
+
+log4j.logger.org.apache.zookeeper=ERROR
+#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG
+log4j.logger.org.apache.hadoop.hbase=ERROR
+# Make these two classes INFO-level. Make them DEBUG to see more zk debug.
+log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO
+log4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO
+#log4j.logger.org.apache.hadoop.dfs=DEBUG
+# Set this class to log INFO only otherwise its OTT
+# Enable this to get detailed connection error/retry logging.
+#
log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE
+
+
+# Uncomment this line to enable tracing on _every_ RPC call (this can be a lot
of output)
+#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG
+
+# Uncomment the below if you want to remove logging of client region caching'
+# and scan of .META. messages
+#
log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO
+# log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO
+]]>
+ </value>
+ <attrs>
+ <type>longtext</type>
+ </attrs>
+ </property>
+</configuration>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-policy.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-policy.xml
new file mode 100644
index 00000000..0d906684
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-policy.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ https://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<configuration>
+ <property>
+ <name>security.client.protocol.acl</name>
+ <value>*</value>
+ <description>ACL for HRegionInterface protocol implementations (ie.
+ clients talking to HRegionServers)
+ The ACL is a comma-separated list of user and group names. The
user and
+ group list is separated by a blank. For e.g. "alice,bob
users,wheel".
+ A special value of "*" means all users are allowed.</description>
+ </property>
+ <property>
+ <name>security.admin.protocol.acl</name>
+ <value>*</value>
+ <description>ACL for HMasterInterface protocol implementation (ie.
+ clients talking to HMaster for admin operations).
+ The ACL is a comma-separated list of user and group names. The
user and
+ group list is separated by a blank. For e.g. "alice,bob
users,wheel".
+ A special value of "*" means all users are allowed.</description>
+ </property>
+ <property>
+ <name>security.masterregion.protocol.acl</name>
+ <value>*</value>
+ <description>ACL for HMasterRegionInterface protocol implementations
+ (for HRegionServers communicating with HMaster)
+ The ACL is a comma-separated list of user and group names. The
user and
+ group list is separated by a blank. For e.g. "alice,bob
users,wheel".
+ A special value of "*" means all users are allowed.</description>
+ </property>
+</configuration>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-site.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-site.xml
new file mode 100644
index 00000000..6914ccc4
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase-site.xml
@@ -0,0 +1,416 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ https://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<configuration>
+ <property>
+ <name>hbase.rootdir</name>
+ <display-name>HBase root directory</display-name>
+ <value>/hadoop/hbase</value>
+ <description>
+ The directory shared by region servers and into
+ which HBase persists. The URL should be 'fully-qualified'
+ to include the filesystem scheme. For example, to specify the
+ HDFS directory '/hbase' where the HDFS instance's namenode is
+ running at namenode.example.org on port 9000, set this value to:
+ hdfs://namenode.example.org:9000/hbase. By default HBase writes
+ into /tmp. Change this configuration else all data will be lost
+ on machine restart.
+ </description>
+ </property>
+ <property>
+ <name>hbase.cluster.distributed</name>
+ <value>true</value>
+ <description>
+ The mode the cluster will be in. Possible values are
+ false for standalone mode and true for distributed mode. If
+ false, startup will run all HBase and ZooKeeper daemons together
+ in the one JVM.
+ </description>
+ </property>
+ <property>
+ <name>hbase.master.port</name>
+ <value>16000</value>
+ <display-name>HBase Master Port</display-name>
+ <description>The port the HBase Master should bind to.</description>
+ </property>
+ <property>
+ <name>hbase.tmp.dir</name>
+ <value>/tmp/hbase</value>
+ <display-name>HBase tmp directory</display-name>
+ <description>
+ Temporary directory on the local filesystem.
+ Change this setting to point to a location more permanent
+ than '/tmp' (The '/tmp' directory is often cleared on
+ machine restart).
+ </description>
+ </property>
+ <property>
+ <name>hbase.local.dir</name>
+ <display-name>HBase Local directory</display-name>
+ <value>${hbase.tmp.dir}/local</value>
+ <description>Directory on the local filesystem to be used as a local
storage</description>
+ </property>
+ <property>
+ <name>hbase.master.info.bindAddress</name>
+ <value>0.0.0.0</value>
+ <description>The bind address for the HBase Master web
UI.</description>
+ </property>
+ <property>
+ <name>hbase.master.info.port</name>
+ <value>16010</value>
+ <description>The port for the HBase Master web UI.</description>
+ </property>
+ <property>
+ <name>hbase.regionserver.info.port</name>
+ <value>16030</value>
+ <description>The port for the HBase RegionServer web UI.</description>
+ </property>
+ <property>
+ <name>hbase.regionserver.handler.count</name>
+ <value>30</value>
+ <display-name>Number of Handlers per RegionServer</display-name>
+ <description>
+ Count of RPC Listener instances spun up on RegionServers.
+ Same property is used by the Master for count of master handlers.
+ </description>
+ </property>
+ <property>
+ <name>hbase.hregion.majorcompaction</name>
+ <value>604800000</value>
+ <description>
+ Time between major compactions, expressed in milliseconds. Set to
0 to disable
+ time-based automatic major compactions. User-requested and
size-based major compactions will
+ still run. This value is multiplied by
hbase.hregion.majorcompaction.jitter to cause
+ compaction to start at a somewhat-random time during a given
window of time. The default value
+ is 7 days, expressed in milliseconds. If major compactions are
causing disruption in your
+ environment, you can configure them to run at off-peak times for
your deployment, or disable
+ time-based major compactions by setting this parameter to 0, and
run major compactions in a
+ cron job or by another external mechanism.
+ </description>
+ <display-name>Major Compaction Interval</display-name>
+ </property>
+ <property>
+ <name>hbase.hregion.memstore.block.multiplier</name>
+ <value>4</value>
+ <description>
+ Block updates if memstore has
hbase.hregion.memstore.block.multiplier
+ times hbase.hregion.memstore.flush.size bytes. Useful preventing
+ runaway memstore during spikes in update traffic. Without an
+ upper-bound, memstore fills such that when it flushes the
+ resultant flush files take a long time to compact or split, or
+ worse, we OOME.
+ </description>
+ <display-name>HBase Region Block Multiplier</display-name>
+ </property>
+ <property>
+ <name>hbase.hregion.memstore.flush.size</name>
+ <value>134217728</value>
+ <description>
+ The size of an individual memstore. Each column family within each
region is allocated its own memstore.
+ </description>
+ <display-name>Memstore Flush Size</display-name>
+ </property>
+ <property>
+ <name>hbase.hregion.memstore.mslab.enabled</name>
+ <value>true</value>
+ <description>
+ Enables the MemStore-Local Allocation Buffer,
+ a feature which works to prevent heap fragmentation under
+ heavy write loads. This can reduce the frequency of stop-the-world
+ GC pauses on large heaps.
+ </description>
+ </property>
+ <property>
+ <name>hbase.hregion.max.filesize</name>
+ <value>10737418240</value>
+ <description>
+ Maximum HFile size. If the sum of the sizes of a region's HFiles
has grown to exceed this
+ value, the region is split in two.
+ </description>
+ <display-name>Maximum Region File Size</display-name>
+ </property>
+ <property>
+ <name>hbase.client.scanner.caching</name>
+ <value>100</value>
+ <description>
+ Number of rows that will be fetched when calling next
+ on a scanner if it is not served from (local, client) memory.
Higher
+ caching values will enable faster scanners but will eat up more
memory
+ and some calls of next may take longer and longer times when the
cache is empty.
+ Do not set this value such that the time between invocations is
greater
+ than the scanner timeout; i.e. hbase.regionserver.lease.period
+ </description>
+ <display-name>Number of Fetched Rows when Scanning from
Disk</display-name>
+ </property>
+ <property>
+ <name>zookeeper.session.timeout</name>
+ <value>90000</value>
+ <description>
+ ZooKeeper session timeout in milliseconds. It is used in two
different ways.
+ First, this value is used in the ZK client that HBase uses to
connect to the ensemble.
+ It is also used by HBase when it starts a ZK server and it is
passed as the 'maxSessionTimeout'. See
+
http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions.
+ For example, if a HBase region server connects to a ZK ensemble
that's also managed by HBase, then the
+ session timeout will be the one specified by this configuration.
But, a region server that connects
+ to an ensemble managed with a different configuration will be
subjected that ensemble's maxSessionTimeout. So,
+ even though HBase might propose using 90 seconds, the ensemble can
have a max timeout lower than this and
+ it will take precedence.
+ </description>
+ <display-name>Zookeeper Session Timeout</display-name>
+ </property>
+ <property>
+ <name>hbase.client.keyvalue.maxsize</name>
+ <value>1048576</value>
+ <description>
+ Specifies the combined maximum allowed size of a KeyValue
+ instance. This is to set an upper boundary for a single entry
saved in a
+ storage file. Since they cannot be split it helps avoiding that a
region
+ cannot be split any further because the data is too large. It
seems wise
+ to set this to a fraction of the maximum region size. Setting it
to zero
+ or less disables the check.
+ </description>
+ <display-name>Maximum Record Size</display-name>
+ </property>
+ <property>
+ <name>hbase.hstore.compactionThreshold</name>
+ <value>3</value>
+ <description>
+ The maximum number of StoreFiles which will be selected for a
single minor
+ compaction, regardless of the number of eligible StoreFiles.
Effectively, the value of
+ hbase.hstore.compaction.max controls the length of time it takes a
single compaction to
+ complete. Setting it larger means that more StoreFiles are
included in a compaction. For most
+ cases, the default value is appropriate.
+ </description>
+ <display-name>Maximum Store Files before Minor
Compaction</display-name>
+ </property>
+ <property>
+ <name>hbase.hstore.blockingStoreFiles</name>
+ <display-name>hstore blocking storefiles</display-name>
+ <value>100</value>
+ <description>
+ If more than this number of StoreFiles in any one Store
+ (one StoreFile is written per flush of MemStore) then updates are
+ blocked for this HRegion until a compaction is completed, or
+ until hbase.hstore.blockingWaitTime has been exceeded.
+ </description>
+ </property>
+ <property>
+ <name>hfile.block.cache.size</name>
+ <value>0.40</value>
+ <description>Percentage of RegionServer memory to allocate to read
buffers.</description>
+ <display-name>% of RegionServer Allocated to Read
Buffers</display-name>
+ </property>
+
+ <!-- Additional configuration specific to HBase security -->
+ <property>
+ <name>hbase.superuser</name>
+ <value>hbase</value>
+ <description>
+ List of users or groups (comma-separated), who are allowed
+ full privileges, regardless of stored ACLs, across the cluster.
+ Only used when HBase security is enabled.
+ </description>
+ </property>
+ <property>
+ <name>hbase.security.authentication</name>
+ <value>simple</value>
+ <description>
+ Select Simple or Kerberos authentication. Note: Kerberos must be
set up before the Kerberos option will take effect.
+ </description>
+ <display-name>Enable Authentication</display-name>
+ </property>
+ <property>
+ <name>hbase.security.authorization</name>
+ <value>false</value>
+ <description>Set Authorization Method.</description>
+ <display-name>Enable Authorization</display-name>
+ </property>
+ <property>
+ <name>hbase.coprocessor.region.classes</name>
+
<value>org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint</value>
+ <description>
+ A comma-separated list of Coprocessors that are loaded by
+ default on all tables. For any override coprocessor method, these
classes
+ will be called in order. After implementing your own Coprocessor,
just put
+ it in HBase's classpath and add the fully qualified class name
here.
+ A coprocessor can also be loaded on demand by setting
HTableDescriptor.
+ </description>
+ </property>
+ <property>
+ <name>hbase.coprocessor.master.classes</name>
+ <value/>
+ <description>
+ A comma-separated list of
+ org.apache.hadoop.hbase.coprocessor.MasterObserver coprocessors
that are
+ loaded by default on the active HMaster process. For any
implemented
+ coprocessor methods, the listed classes will be called in order.
After
+ implementing your own MasterObserver, just put it in HBase's
classpath
+ and add the fully qualified class name here.
+ </description>
+ </property>
+ <property>
+ <name>zookeeper.znode.parent</name>
+ <display-name>ZooKeeper Znode Parent</display-name>
+ <value>/hbase-unsecure</value>
+ <description>
+ Root ZNode for HBase in ZooKeeper. All of HBase's ZooKeeper
+ files that are configured with a relative path will go under this
node.
+ By default, all of HBase's ZooKeeper file path are configured with
a
+ relative path, so they will all go under this directory unless
changed.
+ </description>
+ </property>
+ <property>
+ <name>hbase.client.retries.number</name>
+ <value>35</value>
+ <description>
+ Maximum retries. Used as maximum for all retryable
+ operations such as the getting of a cell's value, starting a row
update,
+ etc. Retry interval is a rough function based on
hbase.client.pause. At
+ first we retry at this interval but then with backoff, we pretty
quickly reach
+ retrying every ten seconds. See HConstants#RETRY_BACKOFF for how
the backup
+ ramps up. Change this setting and hbase.client.pause to suit your
workload.
+ </description>
+ <display-name>Maximum Client Retries</display-name>
+ </property>
+ <property>
+ <name>hbase.rpc.timeout</name>
+ <value>90000</value>
+ <description>
+ This is for the RPC layer to define how long HBase client
applications
+ take for a remote call to time out. It uses pings to check
connections
+ but will eventually throw a TimeoutException.
+ </description>
+ <display-name>HBase RPC Timeout</display-name>
+ </property>
+ <property>
+ <name>hbase.defaults.for.version.skip</name>
+ <value>true</value>
+ <description>Disables version verification.</description>
+ </property>
+ <property>
+ <name>dfs.domain.socket.path</name>
+ <value>/var/run/hadoop/dn._PORT</value>
+ <description>Path to domain socket.</description>
+ </property>
+ <property>
+ <name>hbase.rpc.protection</name>
+ <value>authentication</value>
+ </property>
+ <property>
+ <name>hbase.hregion.majorcompaction.jitter</name>
+ <value>0.50</value>
+ <description>
+ A multiplier applied to hbase.hregion.majorcompaction to cause
compaction to occur
+ a given amount of time either side of
hbase.hregion.majorcompaction. The smaller the number,
+ the closer the compactions will happen to the
hbase.hregion.majorcompaction
+ interval.
+ </description>
+ </property>
+ <property>
+ <name>hbase.bucketcache.ioengine</name>
+ <value/>
+ <description>
+ Where to store the contents of the bucketcache. One of: onheap,
+ offheap, or file. If a file, set it to file:PATH_TO_FILE.
+ </description>
+ </property>
+ <property>
+ <name>hbase.bucketcache.size</name>
+ <value/>
+ <description>The size of the buckets for the bucketcache if you only
use a single size.</description>
+ </property>
+ <property>
+ <name>hbase.bucketcache.percentage.in.combinedcache</name>
+ <value/>
+ <description>Value to be set between 0.0 and 1.0</description>
+ </property>
+ <property>
+ <name>hbase.regionserver.wal.codec</name>
+ <display-name>RegionServer WAL Codec</display-name>
+ <value>org.apache.hadoop.hbase.regionserver.wal.WALCellCodec</value>
+ </property>
+ <property>
+ <name>hbase.region.server.rpc.scheduler.factory.class</name>
+ <value/>
+ </property>
+ <property>
+ <name>hbase.rpc.controllerfactory.class</name>
+ <value/>
+ </property>
+ <property>
+ <name>hbase.coprocessor.regionserver.classes</name>
+ <value/>
+ </property>
+ <property>
+ <name>hbase.hstore.compaction.max</name>
+ <value>10</value>
+ <description>
+ The maximum number of StoreFiles which will be selected for a
single minor
+ compaction, regardless of the number of eligible StoreFiles.
Effectively, the value of
+ hbase.hstore.compaction.max controls the length of time it takes a
single compaction to
+ complete. Setting it larger means that more StoreFiles are
included in a compaction. For most
+ cases, the default value is appropriate.
+ </description>
+ <display-name>Maximum Files for Compaction</display-name>
+ </property>
+ <property>
+ <name>hbase.regionserver.global.memstore.size</name>
+ <value>0.4</value>
+ <description>
+ Percentage of RegionServer memory to allocate to write buffers.
+ Each column family within each region is allocated a smaller pool
(the memstore) within this shared write pool.
+ If this buffer is full, updates are blocked and data is flushed
from memstores until a global low watermark
+ (hbase.regionserver.global.memstore.size.lower.limit) is reached.
+ </description>
+ <display-name>% of RegionServer Allocated to Write
Buffers</display-name>
+ </property>
+ <property>
+ <name>hbase.regionserver.port</name>
+ <value>16020</value>
+ <description>The port the HBase RegionServer binds to.</description>
+ </property>
+ <property>
+ <name>hbase.master.ui.readonly</name>
+ <value>false</value>
+ </property>
+ <property>
+ <name>zookeeper.recovery.retry</name>
+ <value>6</value>
+ </property>
+ <property>
+ <name>hbase.regionserver.executor.openregion.threads</name>
+ <value>20</value>
+ <description>The number of threads region server uses to open
regions</description>
+ </property>
+ <property>
+ <name>hbase.master.namespace.init.timeout</name>
+ <value>2400000</value>
+ <description>
+ The number of milliseconds master waits for hbase:namespace table
to be initialized
+ </description>
+ </property>
+ <property>
+ <name>hbase.master.wait.on.regionservers.timeout</name>
+ <value>30000</value>
+ <description>
+ The number of milliseconds master waits for region servers to
report in
+ </description>
+ </property>
+</configuration>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase.conf.xml
similarity index 81%
copy from
bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
copy to
bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase.conf.xml
index 427fd926..21925ff3 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/hbase.conf.xml
@@ -20,19 +20,19 @@
<configuration>
<property>
- <name>hadoop_user_nofile_limit</name>
+ <name>hbase_user_nofile_limit</name>
<value>128000</value>
- <description>Max open files limit setting for Hadoop
user.</description>
+ <description>Max open files limit setting for HBase user.</description>
</property>
<property>
- <name>hadoop_user_nproc_limit</name>
+ <name>hbase_user_nproc_limit</name>
<value>65536</value>
- <description>Max number of processes limit setting for Hadoop
user.</description>
+ <description>Max number of processes limit setting for HBase
user.</description>
</property>
<property>
<name>content</name>
- <display-name>hadoop.conf template</display-name>
- <description>This is the freemarker template for hadoop
file</description>
+ <display-name>hbase.conf template</display-name>
+ <description>This is the freemarker template for HBase
file</description>
<value><![CDATA[
#
# Licensed to the Apache Software Foundation (ASF) under one
@@ -52,8 +52,8 @@
# limitations under the License.
#
-${hadoop_user} - nofile ${hdfs_user_nofile_limit}
-${hadoop_group} - nproc ${hdfs_user_nproc_limit}
+${hbase_user} - nofile ${hbase_user_nofile_limit}
+${hbase_group} - nproc ${hbase_user_nproc_limit}
]]>
</value>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/regionservers.xml
similarity index 73%
copy from
bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
copy to
bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/regionservers.xml
index 427fd926..31876e45 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hadoop/configuration/hadoop.conf.xml
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/configuration/regionservers.xml
@@ -19,20 +19,10 @@
-->
<configuration>
- <property>
- <name>hadoop_user_nofile_limit</name>
- <value>128000</value>
- <description>Max open files limit setting for Hadoop
user.</description>
- </property>
- <property>
- <name>hadoop_user_nproc_limit</name>
- <value>65536</value>
- <description>Max number of processes limit setting for Hadoop
user.</description>
- </property>
<property>
<name>content</name>
- <display-name>hadoop.conf template</display-name>
- <description>This is the freemarker template for hadoop
file</description>
+ <display-name>hbase regionservers template</display-name>
+ <description>This is the freemarker template for hbase
file</description>
<value><![CDATA[
#
# Licensed to the Apache Software Foundation (ASF) under one
@@ -52,8 +42,11 @@
# limitations under the License.
#
-${hadoop_user} - nofile ${hdfs_user_nofile_limit}
-${hadoop_group} - nproc ${hdfs_user_nproc_limit}
+<#if regionserver_hosts?? >
+<#list regionserver_hosts as host>
+${host}
+</#list>
+</#if>
]]>
</value>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/metainfo.xml
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/metainfo.xml
new file mode 100644
index 00000000..3c03ab67
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/metainfo.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ https://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<metainfo>
+ <service>
+ <name>hbase</name>
+ <display-name>HBase</display-name>
+ <desc>Apache HBase is the Hadoop database, a distributed, scalable,
big data store.</desc>
+ <version>2.4.17-1</version>
+ <user>hbase</user>
+
+ <components>
+ <component>
+ <name>hbase_master</name>
+ <display-name>HMaster</display-name>
+ <category>server</category>
+ <cardinality>1+</cardinality>
+ <quick-link>
+ <display-name>HBase Master UI</display-name>
+
<http-port-property>hbase.master.info.port</http-port-property>
+ <http-port-default>16010</http-port-default>
+
<https-port-property>hbase.master.info.port</https-port-property>
+ <https-port-default>16010</https-port-default>
+ </quick-link>
+ </component>
+ <component>
+ <name>hbase_regionserver</name>
+ <display-name>HRegionServer</display-name>
+ <category>server</category>
+ <cardinality>1+</cardinality>
+ <quick-link>
+ <display-name>HBase RegionServer UI</display-name>
+
<http-port-property>hbase.regionserver.info.port</http-port-property>
+ <http-port-default>16030</http-port-default>
+
<https-port-property>hbase.regionserver.info.port</https-port-property>
+ <https-port-default>16030</https-port-default>
+ </quick-link>
+ </component>
+ <component>
+ <name>hbase_client</name>
+ <display-name>HBase Client</display-name>
+ <category>client</category>
+ <cardinality>1+</cardinality>
+ </component>
+ </components>
+
+ <package-specifics>
+ <package-specific>
+ <architectures>
+ <arch>x86_64</arch>
+ <arch>aarch64</arch>
+ </architectures>
+ <packages>
+ <package>
+ <name>hbase-2.4.17-1.tar.gz</name>
+
<checksum>SHA-256:f74face0d18f75adc8dd084bae343e75b0fd70fea45c4eef907a2216b32d8792</checksum>
+ </package>
+ </packages>
+ </package-specific>
+ </package-specifics>
+
+ <required-services>
+ <service>zookeeper</service>
+ <service>hadoop</service>
+ </required-services>
+
+ </service>
+</metainfo>
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/order.json
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/order.json
new file mode 100644
index 00000000..c293a7bb
--- /dev/null
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/hbase/order.json
@@ -0,0 +1,13 @@
+{
+ "HBASE_REGIONSERVER-START": [
+ "HBASE_MASTER-START"
+ ],
+ "HBASE_MASTER-STOP": [
+ "HBASE_REGIONSERVER-STOP"
+ ],
+ "HBASE_MASTER-START": [
+ "NAMENODE-START",
+ "DATANODE-START",
+ "ZOOKEEPER_SERVER-START"
+ ]
+}
\ No newline at end of file
diff --git
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/order.json
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/order.json
index 0da47175..65339933 100644
---
a/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/order.json
+++
b/bigtop-manager-server/src/main/resources/stacks/bigtop/3.3.0/services/zookeeper/order.json
@@ -1,5 +1,6 @@
{
"ZOOKEEPER_SERVER-STOP": [
- "KAFKA_BROKER-STOP"
+ "KAFKA_BROKER-STOP",
+ "HBASE_MASTER-STOP"
]
}
\ No newline at end of file
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseClientScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseClientScript.java
new file mode 100644
index 00000000..c8a37d02
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseClientScript.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.bigtop.manager.stack.bigtop.v3_3_0.hbase;
+
+import org.apache.bigtop.manager.common.shell.ShellResult;
+import org.apache.bigtop.manager.stack.core.spi.param.Params;
+import org.apache.bigtop.manager.stack.core.spi.script.AbstractClientScript;
+import org.apache.bigtop.manager.stack.core.spi.script.Script;
+
+import com.google.auto.service.AutoService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Properties;
+
+@Slf4j
+@AutoService(Script.class)
+public class HBaseClientScript extends AbstractClientScript {
+
+ @Override
+ public ShellResult add(Params params) {
+ Properties properties = new Properties();
+ properties.setProperty(PROPERTY_KEY_SKIP_LEVELS, "1");
+
+ return super.add(params, properties);
+ }
+
+ @Override
+ public ShellResult configure(Params params) {
+ return HBaseSetup.configure(params);
+ }
+
+ @Override
+ public String getComponentName() {
+ return "hbase_client";
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseParams.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseParams.java
new file mode 100644
index 00000000..630cdd01
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseParams.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.bigtop.manager.stack.bigtop.v3_3_0.hbase;
+
+import org.apache.bigtop.manager.common.message.entity.payload.CommandPayload;
+import org.apache.bigtop.manager.common.utils.Environments;
+import org.apache.bigtop.manager.stack.bigtop.param.BigtopParams;
+import org.apache.bigtop.manager.stack.core.annotations.GlobalParams;
+import org.apache.bigtop.manager.stack.core.spi.param.Params;
+import org.apache.bigtop.manager.stack.core.utils.LocalSettings;
+
+import com.google.auto.service.AutoService;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+import java.util.Map;
+
+@Getter
+@Slf4j
+@AutoService(Params.class)
+@NoArgsConstructor
+public class HBaseParams extends BigtopParams {
+
+ private String hbaseLogDir = "/var/log/hbase";
+ private String hbasePidDir = "/var/run/hbase";
+
+ private String hbaseRootDir;
+ private String hbaseMasterPidFile;
+ private String hbaseRegionServerPidFile;
+
+ private String hbaseEnvContent;
+ private String hbaseLog4jContent;
+
+ public HBaseParams(CommandPayload commandPayload) {
+ super(commandPayload);
+ globalParamsMap.put("java_home", Environments.getJavaHome());
+ globalParamsMap.put("hbase_home", serviceHome());
+ globalParamsMap.put("hbase_conf_dir", confDir());
+ globalParamsMap.put("security_enabled", false);
+ globalParamsMap.put("hbase_user", user());
+ globalParamsMap.put("hbase_group", group());
+ globalParamsMap.put("regionserver_hosts",
LocalSettings.hosts("hbase_regionserver"));
+
+ hbaseMasterPidFile = hbasePidDir + "/hbase-" + user() + "-master.pid";
+ hbaseRegionServerPidFile = hbasePidDir + "/hbase-" + user() +
"-regionserver.pid";
+ }
+
+ public String hbaseLimits() {
+ Map<String, Object> hbaseConf =
LocalSettings.configurations(getServiceName(), "hbase.conf");
+ return (String) hbaseConf.get("content");
+ }
+
+ public String regionservers() {
+ Map<String, Object> hdfsConf =
LocalSettings.configurations(getServiceName(), "regionservers");
+ return (String) hdfsConf.get("content");
+ }
+
+ @GlobalParams
+ public Map<String, Object> hbaseSite() {
+ Map<String, Object> configurations =
LocalSettings.configurations(getServiceName(), "hbase-site");
+ List<String> zookeeperQuorum = LocalSettings.hosts("zookeeper_server");
+ Map<String, Object> zooCfg = LocalSettings.configurations("zookeeper",
"zoo.cfg");
+
+ // Auto generate properties for hbase-site.xml
+ configurations.put("hbase.zookeeper.property.clientPort",
zooCfg.get("clientPort"));
+ configurations.put("hbase.zookeeper.quorum", String.join(",",
zookeeperQuorum));
+
+ hbaseRootDir = (String) configurations.get("hbase.rootdir");
+ return configurations;
+ }
+
+ @GlobalParams
+ public Map<String, Object> hbaseEnv() {
+ Map<String, Object> hbaseEnv =
LocalSettings.configurations(getServiceName(), "hbase-env");
+ hbasePidDir = (String) hbaseEnv.get("hbase_pid_dir");
+ hbaseLogDir = (String) hbaseEnv.get("hbase_log_dir");
+ hbaseEnvContent = (String) hbaseEnv.get("content");
+ return hbaseEnv;
+ }
+
+ @GlobalParams
+ public Map<String, Object> hbaseLog4j() {
+ Map<String, Object> configurations =
LocalSettings.configurations(getServiceName(), "hbase-log4j");
+ hbaseLog4jContent = (String) configurations.get("content");
+ return configurations;
+ }
+
+ @GlobalParams
+ public Map<String, Object> hbasePolicy() {
+ return LocalSettings.configurations(getServiceName(), "hbase-policy");
+ }
+
+ @Override
+ public String getServiceName() {
+ return "hbase";
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseSetup.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseSetup.java
new file mode 100644
index 00000000..e3bc0b7d
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HBaseSetup.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.bigtop.manager.stack.bigtop.v3_3_0.hbase;
+
+import org.apache.bigtop.manager.common.constants.Constants;
+import org.apache.bigtop.manager.common.shell.ShellResult;
+import org.apache.bigtop.manager.stack.bigtop.v3_3_0.hadoop.HadoopParams;
+import org.apache.bigtop.manager.stack.core.enums.ConfigType;
+import org.apache.bigtop.manager.stack.core.spi.param.Params;
+import org.apache.bigtop.manager.stack.core.utils.linux.LinuxFileUtils;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+
+import java.text.MessageFormat;
+
+import static
org.apache.bigtop.manager.common.constants.Constants.PERMISSION_755;
+
+@Slf4j
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class HBaseSetup {
+
+ public static ShellResult configure(Params params) {
+ log.info("Configuring HBase");
+ HBaseParams hbaseParams = (HBaseParams) params;
+
+ String confDir = hbaseParams.confDir();
+ String hbaseUser = hbaseParams.user();
+ String hbaseGroup = hbaseParams.group();
+
+ LinuxFileUtils.createDirectories(hbaseParams.getHbaseLogDir(),
hbaseUser, hbaseGroup, PERMISSION_755, true);
+ LinuxFileUtils.createDirectories(hbaseParams.getHbasePidDir(),
hbaseUser, hbaseGroup, PERMISSION_755, true);
+ LinuxFileUtils.createDirectories(hbaseParams.getHbaseRootDir(),
hbaseUser, hbaseGroup, PERMISSION_755, true);
+
+ LinuxFileUtils.toFileByTemplate(
+ hbaseParams.hbaseLimits(),
+ MessageFormat.format("{0}/hbase.conf",
HadoopParams.LIMITS_CONF_DIR),
+ Constants.ROOT_USER,
+ Constants.ROOT_USER,
+ Constants.PERMISSION_644,
+ hbaseParams.getGlobalParamsMap());
+
+ LinuxFileUtils.toFileByTemplate(
+ hbaseParams.getHbaseEnvContent(),
+ MessageFormat.format("{0}/hbase-env.sh", confDir),
+ hbaseUser,
+ hbaseGroup,
+ Constants.PERMISSION_644,
+ hbaseParams.getGlobalParamsMap());
+
+ LinuxFileUtils.toFile(
+ ConfigType.XML,
+ MessageFormat.format("{0}/hbase-site.xml", confDir),
+ hbaseUser,
+ hbaseGroup,
+ Constants.PERMISSION_644,
+ hbaseParams.hbaseSite());
+
+ LinuxFileUtils.toFile(
+ ConfigType.XML,
+ MessageFormat.format("{0}/hbase-policy.xml", confDir),
+ hbaseUser,
+ hbaseGroup,
+ Constants.PERMISSION_644,
+ hbaseParams.hbasePolicy());
+
+ LinuxFileUtils.toFileByTemplate(
+ hbaseParams.getHbaseLog4jContent(),
+ MessageFormat.format("{0}/log4j.properties", confDir),
+ hbaseUser,
+ hbaseGroup,
+ Constants.PERMISSION_644,
+ hbaseParams.getGlobalParamsMap());
+
+ LinuxFileUtils.toFileByTemplate(
+ hbaseParams.regionservers(),
+ MessageFormat.format("{0}/regionservers", confDir),
+ hbaseUser,
+ hbaseGroup,
+ Constants.PERMISSION_644,
+ hbaseParams.getGlobalParamsMap());
+
+ log.info("Successfully configured HBase");
+ return ShellResult.success();
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HMasterScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HMasterScript.java
new file mode 100644
index 00000000..0954ca93
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HMasterScript.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.bigtop.manager.stack.bigtop.v3_3_0.hbase;
+
+import org.apache.bigtop.manager.common.shell.ShellResult;
+import org.apache.bigtop.manager.stack.core.exception.StackException;
+import org.apache.bigtop.manager.stack.core.spi.param.Params;
+import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
+import org.apache.bigtop.manager.stack.core.spi.script.Script;
+import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
+
+import com.google.auto.service.AutoService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.Properties;
+
+@Slf4j
+@AutoService(Script.class)
+public class HMasterScript extends AbstractServerScript {
+
+ @Override
+ public ShellResult add(Params params) {
+ Properties properties = new Properties();
+ properties.setProperty(PROPERTY_KEY_SKIP_LEVELS, "1");
+
+ return super.add(params, properties);
+ }
+
+ @Override
+ public ShellResult configure(Params params) {
+ return HBaseSetup.configure(params);
+ }
+
+ @Override
+ public ShellResult start(Params params) {
+ configure(params);
+ HBaseParams hbaseParams = (HBaseParams) params;
+
+ String cmd = MessageFormat.format(
+ "{0}/bin/hbase-daemon.sh --config {1} start master",
hbaseParams.serviceHome(), hbaseParams.confDir());
+ try {
+ return LinuxOSUtils.sudoExecCmd(cmd, hbaseParams.user());
+ } catch (IOException e) {
+ throw new StackException(e);
+ }
+ }
+
+ @Override
+ public ShellResult stop(Params params) {
+ HBaseParams hbaseParams = (HBaseParams) params;
+ String cmd = MessageFormat.format(
+ "{0}/bin/hbase-daemon.sh --config {1} stop master",
hbaseParams.serviceHome(), hbaseParams.confDir());
+ try {
+ return LinuxOSUtils.sudoExecCmd(cmd, hbaseParams.user());
+ } catch (IOException e) {
+ throw new StackException(e);
+ }
+ }
+
+ @Override
+ public ShellResult status(Params params) {
+ HBaseParams hbaseParams = (HBaseParams) params;
+ return LinuxOSUtils.checkProcess(hbaseParams.getHbaseMasterPidFile());
+ }
+
+ @Override
+ public String getComponentName() {
+ return "hbase_master";
+ }
+}
diff --git
a/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HRegionServerScript.java
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HRegionServerScript.java
new file mode 100644
index 00000000..c8e5e918
--- /dev/null
+++
b/bigtop-manager-stack/bigtop-manager-stack-bigtop/src/main/java/org/apache/bigtop/manager/stack/bigtop/v3_3_0/hbase/HRegionServerScript.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.bigtop.manager.stack.bigtop.v3_3_0.hbase;
+
+import org.apache.bigtop.manager.common.shell.ShellResult;
+import org.apache.bigtop.manager.stack.core.exception.StackException;
+import org.apache.bigtop.manager.stack.core.spi.param.Params;
+import org.apache.bigtop.manager.stack.core.spi.script.AbstractServerScript;
+import org.apache.bigtop.manager.stack.core.spi.script.Script;
+import org.apache.bigtop.manager.stack.core.utils.linux.LinuxOSUtils;
+
+import com.google.auto.service.AutoService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.Properties;
+
+@Slf4j
+@AutoService(Script.class)
+public class HRegionServerScript extends AbstractServerScript {
+
+ @Override
+ public ShellResult add(Params params) {
+ Properties properties = new Properties();
+ properties.setProperty(PROPERTY_KEY_SKIP_LEVELS, "1");
+
+ return super.add(params, properties);
+ }
+
+ @Override
+ public ShellResult configure(Params params) {
+ return HBaseSetup.configure(params);
+ }
+
+ @Override
+ public ShellResult start(Params params) {
+ configure(params);
+ HBaseParams hbaseParams = (HBaseParams) params;
+
+ String cmd = MessageFormat.format(
+ "{0}/bin/hbase-daemon.sh --config {1} start regionserver",
+ hbaseParams.serviceHome(), hbaseParams.confDir());
+ try {
+ return LinuxOSUtils.sudoExecCmd(cmd, hbaseParams.user());
+ } catch (IOException e) {
+ throw new StackException(e);
+ }
+ }
+
+ @Override
+ public ShellResult stop(Params params) {
+ HBaseParams hbaseParams = (HBaseParams) params;
+ String cmd = MessageFormat.format(
+ "{0}/bin/hbase-daemon.sh --config {1} stop regionserver",
+ hbaseParams.serviceHome(), hbaseParams.confDir());
+ try {
+ return LinuxOSUtils.sudoExecCmd(cmd, hbaseParams.user());
+ } catch (IOException e) {
+ throw new StackException(e);
+ }
+ }
+
+ @Override
+ public ShellResult status(Params params) {
+ HBaseParams hbaseParams = (HBaseParams) params;
+ return
LinuxOSUtils.checkProcess(hbaseParams.getHbaseRegionServerPidFile());
+ }
+
+ @Override
+ public String getComponentName() {
+ return "hbase_regionserver";
+ }
+}