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包,导致无法运行
- 提交作业出现缺少jar包, 缺少hadoop-mapreduce-client-common-3.1.1.jar, 需要从libext中 cp到lib目录
- 提交hive作业,缺少hive-webhcat-java-client-2.3.7.jar 需要拷贝到 lib和libext目录下
- 提交hive作业,缺少hive-hcatalog-core-2.3.7.jar 需要拷贝到 lib和libext目录下
- 提交MapReduce作业和sqoop作业, yarn调度成功,但是oozie ui 是挂起的状态,缺少hadoop-mapreduce-client-jobclient-3.1.1.jar
以上是 Oozie5.2.1 + Hadoop3编译 的全部内容, 来源链接: utcz.com/z/267481.html