Oozie5.2.1源码编译及安装部署

article/2025/9/16 13:24:13

Oozie5.2.1源码编译

    • 一、准备工作
    • 二、开始编译
    • 三、安装部署
    • 四、运行测试
    • 五、总结
    • 六、编译后得版本

说明:

  • 官网下载最新版本:https://oozie.apache.org/
  • 依赖环境:CentOS7+JDK1.8+maven-3.6.3+pig-0.17.0
  • 参考官网

一、准备工作


  • 下载maven、安装、修改settings.xml改其仓库为阿里云
    (1)安装:
    tar -zvxf /tools/apache-maven-3.6.3-bin.tar.gz -C /training
    (2) 环境变量配置:vi ~/.bash_profile,添加如下信息:

    export MVN_HOME=/training/apache-maven-3.6.3/
    export PATH=$PATH:$MVN_HOME/bin
    

    (3)环境变量生效:source ~/.bash_profile
    (4)其中配置生成.m2目录:安装完maven后 所谓的{user_home}/.m2/repository找不见

    mvn help:effective-settings
    

    等下载完jar包后 这里的 就是本地仓库了 一般为/root/.m2/repository
    (5)在/root/.m2/repository下创建创建settings.xml,添加阿里云仓库:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0https://maven.apache.org/xsd/settings-1.0.0.xsd"><mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>
    </settings>
    

    (6)将settings.xml复制一份到$MAVEN_HOME/conf下

  • 修改虚拟机Centos7下的/etc/hosts文件,添加如下信息:

    182.92.29.13 maven.aliyun.com
    111.13.210.19 archiva-maven-storage-prod.oss-cn-beijing.aliyuncs.com
    136.243.146.148 repository.apache.org
    223.113.13.64 maven.repository.redhat.com
    88.97.7.126 www.datanucleus.org
    54.197.228.20 conjars.org
    209.132.182.97 repository.jboss.org
    137.254.56.48 maven2-repository.dev.java.net
    
  • 下载hadoop-2.7.3.tar.gz,并自行安装部署
    这里只需要修改hadoop安装目录下etc/hadoop/core-site.xml,添加如下:root为代理用户,可以自行创建普通用户

      <!-- OOZIE --><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>
    
  • 下载ExtJS 2.2(官网下载)

  • 下载Pig-0.17.0,并自行完成安装配置

  • 下载HBase-1.3.1,并自行安装配置

  • 下载Hive-2.3.3,并自行安装配置

  • 下载Spark,并自行安装配置(本博文没有此项,可自行添加)

  • 下载oozie-5.2.1.tar.gz,解压、配置:

    1.修改oozie解压目录下pom.xml,此项为重点关注对象,需要修改内容如下:

    <hadoop.version>2.7.3</hadoop.version>
    <hadoop.majorversion>2</hadoop.majorversion>
    <hadooplib.version>hadoop-${hadoop.majorversion}-${project.version}</hadooplib.version>
    <hbase.version>1.3.1</hbase.version>
    <!-- Sharelib component versions -->
    <hive.version>2.3.3</hive.version>
    <hive.jline.version>2.12</hive.jline.version>
    <pig.version>0.17.0</pig.version>
    <!-- 因aliyun repos上pig-0.17.0没有classifier,故需要将默认的h2删除 -->
    <pig.classifier></pig.classifier>
    <hive.classifier>core</hive.classifier>
    <sqoop.version>1.4.7</sqoop.version>
    

    但是只配置上述还存在问题,需要继续修改pom.xml,如下所示
    a)Oozie-core报错:
    错误:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile (default-testCompile) on project oozie-core: Compilation failure: Compilation failure:
    方法:在pom.xml增加/core/src/test/java,如下所示:

    	<build><plugins> ... ...</plugins><testSourceDirectory>/core/src/test/java</testSourceDirectory></build>
    

    b)解决无法访问clourdera仓库问题,需要修改如下:

    <pluginRepositories><pluginRepository><!-- <id>repository.cloudera.com</id><name>repository.cloudera.com-releases</name><url>https://repository.cloudera.com/artifactory/ext-release-local</url><snapshots><enabled>false</enabled></snapshots> --><!-- changed by me --><id>central</id><url>https://repo1.maven.org/maven2/org/apache/felix/maven-bundle-plugin/3.5.0/</url><snapshots><enabled>false</enabled></snapshots></pluginRepository>
    </pluginRepositories>
    
  1. 修改/oozie-5.2.1/fluent-job/fluent-job-api下的pom.xml文件,将其中一个插件的版本由0.1.6改成0.1.8(版本问题),如下所示:
    在这里插入图片描述

