From 762d71978a122f4b0847ad6a2d2cbf047ea77831 Mon Sep 17 00:00:00 2001 From: Istvan Toth Date: Wed, 20 Mar 2024 10:54:56 +0100 Subject: [PATCH] HBASE-28434 Update assembly to create a tarball with hadoop and without hadoop WIP --- bin/hbase | 8 + hbase-assembly-byo-hadoop/pom.xml | 439 ++++++++++++++++++ .../src/main/assembly/components.xml | 113 +++++ .../src/main/assembly/hadoop-three-compat.xml | 158 +++++++ .../src/main/resources/META-INF/LEGAL | 5 + hbase-assembly/pom.xml | 1 + pom.xml | 6 + 7 files changed, 730 insertions(+) create mode 100644 hbase-assembly-byo-hadoop/pom.xml create mode 100644 hbase-assembly-byo-hadoop/src/main/assembly/components.xml create mode 100644 hbase-assembly-byo-hadoop/src/main/assembly/hadoop-three-compat.xml create mode 100644 hbase-assembly-byo-hadoop/src/main/resources/META-INF/LEGAL diff --git a/bin/hbase b/bin/hbase index c562ad8fb3dd..8f58bf578a55 100755 --- a/bin/hbase +++ b/bin/hbase @@ -221,6 +221,14 @@ if [ "$HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP" != "true" ] ; then HADOOP_IN_PATH=$(PATH="${HADOOP_HOME:-${HADOOP_PREFIX}}/bin:$PATH" which hadoop 2>/dev/null) fi +#If Hadoop is not specified with HADOOP_HOME, check that the assembly includes Hadoop +if [[ -z "${HADOOP_IN_PATH}" && ! -e "lib/hadoop-common*" ]] ; then + echo Installation does not contain Hadoop, and HADOOP_HOME does not point to a Hadoop installation. + echo Specify a compatible Hadoop installation via HADOOP_HOME, or use the HBase assembly variant + echo that includes Hadoop. + exit 1 +fi + # Add libs to CLASSPATH declare shaded_jar diff --git a/hbase-assembly-byo-hadoop/pom.xml b/hbase-assembly-byo-hadoop/pom.xml new file mode 100644 index 000000000000..30fd102ff45c --- /dev/null +++ b/hbase-assembly-byo-hadoop/pom.xml @@ -0,0 +1,439 @@ + + + + 4.0.0 + + org.apache.hbase + hbase-build-configuration + ${revision} + ../hbase-build-configuration + + hbase-assembly-byo-hadoop + pom + Apache HBase - Assembly without Hadoop and its transitive dependencies + Module that does project assembly without Hadoop and its transitive dependencies and that is all that it does. + + true + + true + + + + + + + + org.apache.hadoop + hadoop-yarn-api + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-yarn-client + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-yarn-common + ${hadoop-three.version} + provided + + + com.fasterxml.jackson.module + jackson-module-jaxb-annotations + + + jakarta.xml.bind + jakarta.xml.bind-api + + + + + org.apache.hadoop + hadoop-mapreduce-client-core + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-mapreduce-client-jobclient + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-hdfs + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-auth + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-common + ${hadoop-three.version} + provided + + + org.checkerframework + checker-qual + + + + + org.apache.hadoop + hadoop-client + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-annotations + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-distcp + ${hadoop-three.version} + provided + + + org.apache.hadoop + hadoop-hdfs-client + ${hadoop-three.version} + provided + + + + + org.apache.hbase + hbase-shaded-client-byo-hadoop + + + org.apache.hbase + hbase-shaded-mapreduce + + + + org.apache.hbase + hbase-openssl + + + org.apache.hbase + hbase-server + + + org.apache.hbase + hbase-endpoint + + + org.apache.hbase + hbase-mapreduce + + + org.apache.hbase + hbase-hadoop-compat + + + com.google.guava + guava + + + + + org.apache.hbase + hbase-shell + + + org.apache.hbase + hbase-thrift + + + org.apache.hbase + hbase-rest + + + org.apache.hbase + hbase-external-blockcache + + + org.apache.hbase + hbase-metrics-api + + + org.apache.hbase + hbase-metrics + + + org.apache.hbase + hbase-protocol-shaded + + + org.apache.hbase + hbase-resource-bundle + true + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + org.apache.hbase + hbase-asyncfs + + + org.apache.hbase + hbase-backup + + + org.apache.hbase + hbase-balancer + + + org.apache.hbase + hbase-replication + + + org.apache.hbase + hbase-http + + + org.apache.hbase + hbase-zookeeper + + + org.apache.hbase + hbase-hbtop + + + + org.apache.hbase + hbase-shaded-client + + + + + org.apache.hbase + hbase-compression-aircompressor + + + org.apache.hbase + hbase-compression-brotli + + + org.apache.hbase + hbase-compression-lz4 + + + org.apache.hbase + hbase-compression-snappy + + + org.apache.hbase + hbase-compression-zstd + + + org.apache.hbase + hbase-diagnostics + + + jline + jline + + + + org.slf4j + jcl-over-slf4j + + + org.slf4j + jul-to-slf4j + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-1.2-api + + + + io.opentelemetry.javaagent + opentelemetry-javaagent + + + + net.spy + spymemcached + + + + org.apache.tomcat + tomcat-juli + ${tomcat.version.for.exclusion} + provided + + + org.apache.tomcat + tomcat-api + ${tomcat.version.for.exclusion} + provided + + + org.apache.tomcat + tomcat-util-scan + ${tomcat.version.for.exclusion} + provided + + + org.apache.tomcat + tomcat-util + ${tomcat.version.for.exclusion} + provided + + + + + + + org.apache.maven.plugins + maven-remote-resources-plugin + + + aggregate-licenses + + process + + + + ${build.year} + ${license.debug.print.included} + ${license.bundles.dependencies} + ${license.bundles.jquery} + ${license.bundles.vega} + ${license.bundles.logo} + ${license.bundles.bootstrap} + + + ${project.groupId}:hbase-resource-bundle:${project.version} + + + ${project.groupId}:hbase-resource-bundle:${project.version} + + + supplemental-models.xml + + + + + + + maven-assembly-plugin + + + hbase-byo-hadoop-${project.version} + false + true + posix + + ${assembly.file} + + + + + maven-dependency-plugin + + + + + unpack-dependency-notices + + unpack-dependencies + + prepare-package + + pom + true + **\/NOTICE,**\/NOTICE.txt + + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec.maven.version} + + + concat-NOTICE-files + + exec + + package + + env + + bash + -c + cat maven-shared-archive-resources/META-INF/NOTICE \ + `find ${project.build.directory}/dependency -iname NOTICE -or -iname NOTICE.txt` + + ${project.build.directory}/NOTICE.aggregate + ${project.build.directory} + + + + + + + + diff --git a/hbase-assembly-byo-hadoop/src/main/assembly/components.xml b/hbase-assembly-byo-hadoop/src/main/assembly/components.xml new file mode 100644 index 000000000000..f79b2e754caf --- /dev/null +++ b/hbase-assembly-byo-hadoop/src/main/assembly/components.xml @@ -0,0 +1,113 @@ + + + + + + + + + ${project.basedir}/../target/site + docs + + + **/*devapidocs/** + + + + + ${project.basedir}/.. + . + + CHANGES.md + RELEASENOTES.md + README.txt + + 0644 + + + + ${project.basedir}/../conf + conf + 0644 + 0755 + + + + + ${project.basedir}/../bin + bin + + **/*.cmd + + 0755 + 0755 + + + + ${project.basedir}/../bin + bin + + **/*.cmd + + + + + ${project.basedir}/../hbase-server/target/hbase-webapps + hbase-webapps + 0644 + 0755 + + + ${project.basedir}/../hbase-thrift/target/hbase-webapps + hbase-webapps/ + 0644 + 0755 + + + ${project.basedir}/../hbase-rest/target/hbase-webapps + hbase-webapps/ + 0644 + 0755 + + + + ${project.basedir}/../hbase-server/target/native + lib/native + 0755 + 0755 + + *.so + *.dylib + + + + + ${project.basedir}/../hbase-common/target/generated-sources/native + include + 0644 + 0755 + + **/*.h + + + + diff --git a/hbase-assembly-byo-hadoop/src/main/assembly/hadoop-three-compat.xml b/hbase-assembly-byo-hadoop/src/main/assembly/hadoop-three-compat.xml new file mode 100644 index 000000000000..794d1db85177 --- /dev/null +++ b/hbase-assembly-byo-hadoop/src/main/assembly/hadoop-three-compat.xml @@ -0,0 +1,158 @@ + + + + + + bin + + tar.gz + + + src/main/assembly/components.xml + + + + + ${project.build.directory}/maven-shared-archive-resources/META-INF/LICENSE + . + LICENSE.txt + unix + + + ${project.build.directory}/NOTICE.aggregate + . + NOTICE.txt + unix + + + ${basedir}/src/main/resources/META-INF/LEGAL + . + LEGAL + unix + + + + + + lib + true + + + + org.apache.hbase:hbase-shaded-mapreduce + org.apache.hbase:hbase-shaded-client-byo-hadoop + + org.jruby:jruby-complete + + com.github.stephenc.findbugs:findbugs-annotations + commons-logging:commons-logging + log4j:log4j + org.apache.htrace:htrace-core4 + org.apache.htrace:htrace-core + org.apache.yetus:audience-annotations + org.slf4j:* + org.apache.logging.log4j:* + io.opentelemetry:* + + io.opentelemetry.javaagent:* + + jline:jline + + + com.sun.jersey:* + com.sun.jersey.contribs:* + + com.sun.xml.ws:jaxws-ri:pom + + + + + lib/ruby + + org.jruby:jruby-complete + + + + + lib/client-facing-thirdparty + true + + + + com.github.stephenc.findbugs:findbugs-annotations + commons-logging:commons-logging + log4j:log4j + org.apache.htrace:htrace-core4 + org.apache.htrace:htrace-core + org.apache.yetus:audience-annotations + org.slf4j:* + org.apache.logging.log4j:* + io.opentelemetry:* + + + + lib/shaded-clients + + org.apache.hbase:hbase-shaded-mapreduce + org.apache.hbase:hbase-shaded-client-byo-hadoop + + + + lib/zkcli + + + jline:jline + + + + lib/trace + + io.opentelemetry.javaagent:* + + + + diff --git a/hbase-assembly-byo-hadoop/src/main/resources/META-INF/LEGAL b/hbase-assembly-byo-hadoop/src/main/resources/META-INF/LEGAL new file mode 100644 index 000000000000..9ac7f5a78b15 --- /dev/null +++ b/hbase-assembly-byo-hadoop/src/main/resources/META-INF/LEGAL @@ -0,0 +1,5 @@ +In Ruby's source distribution, this would describe a number of C source files +that have different licenses than Ruby itself. None of those apply to JRuby, +so we have this file here as a placeholder. + +For details of licensing of this collective work, see LICENSE diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml index c9db9a9ddee5..4631d365172b 100644 --- a/hbase-assembly/pom.xml +++ b/hbase-assembly/pom.xml @@ -47,6 +47,7 @@ org.apache.hbase hbase-shaded-mapreduce + org.apache.hbase hbase-openssl diff --git a/pom.xml b/pom.xml index 5625dc3a7a16..f9c4a0ee64b3 100644 --- a/pom.xml +++ b/pom.xml @@ -762,6 +762,7 @@ hbase-it hbase-examples hbase-assembly + hbase-assembly-byo-hadoop hbase-testing-util hbase-annotations hbase-rest @@ -1051,6 +1052,11 @@ is what glassfish's jspC jar uses and that's where we get our own need for a jsp-api. --> + + org.apache.hbase + hbase-annotations + ${project.version} + org.apache.hbase hbase-annotations