Azkaban

Azkaban的Web Server源码探究系列16:跳转Project

北城余情 提交于 2019-12-05 07:43:11
上节说完了创建,这下来说跳转到Project. ====================================================================== 所以,还是得用/manager对应的servlet来执行,下面稍微跟踪一下: ====================================================================== @Override protected void handleGet(HttpServletRequest req , HttpServletResponse resp , Session session ) throws ServletException, IOException { if (hasParam( req , "project" )) { //如果有参数Project,这里有 if (hasParam( req , "ajax" )) { //无 handleAJAXAction( req , resp , session ); } else if (hasParam( req , "logs" )) { handleProjectLogsPage( req , resp , session ); } else if (hasParam( req ,

Azkaban Solo Server模式部署

僤鯓⒐⒋嵵緔 提交于 2019-12-05 07:43:01
Azkaban Solo Server模式部署 1、优点 易于安装:无需MySQL示例。它将H2打包为主要的持久存储。 易于启动:Web服务器和执行程序服务器都在同一个进程中运行。 全功能:它包含所有Azkaban功能。可以正常使用,也可以为其安装插件。 2、准备工作 一台服务器,系统位CentOS7,服务器上需要安装jdk1.8以上版本。 3、安装部署 Azkaban的编译可以参见: Azkaban源码编译 将solo server模式的安装包,拷贝到自己的规划目录中,然后解压,解压命令如下: tar –zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz 解压完成之后,进入解压的目录,修改配置文件conf/azkaban.properties vim conf/azkaban.properties #时区 default.timezone.id=Asia/Shanghai 将默认的美国时区,修改为亚洲上海时区,保存退出。 4、目录 solo server模式安装好之后,根据官网提示应有在Azkaban home目录下应该有以下几个目录: bin:用于存放启动和停止Azkaban solo服务器的脚本 conf:Azkaban solo服务器的配置文件。conf目录下应该有三个文件: azkaban.private.properties

Azkaban的Web Server源码探究系列22: 一次性执行execute的提交准备

元气小坏坏 提交于 2019-12-05 07:42:47
首先,触发按钮 会弹出一个页面 可以看到有个exec id 1 为什么会发生这一切? 通过抓包,我们得知 所以需要研究 stop in azkaban.webapp.servlet.ExecutorServlet.doGet stop in azkaban.webapp.servlet.ExecutorServlet.ajaxAttemptExecuteFlow stop in azkaban.webapp.servlet.ExecutorServlet.ajaxExecuteFlow stop in azkaban.server.HttpRequestUtils.parseFlowOptions run ====================================================================== 首先,系统肯定会自己构造一些默认的参数,但是看到上面这个截图,我们知道,我们是可以覆盖的 ExecutionOptions options = HttpRequestUtils. parseFlowOptions ( req ); 看到了吧,就是解析http请求中的一些参数,然后覆盖过去 下面看看哪些参数可以解析出! ------------------------------------------------------ 1)

ETL调度系统及常见工具对比:azkaban、oozie、数栖云

浪尽此生 提交于 2019-12-05 04:25:11
最近遇到了很多正在研究ETL及其工具的同学向我们抱怨:同样都在用 Kettle ,起点明明没差异,但为什么别人ETL做的那么快那么好,自己却不断掉坑? 其实,类似于像 Kettle 这样开源的工具,已经覆盖了大部分日常工作所需的功能了,直接部署一套就能够解决企业基本的需求。但在实际使用的过程中我们也会发现,kettle 如同是一个出场自带电话短信功能的智能手机,少了功能各异的智能 App 的配合,和只能接打电话的老年机也没什么不同。 今天我们就先对其中一个比较火热的“App”——调度工具,做一个简单的评测对比,帮助大家快速解锁用开源工具做 ETL 的新姿势。 一、为什么需要调度系统? 开局我们先扫盲。 我们都知道大数据的计算、分析和处理,一般由多个任务单元组成(Hive、Sparksql、Spark、Shell等),每个任务单元完成特定的数据处理逻辑。 多个任务单元之间往往有着强依赖关系,上游任务执行并成功,下游任务才可以执行。比如上游任务结束后拿到 A 结果,下游任务需结合 A 结果才能产出 B 结果,因此下游任务的开始一定是在上游任务成功运行拿到结果之后才可以开始。 而为了保证数据处理结果的准确性,就必须要求这些任务按照上下游依赖关系有序、高效的执行。一个较为基础的处理方式是,预估出每个任务处理所需时间,根据先后顺序,计算出每个任务的执行的起止时间,通过定时跑任务的方式

Azkaban介绍

半城伤御伤魂 提交于 2019-12-05 02:34:47
Azkaban介绍 Azkaban:批量工作流任务调度器,用于在一个工作流 内以一个特定的顺序运行一组工作和流程。Azkaban 使用 job 配置文件建立任务之间的依赖 关系,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。支持Shell 脚本程序,Java 程序。 特点 兼容任何版本的 hadoop 易于使用的 Web 用户界面 简单的工作流的上传 方便设置任务之间的关系 调度工作流 模块化和可插拔的插件机制 认证/授权(权限的工作) 能够杀死并重新启动工作流 有关失败和成功的电子邮件提醒 Azkaban 的架构 Azkaban 由三个关键组件构成: 1) AzkabanWebServer:AzkabanWebServer 是整个 Azkaban 工作流系统的主要管理者, 它用户登录认证、负责 project 管理、定时执行工作流、跟踪工作流执行进度等一 系列任务。 2) AzkabanExecutorServer:负责具体的工作流的提交、执行,它们通过 mysql 数据库 来协调任务的执行。 3) 关系型数据库(MySQL):存储大部分执行流状态,AzkabanWebServer 和 AzkabanExecutorServer 都需要访问数据库。 Azkaban下载地址:http://azkaban.github.io/downloads.html 来源:

