电商数仓项目(五) azkaban安装、配置和使用


本节主要讲解Azkaban的安装、配置和使用。
源代码

一、集群规划

node01node02node03
execexec、mysqlweb

二、Gradle安装与配置

  1. 安装git和gcc(所有服务器都安装)
[root@node01 ~]# yum install -y git gcc*
  1. 下载node
    地址:https://nodejs.org/download/release/v9.11.2/
    版本:9.11.2
  2. 下载gradle4.6
    下载地址:https://downloads.gradle-dn.com/distributions/gradle-4.6-bin.zip
    存放目录:/u02
    设置maven下载地址和存放地址:创建init.gradle文件
[root@node01 u02]# wget https://downloads.gradle-dn.com/distributions/gradle-4.6-bin.zip
[root@node01 u02]# unzip gradle-4.6-bin.zip
[root@node01 u02]# mv gradle-4.6  /u01/gradle-4.6
[root@node01 u01]# cd /u01/gradle-4.6
[root@node01 gradle-4.6]# mkdir repo user_home
[root@node01 gradle-4.6]# cd init.d
[root@node01 init.d]# vi init.gradle
allprojects {
    repositories {
        maven { url 'file:/u01/gradle-4.6/repo'}
        mavenLocal()
        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
        maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
        mavenCentral()
    }

    buildscript {
        repositories {
            maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
            maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
            maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
        }
    }
}
  1. 环境变量设置
    在export PATH USER 之前添加
[root@node01 gradle-4.6]# vi /etc/profile
export GRADLE_HOME=/u01/gradle-4.6
export GRADLE_USER_HOME=/u01/gradle-4.6/user_home
export PATH=$PATH:$GRADLE_HOME/bin

[root@node01 gradle-4.6]# source /etc/profile

三、Azkaban编译

  1. 下载Azkaban
    使用迅雷下载到本地,在上传。使用wget下载github的内容比较慢。
    下载地址:https://codeload.github.com/azkaban/azkaban/tar.gz/3.90.0
[root@node01 u02]# tar -zxvf azkaban-3.90.0.tar.gz
[root@node01 u02]# cd azkaban-3.90.0
  1. 修改mysql版本
    由于mysql使用的版本是8.0.22,故需要修改build.gradle文件(在azkaban-3.90.0目录下)的mysql版本,在107行。57、58行的hadoop和hive版本一定不要修改,否则编译会报错。
mysqlConnector       : 'mysql:mysql-connector-java:8.0.22',
  1. 修改mysql驱动程序
    修改azkaban-db模块下的azkaban.db的MYSQLDataSource.java的51行,修改mysql8.0的驱动。
    目录:/u02/azkaban-3.90.0/azkaban-db/src/main/java/azkaban/db
setDriverClassName("com.mysql.cj.jdbc.Driver");
  1. 编译azkaban
[root@node01 azkaban-3.90.0]#  gradle build -x test

问题:如果网络不是太好,在npm打包时会报错,如下:
What went wrong:
Execution failed for task ‘:azkaban-web-server:npmSetup’.
Process ‘command ‘/u02/azkaban-3.90.0/azkaban-web-server/build/nodejs/node-v8.10.0-linux-x64/bin/node’’ finished with non-zero exit 。

解决方法:修改azkaban-web-server目录下的build.gradle文件,注释掉node部分,不让打包程序下载npm,需要安装npm(root用户):node-v8.10.0-linux-x64.tar.gz,
下载地址:https://nodejs.org/download/release/v8.10.0/node-v8.10.0-linux-x64.tar.gz
安装方法:上传文件到u02目录;解压缩到u01目录;修改文件名;配置环境变量;
之后再次运行gradle 命令。

[root@node01 u02]# tar -zxvf node-v8.10.0-linux-x64.tar.gz -C /u01
[root@node01 u01]# cd /u01
[root@node01 u01]# mv node-v8.10.0-linux-x64 node-v8.10.0
[root@node01 u01]# vi /etc/profile
export NODE_HOME=/u01/node-v8.10.0
export PATH=$PATH:$NODE_HOME/bin
[root@node01 u01]# source /etc/profile
[root@node01 u01]# cd /u02
[root@node01 u02]# cd azkaban-3.90.0
[root@node01 azkaban-3.90.0]# cd azkaban-web-server
[root@node01 azkaban-web-server]# vi build.gradle
//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}")
//}
[root@node01 azkaban-web-server]# cd ..
[root@node01 azkaban-3.90.0]#  gradle build -x test
[root@node01 azkaban-3.90.0]# cd azkaban-web-server
[root@node01 azkaban-web-server]# cd build
[root@node01 build]# cd dis*
[root@node01 distributions]# ls
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz  azkaban-web-server-0.1.0-SNAPSHOT.zip

