基于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

Kejie
1 声望0 粉丝