Azkaban

Azkaban工作流调度

瘦欲@ 提交于 2019-12-15 07:17:39
二、工作流 1.工作流产生背景 工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。 工作流解决的主要问题是:为了实现某个业务目标,利用计算机软件在多个参与者之间按某种预定规则自动传递文档、信息或者任务。 一个完整的数据分析系统通常都是由多个前后依赖的模块组合构成的:数据采集、数据预处理、数据分析、数据展示等。各个模块单元之间存在时间先后依赖关系,且存在着周期性重复。 2.工作流调度实现方式 简单的任务调度:直接使用linux的crontab来定义,但是缺点也是比较明显,无法设置依赖。 复杂的任务调度:自主开发调度平台,使用开源调度系统,比如azkaban、Apache Oozie、Cascading、Hamake等。 3.工作流调度工具之间对比 下面的表格对四种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在显著的区别,在做技术选型的时候,可以提供参考。 三、Azkaban调度器 1.Azkaban介绍 Azkaban是由linkedin(领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

Scheduling spark jobs on a timely basis

爷,独闯天下 提交于 2019-12-14 03:43:05
问题 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. 回答1: 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

最最最全数据仓库建设指南,速速收藏!!

北慕城南 提交于 2019-12-13 15:19:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 开讲之前,我们先来回顾一下数据仓库的定义。 数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。这个概念最早由数据仓库之父比尔·恩门(Bill Inmon)于1990年在《建立数据仓库》一书中提出,近年来却被愈发广泛的提及和应用,不信看下图: 到底是什么,让一个从上世纪90年代提出的概念,在近几年确越来越热?带着这个问题,我们来了解一下产业真实的变化。 根据统计局的数字显示,近年来数字经济总体规模占GDP的比重越来越高,截止2018年将近35%;数字经济增速与GDP增速的差距逐渐拉大,远高于同期GDP增速。 在 2014年,“新常态”一词被首次提出,指出从当前中国经济发展的阶段性特征出发,适应新常态,保持战略上的平常心态。意味着经济新常态下,要适应GDP从高速增长转变为中高速增长的态势,吃资源饭、环境饭、子孙饭的旧发展方式正在让位于以转型升级、生产率提高、创新驱动为主要内容的科学、可持续、包容性发展,从要素驱动、投资驱动转向服务业发展及创新驱动。 在新常态下,数据经济背后的信息化正催生数据发挥着巨大价值,未来也会一样。 在这样的背景下,“数据”、“数据分析”、“人工智能”、“IOT”这些行业关键词在百度指数搜索趋势一路攀升。而随着转型的深入

Azkaban工作流调度

拥有回忆 提交于 2019-12-13 08:33:10
1. 工作流产生背景 工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流解决的主要问题是:为了实现某个业务目标,利用计算机软件在多个参与者之间按某种预定规则自动传递文档、信息或者任务。 一个完整的数据分析系统通常都是由多个前后依赖的模块组合构成的:数据采集、数据预处理、数据分析、数据展示等。各个模块单元之间存在时间先后依赖关系,且存在着周期性重复。 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。 2. 工作流调度实现方式 简单的任务调度:直接使用linux的crontab来定义,但是缺点也是比较明显,无法设置依赖。 复杂的任务调度:自主开发调度平台,使用开源调度系统,比如azkaban、Apache Oozie、Cascading、Hamake等。 其中知名度比较高的是Apache Oozie,但是其配置工作流的过程是编写大量的XML配置,而且代码复杂度比较高,不易于二次开发。 Azkaban调度器 Azkaban介绍 Azkaban是由linkedin(领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

浅谈我的转型大数据学习之路

微笑、不失礼 提交于 2019-12-11 17:01:20
一、背景介绍 本人目前是一名大数据工程师,项目数据50T,日均数据增长20G左右,个人是从Java后端开发,经过3个月的业余自学成功转型大数据工程师。 二、大数据介绍 大数据本质也是数据,但是又有了新的特征,包括数据来源广、数据格式多样化(结构化数据、非结构化数据、Excel文件、文本文件等)、数据量大(最少也是TB级别的、甚至可能是PB级别)、数据增长速度快等。 针对以上主要的4个特征我们需要考虑以下问题: 数据来源广,该如何采集汇总?,对应出现了Sqoop,Cammel,Datax等工具。 数据采集之后,该如何存储?,对应出现了GFS,HDFS,TFS等分布式文件存储系统。 由于数据增长速度快,数据存储就必须可以水平扩展。 数据存储之后,该如何通过运算快速转化成一致的格式,该如何快速运算出自己想要的结果? 对应的MapReduce这样的分布式运算框架解决了这个问题;但是写MapReduce需要Java代码量很大,所以出现了Hive,Pig等将SQL转化成MapReduce的解析引擎; 普通的MapReduce处理数据只能一批一批地处理,时间延迟太长,为了实现每输入一条数据就能得到结果,于是出现了Storm/JStorm这样的低时延的流式计算框架; 但是如果同时需要批处理和流处理,按照如上就得搭两个集群,Hadoop集群(包括HDFS+MapReduce+Yarn

Azkaban调度器 概念

对着背影说爱祢 提交于 2019-12-09 22:47:10
Azkaban调度器 概念 Azkaban是由linkedin(领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。 Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。 Azkaban特点: 功能清晰,简单易用的Web UI界面 提供job配置文件快速建立任务和任务之间的依赖关系 提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop 基于Java开发,代码结构清晰,易于二次开发 Azkaban原理架构 mysql服务器 : 存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA规则等 AzkabanWebServer :对外提供web服务,使用户可以通过web页面管理。职责包括项目管理、权限授权、任务调度、监控executor。 AzkabanExecutorServer :负责具体的工作流的提交、执行。 Azkaban三种部署模式 solo server mode 该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。使用自带的H2数据库。这种模式包含Azkaban的所有特性,但一般用来学习和测试。 two-server mode 该模式使用MySQL数据库,

Workflow orchestration for Google Dataflow

有些话、适合烂在心里 提交于 2019-12-07 09:53:37
问题 We are using Google Dataflow for batch data processing and looking for some options for workflow orchestration tools something similar to what Azkaban does for Hadoop. Key things things that we are looking for are, Configuring workflows Scheduling workflows Monitoring and alerting failed workflows Ability to rerun failed jobs We have evaluated Pentaho, but these features are available in their Enterprise edition which is expensive. We are currently evaluating Azkaban as it supports

Azkaban的Web Server源码探究系列9: Servlet引擎初始化

孤人 提交于 2019-12-06 20:07:24
下面就是具体的路径映射与具体的servlet对应了。 ============================================================= Context root = new Context( server , "/" , Context. SESSIONS ); root .setMaxFormContentSize( MAX_FORM_CONTENT_SIZE ); String defaultServletPath = azkabanSettings .getString( "azkaban.default.servlet.path" , "/index" ); root .setResourceBase( staticDir ); // // // ServletHolder indexRedirect = new ServletHolder( new IndexRedirectServlet( defaultServletPath )); root .addServlet( indexRedirect , "/" ); ServletHolder index = new ServletHolder( new ProjectServlet()); root .addServlet( index , "/index" );

azkaban环境搭建

时光怂恿深爱的人放手 提交于 2019-12-06 10:15:14
下载源码: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的Exec Server分析 28:Execute Server的任务真正执行过程

送分小仙女□ 提交于 2019-12-06 03:43:04
上节,我们看到了任务放在executor的一个线程池里,下面开始分析真正的执行过程! ================================================================================ jdb azkaban.execapp.AzkabanExecutorServer -conf /root/azkb/azkaban_3.0.0_debug/conf stop in azkaban.execapp.FlowRunner.run run ================================================================================ 大家知道,关于一个拓扑图来说,有一个起点的说法 可能在拓扑图里有多个起点,看下azkaban的起点计算方法 public List<String> getStartNodes() { if ( startNodes == null ) { startNodes = new ArrayList<String>(); for (ExecutableNode node : executableNodes .values()) { if ( node .getInNodes().isEmpty()) { startNodes .add(