Sqoop笔记

心已入冬 提交于 2019-12-05 00:18:53
Sqoop笔记 1.下载 https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.7/ 本次下载:https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 解压到/home/hadoop/sqoop 拷贝sqoop-1.4.7.jar到/home/hadoop/sqoop/lib目录下 2.配置conf/sqoop-env.sh export HADOOP_COMMON_HOME=/home/hadoop/hadoop export HADOOP_MAPRED_HOME=/home/hadoop/hadoop export HIVE_HOME=/home/hadoop/hive 3.配置环境变量~/.bashrc 验证sqoop sqoop version 4.执行命名报错,主要是确实一些tar sqoop/lib sqoop-1.4.7.jar mysql-connector-java-5.1.39-bin.jar commons-lang3-3.3.2.jar avro-tools-1.8.1.jar 下载地址:https://maven.aliyun.com/mvn/search 5

Azkaban实战

家住魔仙堡 提交于 2019-12-04 21:10:54
Azkaba 内置的任务类型支持 command 、 java 3.1 单一 job 案例 1 )创建 job 描述文件 [atguigu@hadoop102 jobs]$ vim first.job #first.job type=command command=echo 'this is my first job' 2) 将 job 资源文件打包成 zip 文件 [atguigu@hadoop102 jobs]$ zip first.zip first.job adding: first.job (deflated 15%) [atguigu@hadoop102 jobs]$ ll 总用量 8 -rw-rw-r--. 1 atguigu atguigu 60 10月 18 17:42 first.job -rw-rw-r--. 1 atguigu atguigu 219 10月 18 17:43 first.zip 注意: 目前, Azkaban 上传的工作流文件 只支持 xxx.zip 文件 。 zip 应包含 xxx.job 运行作业所需的文件和任何文件 (文件名后缀必须以 .job 结尾,否则无法识别) 。作业名称在项目中必须是唯一的。 3 )通过 azkaban 的 web 管理平台创建 project 并上传 job 的 zip 包 首先创建 project

Scheduling spark jobs on a timely basis

筅森魡賤 提交于 2019-12-04 18:22:43
Which is the recommended tool for scheduling Spark Jobs on a daily/weekly basis. 1) Oozie 2) Luigi 3) Azkaban 4) Chronos 5) Airflow Thanks in advance. Joe Harris Updating my previous answer from here: Suggestion for scheduling tool(s) for building hadoop based data pipelines Airflow: Try this first. Decent UI, Python-ish job definition, semi-accessible for non-programmers, dependency declaration syntax is weird. Airflow has built in support for the fact that jobs scheduled jobs often need to be rerun and/or backfilled. Make sure you build your pipelines to support this. Azkaban: Nice UI,

azkaban环境搭建

自古美人都是妖i 提交于 2019-12-04 17:41:09
下载源码:git clone https://github.com/azkaban/azkaban.git 编译源码 ./gradlew distTar cp /root/soft/azkaban/azkaban-*/build/distributions/*.tar.gz /root/soft/azkabatt [root @localhost azkabatt]# cd /root/soft/azkabatt [root @localhost azkabatt]# tar zxvf azkaban-exec-server-3.81.0-1-g304593d.tar.gz [root @localhost azkabatt]# tar zxvf azkaban-web-server-3.81.0-1-g304593d.tar.gz [root @localhost azkabatt]# tar zxvf azkaban-db-3.81.0-1-g304593d.tar.gz 导入表到Mysql数据库 ariaDB [azkaban]> source create-all-sql-3.81.0-1-g304593d.sql [root @localhost azkaban-db-3.81.0-1-g304593d]# mkdir /root/keystore [root

Azkaban的Web Server源码探究系列20:resolve&buildFlow

拜拜、爱过 提交于 2019-12-04 07:33:06
上节,我们加载了job的描述属性 + 正确性验证 ! ============================================================== stop in azkaban.project.DirectoryFlowLoader.resolveDependencies ============================================================== 这个也很简单,比如有个Hello.job,World.job 指定了world依赖Hello 则最后在 private HashMap<String, Map<String, Edge>> nodeDependencies ; 这种结构里存的是什么呢? HashMap< String, ---World Map< String, ---Hello Edge ---<Hello,World> > > 是不是很简单,没啥可说的! 接下来是 // Create the flows. buildFlowsFromDependencies(); 到目前为止,我们装载了点+校验正确性+边。 有了点和边,其实就有了图,有了图,我们就可以构建Flow了 这也正是我们下面要做的事情! =============================================