[root@node01 azkaban-3.90.0]# cd azkaban-exec-server
[root@node01 azkaban-exec-server]# ls
build  build.gradle  src
[root@node01 azkaban-exec-server]# cd build
[root@node01 build]# ls
classes  distributions  libs  resources  tmp
[root@node01 build]# cd dis*
[root@node01 distributions]# ls
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz  azkaban-exec-server-0.1.0-SNAPSHOT.zip
  1. 复制文件。
    根据服务器规划,将对应的文件复制到不同的服务器中。
    复制azkaban-web-server-0.1.0-SNAPSHOT.tar.gz到u02目录下,并修改文件的所有者为jack
    复制azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz文件到node01和node02服务器的u02目录下,并修改文件的所有者为jack。
    分别解压缩放到/u01/azkaban/azkaban-web-server 和 /u01/azkaban/azkaban-exec-server目录下
[root@node01 azkaban-3.90.0]# pwd
/u01/azkaban-3.90.0
[root@node01 azkaban-3.90.0]# cp -r */build/distributions/*.tar.gz /u02
[root@node01 azkaban-3.90.0]# cd ..
[root@node01 u02]$ chown jack:jack azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 
[root@node01 u02]$ su jack
[jack@node01 u02]# tar -xvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /u01/azkaban
[jack@node01 u02]# scp azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz jack@node02:/u02

[jack@node01 u02]# ssh node02
[jack@node02 ~]# cd /u02
[jack@node02 u02]# tar -xvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /u01/azkaban
[jack@node02 u02]# exit

[jack@node01 u02]# scp azkaban-web-server-0.1.0-SNAPSHOT.tar.gz jack@node03:/u02

[jack@node01 u02]# ssh node03
[jack@node03 ~]# cd /u02
[jack@node03 u02]# tar -xvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /u01/azkaban
[jack@node03 u02]# exit

四、初始化数据库

  1. 用工具创建数据库azkaban,字符集:utf-8,排序规则:utf8_general_ci。
  2. 导入表,在Navicat 界面的工具类点击“新建查询”,选择数据库azkaban,将azkaban-db/build/sql目录下的sql下载,再复制到该界面,点击运行。或者通过导入sql也可以。
[jack@node01 u02]$ cd /u02/azkaban-3.90.0/azkaban-db/build/sql
[jack@node01 sql]$ ls
create-all-sql-0.1.0-SNAPSHOT.sql

在这里插入图片描述

五、Azkaban配置与启动

  1. 修改azkaban-exec-server的azkaban.properties文件:具体见附件
  2. 修改azkaban-web-server的azkaban.properties文件:具体见附件
  3. 修改azkaban-web-server的azkaban-users.xml文件:具体见附件
    添加用户jack,密码jack
  4. 启动azkaban-exec-server
[jack@node01 u01]# cd /u01/azkaban/azkaban-exec-server
[jack@node01 azkaban-exec-server]# ./bin/start-exec.sh

启动azkaban-exec-server后会生成executor.port文件,存放exec端口:******,需要激活。

[root@node01 azkaban-3.90.0]# curl http://node01:******/executor?action=activate

同样在node02相同的操作。
5. 启动azkaban-web-server

[jack@node03 u01]# cd /u01/azkaban/azkaban-web-server
[jack@node03 azkaban-web-server]# ./bin/start-web.sh
  1. Web访问:
    地址:http://node03:6061/index
    端口号在 azkaban.properties 文件中配置

六、Azkaban使用

上节开发了模拟用户行为数据的程序(jar 文件在第四节下载),本示例使用它在azkaban中定时运行。

  1. 编写shell文件
    目录:存放在/u01/gmall/bin目录下
    jar目录: /u01/gmall/jar
    名称:logdata_collector.sh
    权限:可执行
    内容如下:
#!/bin/bash

pgmName=`basename $0`
pgmName=${pgmName##*/}    # remove the path
pgmExt=${pgmName##*.}     # get the extension
pgmName=${pgmName%.*}     # get the program name
exeDate=`date +"%h_%d"`   # get the execution date

jar_home=/u01/gmall/jar
USAGE="Usage: $pgmName.$pgmExt \n"

java -jar ${jar_home}/logdata-collector-1.0.0-jar-with-dependencies.jar
  1. 在windows下,创建zip文件
    2.1 创建logdata_collector目录
    2.2 创建logdata_collector.project文件,内容如下:
    azkaban-flow-version: 2.0

    2.3 创建logdata_collector.flow文件,内容如下:
nodes:
  - name: logdata_collector
    type: command
    config:
      command: /u01/gmall/bin/logdata_collector.sh
  1. 打包压缩为zip文件
  2. 登录azkaban,创建项目,输入项目名称,项目描述
    项目名:logdata_collector
    描述:logdata_collector
  3. 上传打包的zip文件
    在这里插入图片描述
  4. 设置定时任务
    选择Execute Flow 按钮,弹出界面选择左下角的Schedule,设置运行时间,比如每天22点30分运行。点击Schedule即可。
    在这里插入图片描述

电商数仓项目(一) 系统规划和配置
电商数仓项目(二) Maven 安装和hadoop-lzo编译
电商数仓项目(三) hadoop3.2.2 安装与配置
电商数仓项目(四) 模拟电商日志数据开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值