Azkaban学习——单机版安装与部署

news2024/11/22 14:42:31

目录

1.解压改名

2.修改装有mysql的虚拟机的my.cnf文件

3.重启装有mysql的虚拟机

4.Datagrip创建azkaban数据库,执行脚本文件

5.修改/opt/soft/azkaban-exec/conf/azkaban.properties文件

6.修改commonprivate.properties

7.传入mysql-connector-java-8.0.29.jar

8.开启Azkaban服务

9.进入Datagrip查看是否成功激活

10.激活executor

11.修改/opt/soft/azkaban-web/conf/azkaban.properties文件

12.修改/opt/soft/azkaban-web/conf/azkaban-users.xml文件

13.复制mysql-connector-java-8.0.29.jar

14.开启AzkabanWeb工程

15.浏览器打开Azkaban服务

16.Azkaban的关闭


1.解压改名

注意:安装Azkaban尽量与安装了mysql的机器避开

[root@lxm147 install]# tar -zxf azkaban-db-3.84.4.tar.gz -C /opt/soft/
[root@lxm147 install]# tar -zxf azkaban-exec-server-3.84.4.tar.gz -C /opt/soft/
[root@lxm147 install]# tar -zxf azkaban-web-server-3.84.4.tar.gz -C /opt/soft/


[root@lxm147 soft]# mv azkaban-db-0.1.0-SNAPSHOT/ azkaban-db
[root@lxm147 soft]# mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec
[root@lxm147 soft]# mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web

2.修改装有mysql的虚拟机的my.cnf文件

进入/opt/soft/mysql8目录下,修改my.cnf文件,第31行

 31 max_allowed_packet = 1024M

3.重启装有mysql的虚拟机

[root@localhost mysql8]# shutdown -r now
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.
Connection closing...Socket close.

# 或者
[root@localhost mysql8]# service mysqld restart

4.Datagrip创建azkaban数据库,执行脚本文件

Datagrip连接mysql数据库,执行以下命令:

create database if not exists azkaban;

use azkaban;

CREATE TABLE active_executing_flows (
  exec_id     INT,
  update_time BIGINT,
  PRIMARY KEY (exec_id)
);
CREATE TABLE active_sla (
  exec_id    INT          NOT NULL,
  job_name   VARCHAR(128) NOT NULL,
  check_time BIGINT       NOT NULL,
  rule       TINYINT      NOT NULL,
  enc_type   TINYINT,
  options    LONGBLOB     NOT NULL,
  PRIMARY KEY (exec_id, job_name)
);
CREATE TABLE execution_dependencies(
  trigger_instance_id varchar(64),
  dep_name varchar(128),
  starttime bigint(20) not null,
  endtime bigint(20),
  dep_status tinyint not null,
  cancelleation_cause tinyint not null,

  project_id INT not null,
  project_version INT not null,
  flow_id varchar(128) not null,
  flow_version INT not null,
  flow_exec_id INT not null,
  primary key(trigger_instance_id, dep_name)
);

CREATE INDEX ex_end_time
  ON execution_dependencies (endtime);
CREATE TABLE execution_flows (
  exec_id     INT          NOT NULL AUTO_INCREMENT,
  project_id  INT          NOT NULL,
  version     INT          NOT NULL,
  flow_id     VARCHAR(128) NOT NULL,
  status      TINYINT,
  submit_user VARCHAR(64),
  submit_time BIGINT,
  update_time BIGINT,
  start_time  BIGINT,
  end_time    BIGINT,
  enc_type    TINYINT,
  flow_data   LONGBLOB,
  executor_id INT                   DEFAULT NULL,
  use_executor INT                  DEFAULT NULL,
  flow_priority TINYINT    NOT NULL DEFAULT 5,
  PRIMARY KEY (exec_id)
);

CREATE INDEX ex_flows_start_time
  ON execution_flows (start_time);
CREATE INDEX ex_flows_end_time
  ON execution_flows (end_time);
