下载

链接

https://github.com/azkaban/azkaban/releases/4.0.0.tar.gz

解压

tar -xzvf 4.0.0.tar.gz -C 自定义目标目录

修改azkaban-4.0.0目录下的build.gradle文件

找到初始配置信息
maven{
url 'https://linkedin.bintray.com/maven'
} 进行修改
maven {
url 'https://linkedin.jfrog.io/artifactory/open-source/'
} 原有的仓库地址在国内访问会非常缓慢,甚至不能访问,造成编译过程报错。

修改 nodejs 相关配置

进入到/..../azkaban-4.0.0/azkaban-web-server目录中,打开build.gradle文件,将node选项中的download配置值设为false
node {
// Version of node to use.
version = '8.10.0' // Version of npm to use.
npmVersion = '5.6.0' // Base URL for fetching node distributions (change if you have a mirror).
distBaseUrl = 'https://nodejs.org/dist' // If true, it will download node using above parameters.
// If false, it will try to use globally installed node.
download = false // Set the work directory for unpacking node
workDir = file("${project.buildDir}/nodejs") // Set the work directory where node_modules should be located
nodeModulesDir = file("${project.projectDir}")
} 如果不修改的话,azkaban在编译的过程中就会去下载 node-8.10.0,大概率会因为网络问题使下载失败,从而导致编译失败。
我们本机需要准备好node环境(笔者在编译的时候遇到过,node环境已经存在,但是提示 npm not found 的报错信息,尝试多次后无果,最后将虚拟机重启解决。)

修改azkaban-db代码,以支持Mysql8.X系列数据库

进入/..../azkaban-4.0.0/azkaban-db/src/main/java/azkaban/db目录,修改MySQLDataSource.java
@Inject
public MySQLDataSource(final Props props, final DBMetrics dbMetrics) {
super();
this.dbMetrics = dbMetrics; final int port = props.getInt("mysql.port");
final String host = props.getString("mysql.host");
final String dbName = props.getString("mysql.database");
final String user = props.getString("mysql.user");
final String password = props.getString("mysql.password");
final int numConnections = props.getInt("mysql.numconnections"); //加上mysql的驱动类配置项,如果没有配置则默认是mysql5.x
//-----------------begin-----------------------
String driverName = props.getString("mysql.driverName");
if(driverName == null){
driverName = "com.mysql.jdbc.Driver";
}
//-----------------end----------------------- final String url = "jdbc:mysql://" + (host + ":" + port + "/" + dbName);
addConnectionProperty("useUnicode", "yes");
addConnectionProperty("characterEncoding", "UTF-8"); //setDriverClassName(com.mysql.jdbc.Driver); //修改成从配置中读取驱动类名
addConnectionProperty("useSSL", "false");
setDriverClassName(driverName); setUsername(user);
setPassword(password);
setUrl(url);
setMaxTotal(numConnections);
setValidationQuery("/* ping */ select 1");
setTestOnBorrow(true);
} azkaban 默认支持MySQL5.x版本,可以根据需要,决定是否让其适配5.x及8.x

编译

提前准备好 gradle-4.6-all.zip

下载链接:https://services.gradle.org/distributions/gradle-4.6-all.zip

整合到Azkaban中,目标目录如下:
/..../azkaban-4.0.0/gradle/wrapper/ 修改配置文件 gradle-wrapper.properties : distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# distributionUrl=https://services.gradle.org/distributions/gradle-4.6-all.zip #(注释掉这一行)
distributionUrl=gradle-4.6-all.zip # (添加该行内容)

指令

cd /..../azkaban-4.0.0/

./gradlew build installDist

可能会出现 test failed 的提示,使用如下参数跳过测试。

./gradlew build installDist -x test

不出意外,编译会顺利进行。

启动 Solo-Server

指令

cd /..../azkaban-4.0.0/azkaban-solo-server/build/install/azkaban-solo-server

sh ./bin/start-solo.sh

服务检查指令:jps
返回:AzkabanSingleServer 浏览器访问:
http://本机ip:8081/ 用户名/密码:azkaban/azkaban

案例

文件准备

mkdir first_azkaban_project && cd first_azkaban_project

vi basic.flow    (添加文件内容)

nodes:
- name: jobA
type: command
config:
command: echo "This is an echoed text." vi flow20.project (添加文件内容) azkaban-flow-version: 2.0 打包: zip -r Archive.zip . (在 first_azkaban_project 下) 如果没有 zip 指令,使用 yum install zip -y 进行安装 将生成的zip包拉取到本地,上传到提前创建好的项目中,运行即可。

