Oozie5.2.1 + Hadoop3编译

基于hadoop3编译Oozie5.2.1

系统要求

  • Java JDK 1.8+
  • Maven 3.0.1+
  • Hadoop 3.0.0+

编译摘要

git clone https://github.com/apache/oozie.git

# 如果针对 Hadoop 3 构建,则必须激活配置文件 hadoop-3 构建发布时应指定以下属性:

-DgenerateDocs : 强制生成Oozie文档

-DskipTests : 跳过测试

-Dvc.revision= : 指定发行版的源代码管理修订号

-Dvc.url= : 指定分发的源代码管理 URL

根据集群情况,修改pom文件

修改oozie/examples/pom.xml

<profile>

<id>hadoop-3</id>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

<dependencies>

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-common</artifactId>

</dependency>

</dependencies>

</profile>

修改oozie/sharelib/pig/pom.xml

<profile>

<id>hadoop-3</id>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

<dependencies>

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-common</artifactId>

</dependency>

</dependencies>

</profile>

修改oozie/webapp/pom.xml

<profile>

<id>hadoop-3</id>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

<dependencies>

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-common</artifactId>

</dependency>

</dependencies>

</profile>

修改oozie/pom.xml

....

<hadoop.version>3.1.1</hadoop.version>

<hadoop.majorversion>3</hadoop.majorversion>

<!--

找不到 org.apache.hadoop.hbase.security.token.TokenUtil 做的修改

默认1.2.3 低版本缺少类,所以修改到1.7.0

-->

<hbase.version>1.7.0</hbase.version>

.....

<!-- Sharelib component versions 根据集群真实情况修改版本就好-->

<!-- 高版本的hive不存在org.apache.hadoop.hive.thrift.DelegationTokenIdentifier.class使用了2.3.6版本 -->

<!-- 也可以使用3.1的hive,详情请看下面-->

<hive.version>2.3.6</hive.version>

<hive.jline.version>2.12</hive.jline.version>

<pig.version>0.16.0</pig.version>

<pig.classifier>h2</pig.classifier>

<hive.classifier>core</hive.classifier>

<sqoop.version>1.4.7</sqoop.version>

<spark.version>2.4.6</spark.version>

<spark.streaming.kafka.version>2.4.6</spark.streaming.kafka.version>

<spark.bagel.version>2.4.6</spark.bagel.version>

<spark.guava.version>14.0.1</spark.guava.version>

<spark.scala.binary.version>2.10</spark.scala.binary.version>

<sqoop.classifier>hadoop260</sqoop.classifier>

<tez.version>0.10.0</tez.version>

<joda.time.version>2.9.9</joda.time.version>

<avro.version>1.8.2</avro.version>

兼容sharelib hive3.1.0编译调整

// 将DelegationTokenIdentifier替换为TokenIdentifier

// 大概在50行左右

import org.apache.hadoop.hive.thrift.DelegationTokenIdentifier;

import org.apache.hadoop.security.token.TokenIdentifier;

// 修改为TokenIdentifier

// 大概在290行左右

Token<DelegationTokenIdentifier> token = new Token<DelegationTokenIdentifier>();

Token<TokenIdentifier> token = new Token<TokenIdentifier>();

编译

bin/mkdistro.sh -DskipTests -Dvc.revision=release-5.2.1@8f0e5ee -Dvc.url=https://github.com/apache/oozie.git -DgenerateDocs

安装包相关

在安装过程中,因为原始包缺失jar包,导致无法运行

  1. 提交作业出现缺少jar包, 缺少hadoop-mapreduce-client-common-3.1.1.jar, 需要从libext中 cp到lib目录
  2. 提交hive作业,缺少hive-webhcat-java-client-2.3.7.jar 需要拷贝到 lib和libext目录下
  3. 提交hive作业,缺少hive-hcatalog-core-2.3.7.jar 需要拷贝到 lib和libext目录下
  4. 提交MapReduce作业和sqoop作业, yarn调度成功,但是oozie ui 是挂起的状态,缺少hadoop-mapreduce-client-jobclient-3.1.1.jar

以上是 Oozie5.2.1 + Hadoop3编译 的全部内容, 来源链接: utcz.com/z/267481.html

回到顶部