AMBARI-25668 Integrate the Apache released HBase as back store of Ambari Metrics (#3305)

Integrate the Apache released HBase as back store of Ambari Metrics - embedded mode
Co-authored-by: Mariann Varga-Vakula <mariannvakula@mariannvakula-MBP16.local>
Co-authored-by: Mariann Vakula <mariann.vakula@cloudera.com>
diff --git a/ambari-metrics/ambari-metrics-assembly/pom.xml b/ambari-metrics/ambari-metrics-assembly/pom.xml
index d25b292..78d3362 100644
--- a/ambari-metrics/ambari-metrics-assembly/pom.xml
+++ b/ambari-metrics/ambari-metrics-assembly/pom.xml
@@ -266,11 +266,53 @@
                             <exclude>lib/*tests.jar</exclude>
                             <exclude>lib/findbugs*.jar</exclude>
                             <exclude>lib/jdk.tools*.jar</exclude>
+                            <!-- hadoop, guava and commons-beanutils are excluded because they will be replaced with different versions -->
+                            <exclude>lib/hadoop*.jar</exclude>
+                            <exclude>lib/guava-11.0.2.jar</exclude>
+                            <exclude>lib/commons-beanutils-core-1.8.0.jar</exclude>
                           </excludes>
                         </source>
                       </sources>
                     </mapping>
                     <mapping>
+                      <!--embedded applications-->
+                      <directory>/usr/lib/ams-hbase/lib/</directory>
+                      <directoryIncluded>false</directoryIncluded>
+                      <sources>
+                        <source>
+                          <location>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/hdfs</location>
+                          <includes>
+                            <include>hadoop-hdfs-${hadoop.version}.jar</include>
+                            <include>hadoop-hdfs-client-${hadoop.version}.jar</include>
+                          </includes>
+                        </source>
+                        <source>
+                          <location>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/common/lib</location>
+                          <includes>
+                            <include>commons-beanutils-*.jar</include>
+                          </includes>
+                        </source>
+                        <source>
+                          <location>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/tools/lib</location>
+                          <includes>
+                            <include>hadoop-aws*.jar</include>
+                            <include>hadoop-distcp-*.jar</include>
+                          </includes>
+                        </source>
+                        <source>
+                          <location>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/mapreduce</location>
+                          <includes>
+                              <include>hadoop-mapreduce-client-app-${hadoop.version}.jar</include>
+                              <include>hadoop-mapreduce-client-common-${hadoop.version}.jar</include>
+                              <include>hadoop-mapreduce-client-core-${hadoop.version}.jar</include>
+                              <include>hadoop-mapreduce-client-hs-${hadoop.version}.jar</include>
+                              <include>hadoop-mapreduce-client-jobclient-${hadoop.version}.jar</include>
+                              <include>hadoop-mapreduce-client-shuffle-${hadoop.version}.jar</include>
+                          </includes>
+                        </source>
+                      </sources>
+                    </mapping>
+                    <mapping>
                       <directory>/usr/lib/ams-hbase/bin</directory>
                       <filemode>755</filemode>
                       <sources>
@@ -287,6 +329,25 @@
                           <includes>
                             <include>phoenix*.jar</include>
                             <include>antlr*.jar</include>
+                            <include>re2j*.jar</include>
+                            <include>failureaccess*.jar</include>
+                            <include>guava-28*.jar</include>
+                            <include>stax2-api*.jar</include>
+                            <include>woodstox-core*.jar</include>
+                            <include>hadoop-annotations-${hadoop.version}.jar</include>
+                            <include>hadoop-auth-${hadoop.version}.jar</include>
+                            <include>hadoop-common-${hadoop.version}.jar</include>
+                            <include>commons-configuration2-*.jar</include>
+                            <include>hadoop-yarn-api-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-client-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-common-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-registry-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-server-applicationhistoryservice-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-server-common-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-server-nodemanager-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-server-resourcemanager-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-server-timelineservice-${hadoop.version}.jar</include>
+                            <include>hadoop-yarn-server-web-proxy-${hadoop.version}.jar</include>
                           </includes>
                         </source>
                       </sources>
@@ -837,7 +898,8 @@
                 <data>
                   <src>${collector.dir}/target/embedded/${hbase.folder}</src>
                   <type>directory</type>
-                  <excludes>bin/**,bin/*,lib/*tests.jar</excludes>
+                   <!-- hadoop, guava and commons-beanutils are excluded because they will be replaced with different versions -->
+                  <excludes>bin/**,bin/*,lib/*tests.jar,lib/hadoop*jar,lib/guava-11.0.2.jar,lib/commons-beanutils-core-1.8.0.jar</excludes>
                   <mapper>
                     <type>perm</type>
                     <prefix>/usr/lib/ams-hbase</prefix>
@@ -845,6 +907,46 @@
                   </mapper>
                 </data>
                 <data>
+                  <src>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/hdfs</src>
+                  <type>directory</type>
+                  <includes>hadoop-hdfs-${hadoop.version}.jar,hadoop-hdfs-client-${hadoop.version}.jar</includes>
+                  <mapper>
+                    <type>perm</type>
+                    <prefix>/usr/lib/ams-hbase/lib</prefix>
+                    <filemode>644</filemode>
+                  </mapper>
+                </data>
+  		          <data>
+                  <src>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/common/lib</src>
+                  <type>directory</type>
+                  <includes>commons-beanutils-*.jar</includes>
+                  <mapper>
+                    <type>perm</type>
+                    <prefix>/usr/lib/ams-hbase/lib</prefix>
+                    <filemode>644</filemode>
+                  </mapper>
+                </data>
+                <data>
+                  <src>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/tools/lib</src>
+                  <type>directory</type>
+                  <includes>hadoop-aws*.jar,hadoop-distcp-*.jar</includes>
+                  <mapper>
+                    <type>perm</type>
+                    <prefix>/usr/lib/ams-hbase/lib</prefix>
+                    <filemode>644</filemode>
+                  </mapper>
+                </data>
+                <data>
+                  <src>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/mapreduce</src>
+                  <type>directory</type>
+                  <includes>hadoop-mapreduce-client-app-${hadoop.version}.jar,hadoop-mapreduce-client-common-${hadoop.version}.jar,hadoop-mapreduce-client-core-${hadoop.version}.jar,hadoop-mapreduce-client-hs-${hadoop.version}.jar,hadoop-mapreduce-client-jobclient-${hadoop.version}.jar,hadoop-mapreduce-client-shuffle-${hadoop.version}.jar</includes>
+                  <mapper>
+                    <type>perm</type>
+                    <prefix>/usr/lib/ams-hbase/lib</prefix>
+                    <filemode>644</filemode>
+                  </mapper>
+                </data>
+                <data>
                   <src>${collector.dir}/target/embedded/${hbase.folder}/bin</src>
                   <type>directory</type>
                   <mapper>
@@ -865,7 +967,7 @@
                 <data>
                   <src>${collector.dir}/target/lib</src>
                   <type>directory</type>
-                  <includes>phoenix*.jar,antlr*.jar</includes>
+                  <includes>phoenix*.jar,antlr*.jar,re2j*.jar,failureaccess*.jar,guava-28*.jar,stax2-api*.jar,woodstox-core*.jar,hadoop-annotations*.jar,hadoop-auth*.jar,hadoop-common*.jar,commons-configuration2*.jar,hadoop-yarn-api-*.jar,hadoop-yarn-client-*.jar,hadoop-yarn-common-*.jar,hadoop-yarn-registry-*.jar,hadoop-yarn-server-applicationhistoryservice-*.jar,hadoop-yarn-server-common-*.jar,hadoop-yarn-server-nodemanager-*.jar,hadoop-yarn-server-resourcemanager-*.jar,hadoop-yarn-server-timelineservice-*.jar,hadoop-yarn-server-web-proxy-*.jar</includes>
                   <mapper>
                     <type>perm</type>
                     <filemode>644</filemode>
diff --git a/ambari-metrics/ambari-metrics-timelineservice/pom.xml b/ambari-metrics/ambari-metrics-timelineservice/pom.xml
index 95f9cac..ead50d0 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/pom.xml
+++ b/ambari-metrics/ambari-metrics-timelineservice/pom.xml
@@ -34,7 +34,6 @@
     <!-- Needed for generating FindBugs warnings using parent pom -->
     <!--<yarn.basedir>${project.parent.parent.basedir}</yarn.basedir>-->
     <protobuf.version>2.5.0</protobuf.version>
-    <hadoop.version>3.1.1</hadoop.version>
     <phoenix.version>5.0.0-HBase-2.0</phoenix.version>
     <hbase.version>2.0.2</hbase.version>
   </properties>
@@ -738,6 +737,7 @@
       <version>3.2</version>
       <scope>test</scope>
     </dependency>
+
     <!-- for unit tests only -->
     <dependency>
       <groupId>org.apache.phoenix</groupId>
diff --git a/ambari-metrics/pom.xml b/ambari-metrics/pom.xml
index 282041f..5ff578c 100644
--- a/ambari-metrics/pom.xml
+++ b/ambari-metrics/pom.xml
@@ -44,6 +44,7 @@
     <hbase.folder>hbase-2.0.2</hbase.folder>
     <hadoop.tar>https://archive.apache.org/dist/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz</hadoop.tar>
     <hadoop.folder>hadoop-3.1.1</hadoop.folder>
+    <hadoop.version>3.1.1</hadoop.version>
     <grafana.folder>grafana-6.7.4</grafana.folder>
     <grafana.tar>https://dl.grafana.com/oss/release/grafana-6.7.4.linux-amd64.tar.gz</grafana.tar>
     <phoenix.tar>https://downloads.apache.org/phoenix/apache-phoenix-5.0.0-HBase-2.0/bin/apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz</phoenix.tar>