CREATE INDEX ex_flows_time_range
  ON execution_flows (start_time, end_time);
CREATE INDEX ex_flows_flows
  ON execution_flows (project_id, flow_id);
CREATE INDEX executor_id
  ON execution_flows (executor_id);
CREATE INDEX ex_flows_staus
  ON execution_flows (status);
CREATE TABLE execution_jobs (
  exec_id       INT          NOT NULL,
  project_id    INT          NOT NULL,
  version       INT          NOT NULL,
  flow_id       VARCHAR(128) NOT NULL,
  job_id        VARCHAR(512) NOT NULL,
  attempt       INT,
  start_time    BIGINT,
  end_time      BIGINT,
  status        TINYINT,
  input_params  LONGBLOB,
  output_params LONGBLOB,
  attachments   LONGBLOB,
  PRIMARY KEY (exec_id, job_id, flow_id, attempt)
);

CREATE INDEX ex_job_id
  ON execution_jobs (project_id, job_id);
-- In table execution_logs, name is the combination of flow_id and job_id
--
-- prefix support and lengths of prefixes (where supported) are storage engine dependent.
-- By default, the index key prefix length limit is 767 bytes for innoDB.
-- from: https://dev.mysql.com/doc/refman/5.7/en/create-index.html

CREATE TABLE execution_logs (
  exec_id     INT NOT NULL,
  name        VARCHAR(640),
  attempt     INT,
  enc_type    TINYINT,
  start_byte  INT,
  end_byte    INT,
  log         LONGBLOB,
  upload_time BIGINT,
  PRIMARY KEY (exec_id, name, attempt, start_byte)
);

CREATE INDEX ex_log_attempt
  ON execution_logs (exec_id, name, attempt);
CREATE INDEX ex_log_index
  ON execution_logs (exec_id, name);
CREATE INDEX ex_log_upload_time
  ON execution_logs (upload_time);
CREATE TABLE executor_events (
  executor_id INT      NOT NULL,
  event_type  TINYINT  NOT NULL,
  event_time  DATETIME NOT NULL,
  username    VARCHAR(64),
  message     VARCHAR(512)
);

CREATE INDEX executor_log
  ON executor_events (executor_id, event_time);
CREATE TABLE executors (
  id     INT         NOT NULL PRIMARY KEY AUTO_INCREMENT,
  host   VARCHAR(64) NOT NULL,
  port   INT         NOT NULL,
  active BOOLEAN                          DEFAULT FALSE,
  UNIQUE (host, port)
);

CREATE INDEX executor_connection
  ON executors (host, port);
CREATE TABLE project_events (
  project_id INT     NOT NULL,
  event_type TINYINT NOT NULL,
  event_time BIGINT  NOT NULL,
  username   VARCHAR(64),
  message    VARCHAR(512)
);

CREATE INDEX log
  ON project_events (project_id, event_time);
CREATE TABLE project_files (
  project_id INT NOT NULL,
  version    INT NOT NULL,
  chunk      INT,
  size       INT,
  file       LONGBLOB,
  PRIMARY KEY (project_id, version, chunk)
);

CREATE INDEX file_version
  ON project_files (project_id, version);
CREATE TABLE project_flow_files (
  project_id        INT          NOT NULL,
  project_version   INT          NOT NULL,
  flow_name         VARCHAR(128) NOT NULL,
  flow_version      INT          NOT NULL,
  modified_time     BIGINT       NOT NULL,
  flow_file         LONGBLOB,
  PRIMARY KEY (project_id, project_version, flow_name, flow_version)
);
CREATE TABLE project_flows (
  project_id    INT    NOT NULL,
  version       INT    NOT NULL,
  flow_id       VARCHAR(128),
  modified_time BIGINT NOT NULL,
  encoding_type TINYINT,
  json          MEDIUMBLOB,
  PRIMARY KEY (project_id, version, flow_id)
);

CREATE INDEX flow_index
  ON project_flows (project_id, version);