Azkaban 4.0.0 系列(一)-- Solo-Server的更多相关文章

  1. Netty4.0学习笔记系列之一:Server与Client的通讯

    http://blog.csdn.net/u013252773/article/details/21046697 本文是学习Netty的第一篇文章,主要对Netty的Server和Client间的通讯 ...

  2. Azkaban 2.5.0 搭建

    一.前言 最近试着参照官方文档搭建 Azkaban,发现文档很多地方有坑,所以在此记录一下. 二.环境及软件 安装环境: 系统环境: ubuntu-12.04.2-server-amd64 安装目录: ...

  3. 【多端应用开发系列0.0.0——之总序】xy多端应用开发方案定制

    [目录] 0.0.0 [多端应用开发系列之总序]服务器Json数据处理——Json数据概述 0.0.0 [因] 正在学习多客户端应用开发,挖个坑,把所用到的技术方案,用最简单直白的语言描述出来,写成一 ...

  4. 【转】WF4.0实战系列索引

    转自:http://www.cnblogs.com/zhuqil/archive/2010/07/05/wf4-in-action-index.html 此系列的工作流文件案例比较多点,实用性好. W ...

  5. Azkaban 2.5.0 搭建和一些小问题

    安装环境: 系统环境: ubuntu-12.04.2-server-amd64 安装目录: /usr/local/ae/ankaban JDK 安装目录: export JAVA_HOME=/usr/ ...

  6. 【Azkaban搭建】---Azkaban 3.25.0搭建细则 超实用

    一.前述 Azkaban是一个工作流调度工具,因为需要各个任务之间有依赖关系,传统的Crontab 任务已经不能满足. 所以需要建立一套工作流引擎.相比Ooize来说,Azkaban的优势是作为一个客 ...

  7. Spark2.0机器学习系列之11: 聚类(幂迭代聚类, power iteration clustering, PIC)

    在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法:             (1)K-means             (2)Latent Dirichlet all ...

  8. Spark2.0机器学习系列之1: 聚类算法(LDA)

    在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法:      (1)K-means      (2)Latent Dirichlet allocation (LDA)  ...

  9. Azkaban学习之路(四)—— Azkaban Flow 2.0的使用

    一.Flow 2.0 简介 1.1 Flow 2.0 的产生 Azkaban 目前同时支持 Flow 1.0 和 Flow2.0 ,但是官方文档上更推荐使用Flow 2.0,因为Flow 1.0会在将 ...

  10. Entity Framework 6.0 入门系列 第一篇

    Entity Framework 6.0 入门系列 第一篇 好几年前接触过一些ef感觉不是很好用,废弃.但是 Entity Framework 6.0是经过几个版本优化过的产物,性能和功能不断完善,开 ...

随机推荐

  1. 排查问题-输出pojo日志,尽量用json

    背景: 下午在做一个前后端md5加密签名校验. 前端用参数A,B,C,经过MD5加密函数,得到签名D. 然后前端带着ABCD一块来到后端. 同样的,后端拿到请求后,用MD5函数对ABC进行加密,得到签 ...

  2. windows11 安装跳过互联网验证

    按住shift+F10   cmd 输入  OOBE\BYPASSNRO 电脑重启后 出现 跳过得按钮

  3. Python爬取亚马逊商品页面

    仍然利用Requests库来实现 1 import requests 2 r=requests.get('https://www.amazon.cn/gp/product/B01M8L5Z3Y') 3 ...

  4. pip 源修改,换国内

    pip国内的一些镜像   阿里云 https://mirrors.aliyun.com/pypi/simple/  中国科技大学 https://pypi.mirrors.ustc.edu.cn/si ...

  5. C语言中static关键字用法

    概述 static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护. 在程序中使用static 变量 1. 局部变量 普通局部变量是再熟悉不过的变量了,在任何一个函数内 ...

  6. golang defer关键字

    defer关键字的作用 defer 会在当前函数或者方法返回(return)之前执行传入的函数.它会经常被用于关闭文件描述符.关闭数据库连接以及解锁资源. 在go语言中,程序有defer语句并不会马上 ...

  7. spring boot No qualifying bean of type 'org.apache.catalina.core.ApplicationContext' available

    发现创建的ApplictionContext对象还没有containsBean的方法, 找了很久没搞定,后面发现原来是包导入错了. 应该导入 import org.springframework.co ...

  8. 【ADB命令】获取应用包名

    打开cmd,输入命令,然后点击要查看的应用,即可获取对应包名. adb shell am monitor

  9. React函数式组件值之useRef()和useImperativeHandle()

    一.useRef useRef共有两种用法,获取子组件的实例(只有类组件可用),在函数组件中的一个全局变量,不会因为重复 render 重复申明, 类似于类组件的 this.xxx. 1. useRe ...

  10. HttpURLConnection.openConnection状态码302

    今天根据URL,下载视频. new URL(url1).openConnection() 的时候,用HttpURLConnection接,出现302,以至于后面取不到流,无法读流. HttpURLCo ...