二、开始编译


确保上述所有步骤都正确无误,在进行下面得操作:
在Oozie解压目录下,进行打包(注意版本要和pom.xml中的一致哈)命令如下:

	bin/mkdistro.sh -DskipTests -Puber -Dhadoop.version=2.7.3 -Dpig.version=0.17.0 -Dhive.version=2.3.3 -Dhbase.version=1.3.1

成功之后,可以到Oozie的解压目录下查找编译后的版本,如在/tools/oozie-5.2.1/distro/target中会看到oozie-5.2.1-distro.tar.gz

[INFO] Reactor Summary for Apache Oozie Main 5.2.1:[INFO][INFO] Apache Oozie Main .................................. SUCCESS [  3.798 s][INFO] Apache Oozie Fluent Job ............................ SUCCESS [  0.138 s][INFO] Apache Oozie Fluent Job API ........................ SUCCESS [ 18.445 s][INFO] Apache Oozie Client ................................ SUCCESS [ 10.356 s][INFO] Apache Oozie Share Lib Oozie ....................... SUCCESS [  4.550 s][INFO] Apache Oozie Share Lib HCatalog .................... SUCCESS [  9.372 s][INFO] Apache Oozie Share Lib Distcp ...................... SUCCESS [  1.317 s][INFO] Apache Oozie Core .................................. SUCCESS [ 33.162 s][INFO] Apache Oozie Share Lib Streaming ................... SUCCESS [  7.258 s][INFO] Apache Oozie Share Lib Pig ......................... SUCCESS [ 29.345 s][INFO] Apache Oozie Share Lib Git ......................... SUCCESS [ 22.844 s][INFO] Apache Oozie Share Lib Hive ........................ SUCCESS [ 29.006 s][INFO] Apache Oozie Share Lib Hive 2 ...................... SUCCESS [ 13.767 s][INFO] Apache Oozie Share Lib Sqoop ....................... SUCCESS [  6.880 s][INFO] Apache Oozie Examples .............................. SUCCESS [ 51.169 s][INFO] Apache Oozie Share Lib Spark ....................... SUCCESS [01:11 min][INFO] Apache Oozie Share Lib ............................. SUCCESS [ 55.261 s][INFO] Apache Oozie Docs .................................. SUCCESS [  8.078 s][INFO] Apache Oozie WebApp ................................ SUCCESS [ 36.713 s][INFO] Apache Oozie Tools ................................. SUCCESS [ 10.642 s][INFO] Apache Oozie MiniOozie ............................. SUCCESS [  5.966 s][INFO] Apache Oozie Fluent Job Client ..................... SUCCESS [  5.838 s][INFO] Apache Oozie Server ................................ SUCCESS [ 24.425 s][INFO] Apache Oozie Distro ................................ SUCCESS [01:32 min][INFO] Apache Oozie ZooKeeper Security Tests .............. SUCCESS [ 46.027 s][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time:  10:01 min[INFO] Finished at: 2021-03-06T15:45:28+08:00[INFO] ------------------------------------------------------------------------Oozie distro created, DATE[2021.03.06-07:35:24GMT] VC-REV[unavailable], available at [/tools/oozie-5.2.1/distro/target]

**注意:这里往往出错最多得地方,原因是各种依赖无法正常下载,这里很关键,一定要确保正常下载依赖才能编译成功**

三、安装部署


从上述部分可以在/tools/oozie-5.2.1/distro/target下面找到编译好的包:oozie-5.2.1-distro.tar.gz

  • 解压安装

  • 配置环境变量

  • 环境变量生效

  • 在oozie安装路径下创建libext:mkdir libext

  • 复制Hadoop安装目录下share目录的jar和前面已经下载好的ext-2.2.zip包至oozie下的libext,执行如下命令:

    cp -rf /training/hadoop-2.7.3/share/hadoop/*/hadoop*-.jar /training/oozie-5.2.1/libext/
    cp -rf /training/hadoop-2.7.3/share/hadoop/*/lib/*.jar /training/oozie-5.2.1/libext/
    cp /tools/ext-2.2.zip /training/oozie-5.2.1/libext/
    
  • 配置oozie相关文件:
    1.修改conf/oozie-site.xml,只需添加如下

        <property><name>oozie.service.HadoopAccessorService.hadoop.configurations</name><value>*=/training/hadoop-2.7.3/etc/hadoop/</value></property>
    

    /training/hadoop-2.7.3/etc/hadoop/为Hadoop配置文件所在目录

    2.修改conf/hadoop-conf/core-site.xml,只需要添加如下

    <property><name>fs.defaultFS</name><value>hdfs://hadoop001:9000</value>
    </property>
    
  • 上述没有问题后,确保Hadoop已经启动,然后在oozie安装路径下执行如下命令将oozie的sharelib上传到hdfs中:

    bin/oozie-setup.sh sharelib create -fs hdfs://hadoop001:9000 -locallib oozie-sharelib-5.2.1.tar.gz
    

    其中-locallib 及后面的都可以省略不写,建议写上。

    正常执行后会在HDFS上创建出如下目录:
    在这里插入图片描述

  • 使用ooziedb.sh创建Oozie数据库脚本,执行如下:

    bin/ooziedb.sh create -sqlfile oozie.sql -run
    

    正常执行后会在oozie安装路径下会生成oozie.sql的文件
    在这里插入图片描述

  • 启动Oozie服务(守护进程方式)

    bin/oozied.sh start 或者 bin/oozie-start.sh
    
  • 查看是否启动成功
    查看是否存在进程:jps 看到EmbeddedOozieServer进程
    查看Oozie服务状态:
    bin/oozie admin -oozie http://localhost:11000/oozie -status
    正常情况下会看到系统状态是:NORMAL
    浏览器中查看,会看到如下图所示:
    访问:http://hadoop001:11000/oozie/
    在这里插入图片描述
    至此,已经成功安装部署了Oozie的服务器端,注意:这里其实也一并把Oozie的client端也安装了,Oozie的客户端一般需要单独安装在另外的服务器上

四、运行测试


  • Command Line Examples命令行的方式
    • 解压oozie安装路径下的oozie-examples.tar.gz,并将解压后的examples整个目录上传到hdfs中的用户家目录下(如/user/root/)

    • 选择需要测试的案例,并进入到该案例所在的目录下根据实际情况修改job.properties中的内容,我这里选择的是map-reduce案例,故修改map-reduce目录下的job.properties,将其中的内容改成如下所示:

      nameNode=hdfs://hadoop001:9000
      resourceManager=hadoop001:8032
      queueName=default
      examplesRoot=examples
      oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce/workflow.xml
      outputDir=map-reduce
      

      在这里插入图片描述

    • 在oozie安装路径下运行案例,执行如下命令:

      bin/oozie job -oozie http://hadoop001:11000/oozie -config examples/apps/map-reduce/job.properties -run
      

      注意:oozie的命令要在oozie安装路径下执行,虽已经配置环境变量,但是我在其他路径下执行该命令会出错
      命令如成功执行会看到信息:

      job: 0000000-210307000139733-oozie-root-W
      
    • 查看运行状态:

      bin/oozie job -oozie http://localhost:11000/oozie -info 0000000-210307000139733-oozie-root-W
      

      得到如下信息:

      Job ID : 0000000-210307000139733-oozie-root-W
      ------------------------------------------------------------------------------------------------------------------------------------
      Workflow Name : map-reduce-wf
      App Path      : hdfs://hadoop001:9000/user/root/examples/apps/map-reduce/workflow.xml
      Status        : RUNNING
      Run           : 0
      User          : root
      Group         : -
      Created       : 2021-03-06 16:09 GMT
      Started       : 2021-03-06 16:09 GMT
      Last Modified : 2021-03-06 16:09 GMT
      Ended         : -
      CoordAction ID: -Actions
      ------------------------------------------------------------------------------------------------------------------------------------
      ID                                                                            Status    Ext ID                 Ext Status Err Code
      ------------------------------------------------------------------------------------------------------------------------------------
      0000000-210307000139733-oozie-root-W@:start:                                  OK        -                      OK         -
      ------------------------------------------------------------------------------------------------------------------------------------
      0000000-210307000139733-oozie-root-W@mr-node                                  RUNNING   application_1615045482449_0001RUNNING    -        
      ------------------------------------------------------------------------------------------------------------------------------------
      

      在这里插入图片描述

    • 浏览器查看:
      在这里插入图片描述
      双击上述红色部分,看到如图:
      在这里插入图片描述
      切换到Job DAG会看到如下图所示:
      在这里插入图片描述

  • Java API方式(略)

五、总结


花了差不多一个白天从零开始搭建这个环境,刚开始最大的问题在各种依赖无法下载导致浪费了很多时间!其实Apache Oozie版本官网上写得还算好了,只是有一些细节没有写得很清楚,也浪费了不少时间!总之,已经编译部署完毕,有兴趣得读者可以试试吧~

六、编译后得版本


下载地址:https://download.csdn.net/download/sujiangming/15623324


http://chatgpt.dhexx.cn/article/QdW2F3yl.shtml

相关文章

关于oozie

一、定义 1.oozie是一个管理apache hadoop作业的工作调度系统 2.oozie的workflow jobs是由actions组成的有向无环图(DAG) 3.oozie的coordinate jobs是由时间(频率)和数据可用性的重复的workflow jobs . 4.oozie 与hadoop生态圈的其他部分及车鞥在一起&#xff0c;支持多种类型…

任务调度之Oozie详解

利用shell脚本通过crontab进行定时执行&#xff0c;这样实现的话比较简单&#xff0c;但是随着多个job复杂度的提升&#xff0c;无论是协调工作还是任务监控都变得麻烦&#xff0c;我们选择使用oozie来对工作流进行调度监控。 1. Oozie的特点 Oozie是管理hadoop作业的调度系统…

Oozie简介

在Hadoop中执行的任务有时候需要把多个Map/Reduce作业连接到一起&#xff0c;这样才能够达到目的。[1]在Hadoop生态圈中&#xff0c;有一种相对比较新的组件叫做Oozie[2]&#xff0c;它让我们可以把多个Map/Reduce作业组合到一个逻辑工作单元中&#xff0c;从而完成更大型的任务…

Oozie

文章目录 **一、** **Apache Oozie****1&#xff0e;** **Oozie概述****2&#xff0e;** **Oozie的架构****3&#xff0e;** **Oozie**基本原理**3.1&#xff0e;** **流程节点** **4&#xff0e;** **Oozie工作流类型****4.1&#xff0e;** **Work**Flow**4.2&#xff0e;** *…

工作流调度工具--Oozie

一、背景 一个完整的数据分析系统通常是由大量的任务单元组成&#xff0c;Shell脚本、Java程序、MapReduce程序、Hive脚本等等&#xff0c;各个任务单元之间存在时间先后及前后依赖关系。 为了很好的组织这样的复杂执行计划&#xff0c;需要一个工作流调度系统来调用执行。 简…

Oozie基础入门

前言&#xff1a; 因为工作需要用到oozie&#xff0c;但是网上的资料越看越迷茫&#xff0c;经过很大的努力&#xff0c;终于折腾清楚了&#xff0c;这里&#xff0c;做一个总结&#xff0c;帮助后来者更好地进行入门&#xff0c;当然&#xff0c;粗鄙之言&#xff0c;难免疏漏…

大数据调度工具oozie详细介绍

背景&#xff1a; 之前项目中的sqoop等离线数据迁移job都是利用shell脚本通过crontab进行定时执行&#xff0c;这样实现的话比较简单&#xff0c;但是随着多个job复杂度的提升&#xff0c;无论是协调工作还是任务监控都变得麻烦&#xff0c;我们选择使用oozie来对工作流进行调…

oozie详解

1、什么是Oozie Oozie是一种java web应用程序&#xff0c;它运行在java servlet容器中&#xff0c;并使用数据库来存储一下内容&#xff1a; ①工作流定义 ②当前运行的工作流实例&#xff0c;包括实例的状态和变量 Oozie工作流失放置在控制依赖DAG(有向无环图)中的一组动作&am…

大数据Hadoop之——任务调度器Oozie(Oozie环境部署)

文章目录 一、概述二、Oozie架构三、Oozie环境部署&#xff08;Oozie与CDH集成&#xff09;1&#xff09;添加服务2&#xff09;将 Oozie 服务添加到 CDH3&#xff09;自定义角色分配4&#xff09;数据库设置5&#xff09;审核更改6&#xff09;开始自动安装并自启 四、CDH的 H…

Java并发编程(一):多线程与并发原理回顾

今天来聊一聊经典的Java技术&#xff0c;并发编程。并发是程序的灵魂&#xff0c;一个优秀的Java程序一定会支持高并发&#xff0c;并且&#xff0c;并发编程也是面试环节中经常会问到的一个问题&#xff0c;那么今天我们以一道经典的Java面试题回顾一下Java的并发编程。废话不…

java并发编程的艺术和并发编程这一篇就够了

java并发编程的艺术(精华提炼) 通常我们在使用编发编程时,主要目的是为了程序能够更快的处理,但是并不是说更多的线程就一定能够让程序变得足够快,有时候太多的线程反而消耗了更多的资源,反而让程序执行得更缓慢 一.CPU的上下文切换 就算是单核CPU是能够处理多线程任务的,它只…

JAVA并发编程总结

一、基础知识 1.1 线程安全 当多个线程访问某个类时&#xff0c;这个类始终都能表现出正确的行为&#xff0c;那么就称这个类是线程安全的。 CAP理论 原子性 我们把一个或者多个操作在CPU执行的过程中不被中断的特性称为原子性. 可见性 当一个线程修改了对象状态后&#xf…

Java并发:整理自《Java并发编程实战》和《Java并发编程的艺术》

声明&#xff1a;Java并发的内容是自己阅读《Java并发编程实战》和《Java并发编程的艺术》整理来的。 图文并茂请戳 思维导图下载请戳 目录 (1)基础概念 (2)线程 (3)锁 (4)同步器 (5)并发容器和框架 (6)Java并发工具类 (7)原子操作类 (8)Executor框架(执行机制) (9)…

Java并发编程的艺术-并发编程基础

Java从诞生开始就明智地选择了内置对多线程的支持&#xff0c;这使得Java语言相比同一时期的其他语言具有明显的优势。线程作为操作系统调度的最小单元&#xff0c;多个线程能够同时执行&#xff0c;这将显著提升程序性能&#xff0c;在多核环境中表现得更加明显。但是&#xf…

java并发编程(下篇)

java里的阻塞队列 ArrayBlockingQueue 数组结构组成的有界阻塞队列 LinkedBlockingQeque 链表结构的无界阻塞队列 PriorityBlockingQueue 支持优先级排序的无界阻塞队列 DelayQueue 使用优先级队列实现的无界阻塞队列 LinkedBlockingDeque 链表结构组成的双向队列 并发工具…

Java并发编程之美——第一章 Java并发编程基础

文章目录 Time 2021-12-26——Hireek什么是线程线程的等待和通知等待线程终止的join方法让线程睡眠的sleep方法让出CPU执行权的yield方法线程中断demo 线程上下文切换线程死锁什么是死锁如何避免死锁 用户线程与守护线程ThreadLocalintroduction&#xff0c;下文只阐述重要的se…

Java并发编程入门这一篇就够了(文章很长,但很好哦)

Java并发编程入门这一篇就够了 一、进程与线程1. 进程2. 线程3. 二者对比 二、并行与并发三、Java线程1. 创建和运行线程2. 线程运行原理3. 常见方法4. 常用方法详解及异同区分5. 两阶段终止模式&#xff08;使得线程优雅的退出&#xff09;6.主线程与守护线程7. 线程五种状态8…

Java并发编程之Java线程

文章目录 前言01、线程简介02、线程池03、线程间通信总结 前言 记录一下Java并发编程的知识点。有部分内容是借鉴《Java并发编程的艺术》这本书的。本次先介绍一下线程。 01、线程简介 进程和线程的区别 进程&#xff1a;当一个程序被运行&#xff0c;即把程序的代码从磁盘加载…

Java并发编程的艺术

1、并发编程的挑战 1、上下文切换 CPU通过给每个线程分配CPU时间片来实现多线程机制。时间片是CPU分配给各个线程的时间&#xff0c;这个时间非常短&#xff0c;一般是几十毫秒。 CPU通过时间片分配算法来循环执行任务&#xff0c;当前任务执行一个时间片后会切换到下一个任务…

Java并发编程简介

并发编程简介 1. 什么是并发编程 所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在在同一实体上的多个事件。多个事件在同一时间间隔发生。 并发编程 ①从程序设计的角度来讲&#xff0c;是希望通过某些机制让计算机可以在一个时间段内&#xff0c;执行多个任务…