CREATE TABLE project_permissions (
  project_id    VARCHAR(64) NOT NULL,
  modified_time BIGINT      NOT NULL,
  name          VARCHAR(64) NOT NULL,
  permissions   INT         NOT NULL,
  isGroup       BOOLEAN     NOT NULL,
  PRIMARY KEY (project_id, name, isGroup)
);

CREATE INDEX permission_index
  ON project_permissions (project_id);
CREATE TABLE project_properties (
  project_id    INT    NOT NULL,
  version       INT    NOT NULL,
  name          VARCHAR(255),
  modified_time BIGINT NOT NULL,
  encoding_type TINYINT,
  property      BLOB,
  PRIMARY KEY (project_id, version, name)
);

CREATE INDEX properties_index
  ON project_properties (project_id, version);
CREATE TABLE project_versions (
  project_id           INT           NOT NULL,
  version              INT           NOT NULL,
  upload_time          BIGINT        NOT NULL,
  uploader             VARCHAR(64)   NOT NULL,
  file_type            VARCHAR(16),
  file_name            VARCHAR(128),
  md5                  BINARY(16),
  num_chunks           INT,
  resource_id          VARCHAR(512)  DEFAULT NULL,
  startup_dependencies MEDIUMBLOB    DEFAULT NULL,
  uploader_ip_addr     VARCHAR(50)   DEFAULT NULL,
  PRIMARY KEY (project_id, version)
);

CREATE INDEX version_index
  ON project_versions (project_id);
CREATE TABLE projects (
  id               INT         NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name             VARCHAR(64) NOT NULL,
  active           BOOLEAN,
  modified_time    BIGINT      NOT NULL,
  create_time      BIGINT      NOT NULL,
  version          INT,
  last_modified_by VARCHAR(64) NOT NULL,
  description      VARCHAR(2048),
  enc_type         TINYINT,
  settings_blob    LONGBLOB
);

CREATE INDEX project_name
  ON projects (name);
CREATE TABLE properties (
  name          VARCHAR(64) NOT NULL,
  type          INT         NOT NULL,
  modified_time BIGINT      NOT NULL,
  value         VARCHAR(256),
  PRIMARY KEY (name, type)
);
-- This file collects all quartz table create statement required for quartz 2.2.1
--
-- We are using Quartz 2.2.1 tables, the original place of which can be found at
-- https://github.com/quartz-scheduler/quartz/blob/quartz-2.2.1/distribution/src/main/assembly/root/docs/dbTables/tables_mysql.sql


DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
DROP TABLE IF EXISTS QRTZ_LOCKS;
DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
DROP TABLE IF EXISTS QRTZ_CALENDARS;


CREATE TABLE QRTZ_JOB_DETAILS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    JOB_NAME  VARCHAR(200) NOT NULL,
    JOB_GROUP VARCHAR(200) NOT NULL,
    DESCRIPTION VARCHAR(250) NULL,
    JOB_CLASS_NAME   VARCHAR(250) NOT NULL,
    IS_DURABLE VARCHAR(1) NOT NULL,
    IS_NONCONCURRENT VARCHAR(1) NOT NULL,
    IS_UPDATE_DATA VARCHAR(1) NOT NULL,
    REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
    JOB_DATA BLOB NULL,
    PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
);

CREATE TABLE QRTZ_TRIGGERS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    TRIGGER_NAME VARCHAR(200) NOT NULL,
    TRIGGER_GROUP VARCHAR(200) NOT NULL,
    JOB_NAME  VARCHAR(200) NOT NULL,
    JOB_GROUP VARCHAR(200) NOT NULL,
    DESCRIPTION VARCHAR(250) NULL,
    NEXT_FIRE_TIME BIGINT(13) NULL,
    PREV_FIRE_TIME BIGINT(13) NULL,
    PRIORITY INTEGER NULL,
    TRIGGER_STATE VARCHAR(16) NOT NULL,
    TRIGGER_TYPE VARCHAR(8) NOT NULL,
    START_TIME BIGINT(13) NOT NULL,
    END_TIME BIGINT(13) NULL,
    CALENDAR_NAME VARCHAR(200) NULL,
    MISFIRE_INSTR SMALLINT(2) NULL,
    JOB_DATA BLOB NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
        REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
);

