You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zg...@apache.org on 2020/01/20 05:22:16 UTC

[hbase] branch master updated: HBASE-23156 start-hbase.sh failed with ClassNotFoundException when build with hadoop3 (#1067)

This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 569ac12  HBASE-23156 start-hbase.sh failed with ClassNotFoundException when build with hadoop3 (#1067)
569ac12 is described below

commit 569ac1232a51f727a09b5065b1ec6c87d089fc08
Author: Guanghao Zhang <zg...@apache.org>
AuthorDate: Mon Jan 20 13:22:04 2020 +0800

    HBASE-23156 start-hbase.sh failed with ClassNotFoundException when build with hadoop3 (#1067)
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
---
 .../src/main/assembly/hadoop-three-compat.xml      | 258 +++++++++++++++++++++
 pom.xml                                            |   2 +-
 2 files changed, 259 insertions(+), 1 deletion(-)

diff --git a/hbase-assembly/src/main/assembly/hadoop-three-compat.xml b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml
new file mode 100644
index 0000000..310d06c
--- /dev/null
+++ b/hbase-assembly/src/main/assembly/hadoop-three-compat.xml
@@ -0,0 +1,258 @@
+<?xml version="1.0"?>
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
+<!--
+/**
+ * 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.
+ */
+-->
+
+  <!--This 'all' id is not appended to the produced bundle because we do this: http://maven.apache.org/plugins/maven-assembly-plugin/faq.html#required-classifiers -->
+  <id>bin</id>
+  <formats>
+    <format>tar.gz</format>
+  </formats>
+  <componentDescriptors>
+    <componentDescriptor>src/main/assembly/components.xml</componentDescriptor>
+  </componentDescriptors>
+  <moduleSets>
+    <moduleSet>
+      <useAllReactorProjects>true</useAllReactorProjects>
+      <includes>
+        <!-- Keep this list sorted by name -->
+        <include>org.apache.hbase:hbase-annotations</include>
+        <include>org.apache.hbase:hbase-backup</include>
+        <include>org.apache.hbase:hbase-client</include>
+        <include>org.apache.hbase:hbase-common</include>
+        <include>org.apache.hbase:hbase-endpoint</include>
+        <include>org.apache.hbase:hbase-examples</include>
+        <include>org.apache.hbase:hbase-external-blockcache</include>
+        <include>org.apache.hbase:hbase-hadoop-compat</include>
+        <include>org.apache.hbase:hbase-hadoop2-compat</include>
+        <include>org.apache.hbase:hbase-http</include>
+        <include>org.apache.hbase:hbase-it</include>
+        <include>org.apache.hbase:hbase-mapreduce</include>
+        <include>org.apache.hbase:hbase-metrics</include>
+        <include>org.apache.hbase:hbase-metrics-api</include>
+        <include>org.apache.hbase:hbase-procedure</include>
+        <include>org.apache.hbase:hbase-protocol</include>
+        <include>org.apache.hbase:hbase-protocol-shaded</include>
+        <include>org.apache.hbase:hbase-replication</include>
+        <include>org.apache.hbase:hbase-rest</include>
+        <include>org.apache.hbase:hbase-rsgroup</include>
+        <include>org.apache.hbase:hbase-server</include>
+        <include>org.apache.hbase:hbase-shell</include>
+        <include>org.apache.hbase:hbase-testing-util</include>
+        <include>org.apache.hbase:hbase-thrift</include>
+        <include>org.apache.hbase:hbase-zookeeper</include>
+      </includes>
+      <!-- Binaries for the dependencies also go in the hbase-jars directory -->
+      <binaries>
+        <outputDirectory>lib</outputDirectory>
+        <unpack>false</unpack>
+        <dependencySets>
+          <dependencySet>
+            <excludes>
+            <!-- Exclude J2EE libraries that get pulled in when building on JDK11 -->
+              <exclude>com.sun.activation:javax.activation</exclude>
+              <!-- The following artifacts are transitive dependencies of com.sun.xml.ws:jaxws-ri:pom
+                   They are needed to be included in lib/jdk11 to be added to classpath during
+                   Java 11 runtime hence excluding from main lib.
+              -->
+              <exclude>com.sun.xml.ws:*</exclude>
+              <exclude>jakarta.annotation:jakarta.annotation-api</exclude>
+              <exclude>org.glassfish.jaxb:*</exclude>
+              <exclude>com.sun.istack:istack-commons-runtime</exclude>
+              <exclude>org.glassfish.gmbal:gmbal</exclude>
+              <exclude>org.glassfish.external:management-api</exclude>
+              <exclude>org.glassfish.pfl:*</exclude>
+              <exclude>org.jvnet.staxex:stax-ex</exclude>
+              <exclude>com.sun.xml.stream.buffer:streambuffer</exclude>
+              <exclude>org.jvnet.mimepull:mimepull</exclude>
+              <exclude>com.sun.xml.fastinfoset:FastInfoset</exclude>
+              <exclude>org.glassfish.ha:ha-api</exclude>
+              <exclude>com.sun.xml.messaging.saaj:saaj-impl</exclude>
+              <exclude>jakarta.activation:jakarta.activation-api</exclude>
+              <exclude>com.sun.xml.bind:jaxb-xjc</exclude>
+              <exclude>com.sun.xml.bind:jaxb-jxc</exclude>
+              <exclude>jakarta.mail:jakarta.mail-api</exclude>
+              <exclude>jakarta.persistence:jakarta.persistence-api</exclude>
+              <exclude>org.eclipse.persistence:*</exclude>
+              <exclude>jakarta.xml.ws:jakarta.xml.ws-api</exclude>
+              <exclude>jakarta.xml.bind:jakarta.xml.bind-api</exclude>
+              <exclude>jakarta.xml.soap:jakarta.xml.soap-api</exclude>
+              <exclude>jakarta.jws:jakarta.jws-api</exclude>
+            <!-- Exclude libraries that we put in their own dirs under lib/ -->
+              <exclude>org.jruby:jruby-complete</exclude>
+              <exclude>com.sun.jersey:*</exclude>
+              <exclude>com.sun.jersey.contribs:*</exclude>
+              <exclude>jline:jline</exclude>
+              <exclude>org.apache.hbase:hbase-shaded-client</exclude>
+              <exclude>org.apache.hbase:hbase-shaded-client-byo-hadoop</exclude>
+              <exclude>org.apache.hbase:hbase-shaded-mapreduce</exclude>
+              <exclude>com.github.stephenc.findbugs:findbugs-annotations</exclude>
+              <exclude>commons-logging:commons-logging</exclude>
+              <exclude>log4j:log4j</exclude>
+              <exclude>org.apache.htrace:htrace-core4</exclude>
+              <exclude>org.apache.htrace:htrace-core</exclude>
+              <exclude>org.apache.yetus:audience-annotations</exclude>
+              <exclude>org.slf4j:slf4j-api</exclude>
+              <exclude>org.slf4j:slf4j-log4j12</exclude>
+            </excludes>
+          </dependencySet>
+        </dependencySets>
+      </binaries>
+    </moduleSet>
+    <!-- Include shaded clients in their own directory -->
+    <moduleSet>
+      <useAllReactorProjects>true</useAllReactorProjects>
+      <includes>
+        <include>org.apache.hbase:hbase-shaded-client</include>
+        <include>org.apache.hbase:hbase-shaded-mapreduce</include>
+        <include>org.apache.hbase:hbase-shaded-client-byo-hadoop</include>
+      </includes>
+      <binaries>
+        <outputDirectory>lib/shaded-clients</outputDirectory>
+        <unpack>false</unpack>
+        <dependencySets>
+          <dependencySet>
+            <includes>
+              <include>org.apache.hbase:hbase-shaded-client</include>
+              <include>org.apache.hbase:hbase-shaded-mapreduce</include>
+              <include>org.apache.hbase:hbase-shaded-client-byo-hadoop</include>
+            </includes>
+          </dependencySet>
+        </dependencySets>
+      </binaries>
+    </moduleSet>
+  </moduleSets>
+  <!-- Include the generated LICENSE and NOTICE files -->
+  <files>
+    <file>
+      <source>${project.build.directory}/maven-shared-archive-resources/META-INF/LICENSE</source>
+      <outputDirectory>.</outputDirectory>
+      <destName>LICENSE.txt</destName>
+      <lineEnding>unix</lineEnding>
+    </file>
+    <file>
+      <source>${project.build.directory}/NOTICE.aggregate</source>
+      <outputDirectory>.</outputDirectory>
+      <destName>NOTICE.txt</destName>
+      <lineEnding>unix</lineEnding>
+    </file>
+    <file>
+      <source>${basedir}/src/main/resources/META-INF/LEGAL</source>
+      <outputDirectory>.</outputDirectory>
+      <destName>LEGAL</destName>
+      <lineEnding>unix</lineEnding>
+    </file>
+  </files>
+
+  <dependencySets>
+    <!-- Add jruby-complete to hbase_home/lib/ruby.
+         Update JRUBY_PACKAGED_WITH_HBASE in bin/hbase and hbase.cmd if you would like to update outputDirectory below -->
+    <dependencySet>
+      <outputDirectory>lib/ruby</outputDirectory>
+      <includes>
+        <include>org.jruby:jruby-complete</include>
+      </includes>
+    </dependencySet>
+    <!-- Include third party dependencies the shaded clients expose in the lib directory
+      -->
+    <dependencySet>
+      <outputDirectory>lib/client-facing-thirdparty</outputDirectory>
+      <useTransitiveDependencies>true</useTransitiveDependencies>
+      <!-- Unfortunately, we have to whitelist these because Maven
+           currently doesn't use the dependency-reduced-pom after
+           the shaded module has done its thing. That means if we
+           did this as "transitives of the shaded modules" we'd
+           get a duplication of all the jars we already have in our
+           shaded artifacts. See MNG-5899.
+
+           Check that things match by listing files and making
+           sure the runtime scoped things are all present in the
+           tarball. e.g.:
+
+           for module in hbase-shaded-mapreduce hbase-shaded-client; do
+             mvn dependency:list -f hbase-shaded/${module}/dependency-reduced-pom.xml
+           done | \
+           grep -E "runtime|compile" | \
+           grep -v -E "junit|(optional)" | \
+           cut -d ' ' -f 3- | \
+           sort -u
+
+           TODO we should check this in nightly
+
+           Alternatively, we could
+           stop waiting for Maven to fix this and build the client
+           tarball in a different build.
+        -->
+      <includes>
+        <include>com.github.stephenc.findbugs:findbugs-annotations</include>
+        <include>commons-logging:commons-logging</include>
+        <include>log4j:log4j</include>
+        <include>org.apache.htrace:htrace-core4</include>
+        <include>org.apache.htrace:htrace-core</include>
+        <include>org.apache.yetus:audience-annotations</include>
+        <include>org.slf4j:slf4j-api</include>
+        <include>org.slf4j:slf4j-log4j12</include>
+      </includes>
+    </dependencySet>
+    <dependencySet>
+      <outputDirectory>lib/zkcli</outputDirectory>
+      <includes>
+        <include>jline:jline</include>
+      </includes>
+    </dependencySet>
+    <dependencySet>
+      <outputDirectory>lib/jdk11</outputDirectory>
+      <useTransitiveDependencies>true</useTransitiveDependencies>
+      <includes>
+          <include>com.sun.activation:javax.activation</include>
+        <!-- The following artifacts are transitive dependencies of com.sun.xml.ws:jaxws-ri:pom
+             They are needed to be included in lib/jdk11 to be added to classpath during
+             Java 11 runtime
+        -->
+        <include>com.sun.xml.ws:*</include>
+        <include>jakarta.annotation:jakarta.annotation-api</include>
+        <include>org.glassfish.jaxb:*</include>
+        <include>com.sun.istack:istack-commons-runtime</include>
+        <include>org.glassfish.gmbal:gmbal</include>
+        <include>org.glassfish.external:management-api</include>
+        <include>org.glassfish.pfl:*</include>
+        <include>org.jvnet.staxex:stax-ex</include>
+        <include>com.sun.xml.stream.buffer:streambuffer</include>
+        <include>org.jvnet.mimepull:mimepull</include>
+        <include>com.sun.xml.fastinfoset:FastInfoset</include>
+        <include>org.glassfish.ha:ha-api</include>
+        <include>com.sun.xml.messaging.saaj:saaj-impl</include>
+        <include>com.fasterxml.woodstox:woodstox-core</include>
+        <include>org.codehaus.woodstox:stax2-api</include>
+        <include>jakarta.activation:jakarta.activation-api</include>
+        <include>com.sun.xml.bind:jaxb-xjc</include>
+        <include>com.sun.xml.bind:jaxb-jxc</include>
+        <include>jakarta.mail:jakarta.mail-api</include>
+        <include>jakarta.persistence:jakarta.persistence-api</include>
+        <include>org.eclipse.persistence:*</include>
+        <include>jakarta.xml.ws:jakarta.xml.ws-api</include>
+        <include>jakarta.xml.bind:jakarta.xml.bind-api</include>
+        <include>jakarta.xml.soap:jakarta.xml.soap-api</include>
+        <include>jakarta.jws:jakarta.jws-api</include>
+      </includes>
+    </dependencySet>
+  </dependencySets>
+
+</assembly>
diff --git a/pom.xml b/pom.xml
index 15d04db..fe69ae2 100755
--- a/pom.xml
+++ b/pom.xml
@@ -2938,7 +2938,7 @@
         <hadoop.version>${hadoop-three.version}</hadoop.version>
         <!--Use this compat module for now. TODO: Make h3 one if we need one-->
         <compat.module>hbase-hadoop2-compat</compat.module>
-        <assembly.file>src/main/assembly/hadoop-two-compat.xml</assembly.file>
+        <assembly.file>src/main/assembly/hadoop-three-compat.xml</assembly.file>
         <!--This property is for hadoops netty. HBase netty
              comes in via hbase-thirdparty hbase-shaded-netty-->
         <netty.hadoop.version>3.10.5.Final</netty.hadoop.version>