自动化定时调度之Azkaban部署及使用
来源:互联网 发布:c语言在线编译 输入 编辑:程序博客网 时间:2024/06/06 09:55
azkaban的部署使用及如何结合项目的使用思考
1 部署azkaban
1.1 准备工作,下载相关安装包,这里我使用的是2.5版本的
官方:http://azkaban.github.io/downloads.html
还需要一个jdbc的连接jar包:
链接:http://pan.baidu.com/s/1dFe8avJ 密码:0pjh
我参考了这两篇文章进行部署:
http://www.cnblogs.com/whtydn/p/4353695.html
http://blog.javachen.com/2014/08/25/install-azkaban.html
1.2 设置数据库相关配置:
- 安装Mysql 具体安装过程可参考相关资料,比如http://ifalone.me/305.html ,http://dev.mysql.com/doc/index.html
- 为Azkaban创建数据库,其中数据库名字不一定是azkabanmysql> CREATE DATABASE azkaban;
- 创建Azkaban数据库的用户,其中用户名字不一定是azkabanmysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY '123456';
- 增加azkaban用户对azkaban数据库的增删改查权限 mysql> GRANT ALL ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
- 配置完重启MYSQL
- 创建Azkaba需要的数据库表,将azkaban-sql-script-2.5.tar.gz解压,执行create-all-sql脚本即可
- 获取JDBC连接器mysql-connector-java-5.1.25.tar.gz, mysql-connector-java-5.1.25.tar.gz需要在webserver和excutorserver安装完后,分别拷入 Azkaban-web/extlib和azkaban-excutorserver/extlib
azkaban 密码 123456 下面继续安装1.3 安装 web server
将azkaban-web-server-2.5.tar.gz解压到合适目录,如azkaban-web
解压完应该有如下文件目录
Folder Description
bin 运行 Azkaban jetty server的脚本
conf Azkaban web server的配置文件
lib Azkaban依赖的jar包
extlib 放入到这个目录的jar包会被添加Azkaban的classpath
plugins 插件安装在此目录
web Azkaban web server的相关css,html等文件
进入到 azkban-web目录:
获取SSL需要的keystore。此处尤其注意要用java的keytool工具
执行:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
得到keystore即可:
这里我的密码都是输入的password(系统默认密码就是这个,省的修改了)
修改conf下的 azkaban.properties 配置文件:
a. 修改时区和首页名称:
# Azkaban Personalization Settingsazkaban.name=Solr Taskazkaban.label=By Sageazkaban.color=#FF3601azkaban.default.servlet.path=/indexweb.resource.dir=web/default.timezone.id=Asia/Shanghai
b. 修改 MySql 数据库配置
database.type=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkabanmysql.user=azkabanmysql.password=123456mysql.numconnections=100
c. 修改 Jetty 服务器属性,包括 keystore 的相关配置
# Azkaban Jetty server properties.jetty.hostname=0.0.0.0jetty.maxThreads=25jetty.ssl.port=8443jetty.port=8443jetty.keystore=keystorejetty.password=passwordjetty.keypassword=passwordjetty.truststore=keystorejetty.trustpassword=password
d. 修改邮件设置(可选)
# mail settingsmail.sender=admin@javachen.commail.host=javachen.commail.user=adminmail.password=admin
进入 azkaban web 服务器 conf 目录,修改 azkaban-users.xml ,增加管理员用户:
<azkaban-users> <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" /> <user username="metrics" password="metrics" roles="metrics"/> <user username="admin" password="admin" roles="admin,metrics" /> <role name="admin" permissions="ADMIN" /> <role name="metrics" permissions="METRICS"/></azkaban-users>
进入 azkaban-executor 的conf目录下,配置文件azkaban.properties,包括:
a. 修改时区为:default.timezone.id=Asia/Shanghai
b. 修改 MySql 数据库配置
database.type=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkabanmysql.user=azkabanmysql.password=azkabanmysql.numconnections=100
最后将数据库驱动放入两个服务的extlib下:
cp mysql-connector-java-5.1.25.jar azkaban-web/extlib/
cp mysql-connector-java-5.1.25.jar azkaban-executor/extlib/
配置完成:
1.5 启动服务,访问服务和终止服务
启动服务:
进入 azkaban-web目录
bin/azkaban-web-start.sh
进入 azkaban-executor目录
bin/azkaban-executor-start.sh
启动后 访问地址:https://ip:host
界面如下:
关闭服务:
进入 azkaban-web目录
bin/azkaban-web-shutdown.sh
进入 azkaban-executor目录
bin/azkaban-executor-shutdown.sh
1.6 执行简单的定时任务脚本
先创建一个工程:
上传 要执行的定时任务脚本(有格式要求):
链接:http://pan.baidu.com/s/1cqj1CU 密码:yqx5
具体使用:
http://blog.csdn.net/xiaolang85/article/details/23171303
1.7 azkaban结合项目中索引的全量导入功能
思考:azkaban目前是单节点(3.0还没发布,有集群) 可能处在故障问题
原有的项目自带的定时导入功能要保留,留作备用方案,当azkaban定时调度服务器宕机时
启用项目自身的定时导入索引任务,当机器恢复服务时,关闭系统自身的定时任务.
package cn.com.mx.gome.suggest.schedule.socket;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import javax.mail.Address;
import org.apache.log4j.net.SocketAppender;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cn.com.mx.gome.search.core.util.prop.PropUtils;
import cn.com.mx.gome.suggest.constant.Const;
/**
* 判断azkaban服务是否存活着
* @author songqinghu
*
*/
public class TimerSocketUtils {
private static Logger logger = LoggerFactory.getLogger(TimerSocketUtils.class);
private static String ADDRESS = null;//地址
private static Integer PORT = null;//端口
public static boolean reload = true;//是否重新加载 动态加载使用
private static boolean isContinue = true;
private static void init(){
if(reload){
ADDRESS = PropUtils.getInstance().getString(Const.SOLR_AZKABAN_ADDRESS,"false");
PORT = PropUtils.getInstance().getInt(Const.SOLR_AZKABAN_PORT, 0);
if("false".equals(ADDRESS) || 0 == PORT){
ADDRESS =null;
PORT =null;
isContinue = false;
}
reload = false;
}
}
//判断azkaban服务的存活状况
public static boolean isLive(){
init();
if(isContinue){
Socket socket;
try {
socket = new Socket();
InetSocketAddress socketAddress = new InetSocketAddress(ADDRESS, PORT);
socket.connect(socketAddress, 1000);
boolean result = socket.isConnected();
logger.info("the socket connection result is : {} ", result);
socket.close();
return result;
} catch (Exception e) {
logger.error(" the socket connection occur error is {} , use project own timer task ",e);
socket =null;
}
}
return false;
}
}
脚本:
type=command
command.1= echo "suggest full index import start"
command= curl http://api.search.ic.dev.gomeplus.com/suggest/full/import.json?clear=true
command.2= echo "suggest full index import end"
0 0
- 自动化定时调度之Azkaban部署及使用
- 使用Azkaban调度Spark任务
- 使用azkaban调度spark任务
- 部署Azkaban任务调度器demo
- hadoop学习之azkaban(5.1):azkaban的使用及示例
- 任务调度器之azkaban(一)
- 任务调度器之azkaban(二)
- Azkaban编译及WebServer模式部署
- Azkaban安装部署使用超详细
- Storm之定时调度
- crontab定时调度使用
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-开源任务调度程序(使用篇)
- Azkaban-任务调度管理器
- Azkaban-任务调度管理器
- C++/C语言函数:isalpha()函数
- block小结--02 block的种类;
- Java 调用本地Native接口指引
- OpenGL中的Frame Buffer Object 理解
- android studio 导入项目作为主工程依赖库
- 自动化定时调度之Azkaban部署及使用
- 设计模式--6大原则--依赖倒置原则
- CTO或者CEO怎么规划你的生活和工作
- VMware 使用 NAT 模式联网问题
- MySQL的索引
- 最近一直在配置自己的服务器,折腾了一点心得,准备记录一下1
- javaweb jsp制作留言板
- Android 网络之 Volley+OkHttp+Https
- pat PAT (Advanced Level) Practise 1007. Maximum Subsequence Sum (25)