CREATE TABLE QRTZ_SIMPLE_TRIGGERS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    TRIGGER_NAME VARCHAR(200) NOT NULL,
    TRIGGER_GROUP VARCHAR(200) NOT NULL,
    REPEAT_COUNT BIGINT(7) NOT NULL,
    REPEAT_INTERVAL BIGINT(12) NOT NULL,
    TIMES_TRIGGERED BIGINT(10) NOT NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
        REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);

CREATE TABLE QRTZ_CRON_TRIGGERS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    TRIGGER_NAME VARCHAR(200) NOT NULL,
    TRIGGER_GROUP VARCHAR(200) NOT NULL,
    CRON_EXPRESSION VARCHAR(200) NOT NULL,
    TIME_ZONE_ID VARCHAR(80),
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
        REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);

CREATE TABLE QRTZ_SIMPROP_TRIGGERS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    TRIGGER_NAME VARCHAR(200) NOT NULL,
    TRIGGER_GROUP VARCHAR(200) NOT NULL,
    STR_PROP_1 VARCHAR(512) NULL,
    STR_PROP_2 VARCHAR(512) NULL,
    STR_PROP_3 VARCHAR(512) NULL,
    INT_PROP_1 INT NULL,
    INT_PROP_2 INT NULL,
    LONG_PROP_1 BIGINT NULL,
    LONG_PROP_2 BIGINT NULL,
    DEC_PROP_1 NUMERIC(13,4) NULL,
    DEC_PROP_2 NUMERIC(13,4) NULL,
    BOOL_PROP_1 VARCHAR(1) NULL,
    BOOL_PROP_2 VARCHAR(1) NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);

CREATE TABLE QRTZ_BLOB_TRIGGERS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    TRIGGER_NAME VARCHAR(200) NOT NULL,
    TRIGGER_GROUP VARCHAR(200) NOT NULL,
    BLOB_DATA BLOB NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
        REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);

CREATE TABLE QRTZ_CALENDARS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    CALENDAR_NAME  VARCHAR(200) NOT NULL,
    CALENDAR BLOB NOT NULL,
    PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
);

CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    TRIGGER_GROUP  VARCHAR(200) NOT NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
);

CREATE TABLE QRTZ_FIRED_TRIGGERS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    ENTRY_ID VARCHAR(95) NOT NULL,
    TRIGGER_NAME VARCHAR(200) NOT NULL,
    TRIGGER_GROUP VARCHAR(200) NOT NULL,
    INSTANCE_NAME VARCHAR(200) NOT NULL,
    FIRED_TIME BIGINT(13) NOT NULL,
    SCHED_TIME BIGINT(13) NOT NULL,
    PRIORITY INTEGER NOT NULL,
    STATE VARCHAR(16) NOT NULL,
    JOB_NAME VARCHAR(200) NULL,
    JOB_GROUP VARCHAR(200) NULL,
    IS_NONCONCURRENT VARCHAR(1) NULL,
    REQUESTS_RECOVERY VARCHAR(1) NULL,
    PRIMARY KEY (SCHED_NAME,ENTRY_ID)
);

CREATE TABLE QRTZ_SCHEDULER_STATE
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    INSTANCE_NAME VARCHAR(200) NOT NULL,
    LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
    CHECKIN_INTERVAL BIGINT(13) NOT NULL,
    PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
);

CREATE TABLE QRTZ_LOCKS
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    LOCK_NAME  VARCHAR(40) NOT NULL,
    PRIMARY KEY (SCHED_NAME,LOCK_NAME)
);


commit;
CREATE TABLE ramp (
    rampId VARCHAR(45) NOT NULL,
    rampPolicy VARCHAR(45) NOT NULL,
    maxFailureToPause INT NOT NULL DEFAULT 0,
    maxFailureToRampDown INT NOT NULL DEFAULT 0,
    isPercentageScaleForMaxFailure TINYINT NOT NULL DEFAULT 0,
    startTime BIGINT NOT NULL DEFAULT 0,
    endTime BIGINT NOT NULL DEFAULT 0,
    lastUpdatedTime BIGINT NOT NULL DEFAULT 0,
    numOfTrail INT NOT NULL DEFAULT 0,
    numOfFailure INT NOT NULL DEFAULT 0,
    numOfSuccess INT NOT NULL DEFAULT 0,
    numOfIgnored INT NOT NULL DEFAULT 0,
    isPaused TINYINT NOT NULL DEFAULT 0,
    rampStage TINYINT NOT NULL DEFAULT 0,
    isActive TINYINT NOT NULL DEFAULT 0,
    PRIMARY KEY (rampId)
);

CREATE INDEX idx_ramp
    ON ramp (rampId);
CREATE TABLE ramp_dependency (
    dependency VARCHAR(45) NOT NULL,
    defaultValue VARCHAR (500),
    jobtypes VARCHAR (1000),
    PRIMARY KEY (dependency)
);

CREATE INDEX idx_ramp_dependency
  ON ramp_dependency(dependency);
CREATE TABLE ramp_exceptional_flow_items (
    rampId VARCHAR(45) NOT NULL,
    flowId VARCHAR(128) NOT NULL,
    treatment VARCHAR(1) NOT NULL,
    timestamp BIGINT NULL,
    PRIMARY KEY (rampId, flowId)
);

CREATE INDEX idx_ramp_exceptional_flow_items
    ON ramp_exceptional_flow_items (rampId, flowId);
CREATE TABLE ramp_exceptional_job_items (
    rampId VARCHAR(45) NOT NULL,
    flowId VARCHAR(128) NOT NULL,
    jobId VARCHAR(128) NOT NULL,
    treatment VARCHAR(1) NOT NULL,
    timestamp BIGINT NULL,
    PRIMARY KEY (rampId, flowId, jobId)
);

CREATE INDEX idx_ramp_exceptional_job_items
    ON ramp_exceptional_job_items (rampId, flowId, jobId);
CREATE TABLE ramp_items (
  rampId VARCHAR(45) NOT NULL,
  dependency VARCHAR(45) NOT NULL,
  rampValue VARCHAR (500) NOT NULL,
  PRIMARY KEY (rampId, dependency)
);

CREATE INDEX idx_ramp_items
    ON ramp_items (rampId, dependency);
CREATE TABLE triggers (
  trigger_id     INT    NOT NULL AUTO_INCREMENT,
  trigger_source VARCHAR(128),
  modify_time    BIGINT NOT NULL,
  enc_type       TINYINT,
  data           LONGBLOB,
  PRIMARY KEY (trigger_id)
);
CREATE TABLE validated_dependencies (
  file_name         VARCHAR(128),
  file_sha1         CHAR(40),
  validation_key    CHAR(40),
  validation_status INT,
  PRIMARY KEY (validation_key, file_name, file_sha1)
);

5.修改/opt/soft/azkaban-exec/conf/azkaban.properties文件

vim /opt/soft/azkaban-exec/conf/azkaban.properties

7 default.timezone.id=Asia/Shanghai

21 azkaban.webserver.url=http://192.168.180.147:8081

44 mysql.host=192.168.180.141

45 mysql.database=azkaban

46 mysql.user=root

47 mysql.password=root

52 executor.port=12321

6.修改commonprivate.properties

[root@lxm147 jobtypes]# vim /opt/soft/azkaban-exec/plugins/jobtypes/commonprivate.properties

3 azkaban.native.lib=false

7.传入mysql-connector-java-8.0.29.jar

进入/opt/soft/azkaban-exec/lib目录下

[root@lxm147 lib]# cp /opt/soft/hive312/lib/mysql-connector-java-8.0.29.jar /opt/soft/azkaban-exec/lib

[root@lxm147 lib]# rm -rf /opt/soft/azkaban-exec/lib/mysql-connector-java-5.1.28.jar

8.开启Azkaban服务

进入 /opt/soft/azkaban-exec/bin目录下
[root@lxm147 bin]# ./start-exec.sh

[root@lxm147 bin]# jps
1520 NameNode
1843 SecondaryNameNode
4820 JobHistoryServer
2822 RunJar
2153 ResourceManager
2313 NodeManager
32202 AzkabanExecutorServer
32218 Jps
1644 DataNode
2700 RunJar

9.进入Datagrip查看是否成功激活

use azkaban;
select * from executors;

10.激活executor

[root@lxm147 bin]# curl -G "192.168.180.147:12321/executor?action=activate" && echo
{"status":"success"}

激活成功(忽略我的id,因为已经启动过很多次了)

11.修改/opt/soft/azkaban-web/conf/azkaban.properties文件

vim /opt/soft/azkaban-web/conf/azkaban.properties 

7 default.timezone.id=Asia/Shanghai

41 mysql.host=192.168.180.141

42 mysql.database=azkaban

43 mysql.user=root

44 mysql.password=root

48 # MinimumFreeMemory 默认6G,实际服务器内存如果小于此值不启动

49 azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus

12.修改/opt/soft/azkaban-web/conf/azkaban-users.xml文件

vim /opt/soft/azkaban-web/conf/azkaban-users.xml 

<azkaban-users>
  <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
  <user password="metrics" roles="metrics" username="metrics"/>
  <user password="123456" roles="admin" username="kb21"/>

  <role name="admin" permissions="ADMIN"/>
  <role name="metrics" permissions="METRICS"/>
</azkaban-users>

13.复制mysql-connector-java-8.0.29.jar

进入/opt/soft/azkaban-web/lib目录下

[root@lxm147 lib]# cp /opt/soft/hive312/lib/mysql-connector-java-8.0.29.jar /opt/soft/azkaban-web/lib

[root@lxm147 lib]# rm -rf ./mysql-connector-java-5.1.28.jar 

14.开启AzkabanWeb工程

进入/opt/soft/azkaban-web目录下

注意:这里不要进入到bin目录下执行start-web.sh命令,因为conf/azkaban-users.xml目录中的某些文件路径是在/conf上面的

[root@lxm147 azkaban-web]# ./bin/start-web.sh 
[root@lxm147 azkaban-web]# jps
1520 NameNode
32321 AzkabanExecutorServer
1843 SecondaryNameNode
4820 JobHistoryServer
32421 AzkabanWebServer
2822 RunJar
32439 Jps
2153 ResourceManager
2313 NodeManager
1644 DataNode
2700 RunJar

15.浏览器打开Azkaban服务

浏览器输入localhost:8081,如果有下面的页面弹出,就说明Azkaban真正启动,如果没有,可以看看有没有遗漏的步骤,或者写错的单词。

登录的用户名和密码就是步骤11新增的

16.Azkaban的关闭

我们之前开启的顺序是:

# 进入 /opt/soft/azkaban-exec/bin目录下
[root@lxm147 bin]# ./start-exec.sh

[root@lxm147 bin]# curl -G "192.168.180.147:12321/executor?action=activate" && echo
{"status":"success"}

# 进入 /opt/soft/azkaban-web目录下
[root@lxm147 azkaban-web]# ./bin/start-web.sh 

关闭服务要反着来:

# 先关闭web
[root@lxm147 ~]# cd /opt/soft/azkaban-web/

[root@lxm147 azkaban-web]# ./bin/shutdown-web.sh 
Killing web-server. [pid: 15971], attempt: 1
shutdown succeeded

[root@lxm147 azkaban-web]# jps
15937 AzkabanExecutorServer
23110 Jps

# 再关闭exec
[root@lxm147 azkaban-web]# cd /opt/soft/azkaban-exec/

[root@lxm147 azkaban-exec]# ./bin/shutdown-exec.sh 
Killing executor. [pid: 15937], attempt: 1
shutdown succeeded

[root@lxm147 azkaban-exec]# jps
23139 Jps

关于Azkaban的使用,后面会写,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最简单的helm教程

最简单的Helm教程 学习前置条件 你得了解Kubernetes&#xff0c;拥有实际的使用经验那是最好不过了 Helm是什么&#xff1f; 我们打开Helm的官网&#xff1a;Helm的官网 可以看到官网的第一页就告诉了我们Helm是什么。 **Helm是Kubernetes&#xff08;k8s&#xff09;的包…

第十二届蓝桥杯青少组省赛Python真题,包含答案

目录 一、选择题 二、编程题 第十二届蓝桥杯青少组省赛Python真题 一、选择题 第 1 题 单选题 设s="Hello Lan Qiao,执行print(s[4:11])输出的结果为 () 答案:D 第 2 题 单选题 循环语句for iin range (8,4,2) : 执行了几次循环 ()

进腾讯了,38k....

大家好&#xff0c;最近有一位老同学成功去了腾讯&#xff0c;特意找他要了一些面试相关的资料&#xff0c;内容涵盖测试理论、Linux基础、MySQL基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等质量非常高&#xff01;&…

SM2椭圆曲线公钥密码算法--密钥对与数字签名

1. SM2国密算法介绍 SM2算法全称是SM2椭圆曲线公钥密码算法&#xff08;SM是商用密码的拼音缩写&#xff09;&#xff0c;是一种基于“椭圆曲线”的密码ECC(Elliptic Curve Cryptography)。2016年&#xff0c;SM2成为中国国家密码标准。 在商用密码体系中&#xff0c;SM2主要用…

超详细,多图 PVE 安装 OpenWRT 教程(个人记录)

前言 - 写这个的目的是因为本人健忘所以做个记录以便日后再折腾时查阅。 - 本人笔拙如有选词&#xff0c;错字&#xff0c;语法&#xff0c;标点错误请忽视&#xff0c;大概率不会修改&#xff0c;我自己能看懂就好。 - 内容仅适用于本人的使用环境&#xff0c;不同环境请忽…

Java --- redis7之布隆过滤器BloomFilter

目录 一、布隆过滤器BloomFilter 1.1、面试题 1.2、 布隆过滤器简介 1.2.1、设计思想 1.3、特点 1.4、布隆过滤器原理 1.4.1、实现原理与数据结构 1.4.2、添加key、查询key 1.4.3、hash冲突导致数据不精准 1.4.4、三步骤 1.4.5、布隆过滤器误判&#xff0c;为什么不…

使用ncnn在树莓派4B上部署nanoDet-m网络(12fps)

1. 背景 在机器人的应用中&#xff0c;目标检测是一个重要的课题。深度学习的快速发展&#xff0c;在检测的效果方面对比大多数传统检测算法&#xff0c;都有明显的优势。但是将深度学习模型部署到端侧设备上&#xff0c;实现高效的推理&#xff0c;同样是一个问题很多的领域。…

1099 Build A Binary Search Tree(超详细注解+38行代码)

分数 30 全屏浏览题目 作者 CHEN, Yue 单位 浙江大学 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the nodes key.The right subtree…

Word+ChatGPT,一分钟完成周报总结作文

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加&#xff1a;keeepdance&#xff0c;备注&#xff1a;chatgpt&#xff0c;拉你进群。 Office 的办公软件Word&#xff0c;是我们日常的文字工作的阵地。与ChatGPT的文字生成…

自学黑客【网络安全】,一般人我劝你还是算了吧

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我一直强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而且实际向安全过渡后可用到的关键…

6 # 实现简单的 promise

什么是 Promise &#xff1f; 在 JavaScript 中&#xff0c;Promise 是一种用于处理异步操作的对象&#xff0c;它可以更加优雅地处理回调函数嵌套和错误处理。 promise es6已经内部实现了&#xff0c; ie 不兼容 promise&#xff0c;需要 polyfill &#xff08;比如&#xf…

C++学习记录——이십이 红黑树

文章目录 1、了解概念2、模拟实现1、插入2、插入代码3、测试是否是红黑树 3、封装map、set 1、了解概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结…

Dcip的学习1-计算器

文章目录 前言一、配置安装环境1.1 网址1.2 再次打开需要进行的操作1.3 NodeJS控制台的操作1.4 出现的页面 二、Dcip生成计算器2.1 软件的基本单位 - Unitform中添加内容 2.2 OnleftChange(); 前言 只是为方便学习&#xff0c;不做其他用途&#xff0c; 一、配置安装环境 1.1 …

Jetpack之Navigation技术解密

Navigation是什么 官方的话&#xff1a; Navigation 是一个框架&#xff0c;用于在 Android 应用中的“目标”之间导航&#xff0c;该框架提供一致的 API&#xff0c;无论目标是作为 Fragment、Activity 还是其他组件实现。 自己的话&#xff1a; Navigation是管理Fragment…

win11、VS2019下配置PCL1.11.1

1、PCL安装配置 下载pcl-1.11.1-pdb-msvc2019-win64与PCL-1.11.1-AllInOne-msvc2019-win64.exe文件。以管理员身份运行PCL-1.11.1-AllInOne-msvc2019-win64.exe程序&#xff0c;截图如下&#xff1a; 安装过程中没有弹出OpenNI2的安装&#xff0c;但是要安装在3rdParty下&#…

MySQL空间查询

MySQL空间查询 文章目录 MySQL空间查询1. 空间数据支持2. 空间函数支持3. 操作示例3.1 创建表结构3.2 插入数据3.3 查询空间相交数据 4. 参考链接 1. 空间数据支持 MySQL 具有对应于 OpenGIS 类的空间数据类型。一些空间数据类型包含单个几何值&#xff1a; GEOMETRYPOINTLIN…

PCS-2022-VVC中帧内和帧间预测的统一快速划分算法

本文来自PCS 2022的论文《Unified Fast Partitioning Algorithm for Intra and Inter Predictions in Versatile Video Coding》 介绍 VVC (Versatile Video Coding) 标准采用了比HEVC (High Efficiency Video Coding) 标准更灵活的划分结构&#xff0c;在HEVC的四叉树划分结构…

前端CSS经典面试题总结

前端CSS经典面试题总结 2.1 介绍一 下 CSS 的盒子模型&#xff1f;2.2 css 选择器优先级&#xff1f;2.3 垂直居中几种方式&#xff1f;2.4 简明说一下 CSS link 与 import 的区别和用法&#xff1f;2.5 rgba和opacity的透明效果有什么不同&#xff1f;2.6 display:none和visib…

在大模型的喧嚣中,SAS向企业AI押注70亿

ChatGPT和GPT所代表的大模型&#xff0c;已经在国内形成了海啸效应&#xff0c;几乎所有顶级科技企业都在想方设法进入大模型赛道。大模型的最大价值在于普遍提升个人生产力&#xff0c;而各行各业的公司都在积极寻找应用大模型和生成式AI的机会&#xff0c;以普遍提升全员生产…

IntelliJ IDEA 安装及配置详细教程

IDEAIntelliJ IDEA 安装及配置详细教程 1、下载2、安装3、IDEA使用设置3.1 进入设置界面3.2 JDK配置3.3 主题样式设置3.4 字体样式设置3.5 编辑器背景颜色设置3.6 字符集和配置文件编码格式设置3.7 设置鼠标悬浮提示 4、idea配置maven5、idea创建springboot工程 IntelliJ IDEA …