技术标签: hive # Azkaban hadoop big data 大数据
Azkaban 目前同时支持 Flow 1.0 和 Flow2.0 ,但是官方文档上更推荐使用 Flow 2.0,因为 Flow 1.0 会在将来的版本被移除。Flow 2.0 的主要设计思想是提供 1.0 所没有的流级定义。用户可以将属于给定流的所有 job / properties 文件合并到单个流定义文件中,其内容采用 YAML 语法进行定义,同时还支持在流中再定义流,称为为嵌入流或子流。
项目 zip 将包含多个流 YAML 文件,一个项目 YAML 文件以及可选库和源代码。Flow YAML 文件的基本结构如下:
my-flow-name.flow
;官方提供了一个比较完善的配置样例,如下:
config:
user.to.proxy: azktest
param.hadoopOutData: /tmp/wordcounthadoopout
param.inData: /tmp/wordcountpigin
param.outData: /tmp/wordcountpigout
# This section defines the list of jobs
# A node can be a job or a flow
# In this example, all nodes are jobs
nodes:
# Job definition
# The job definition is like a YAMLified version of properties file
# with one major difference. All custom properties are now clubbed together
# in a config section in the definition.
# The first line describes the name of the job
- name: AZTest
type: noop
# The dependsOn section contains the list of parent nodes the current
# node depends on
dependsOn:
- hadoopWC1
- NoOpTest1
- hive2
- java1
- jobCommand2
- name: pigWordCount1
type: pig
# The config section contains custom arguments or parameters which are
# required by the job
config:
pig.script: src/main/pig/wordCountText.pig
- name: hadoopWC1
type: hadoopJava
dependsOn:
- pigWordCount1
config:
classpath: ./*
force.output.overwrite: true
input.path: ${
param.inData}
job.class: com.linkedin.wordcount.WordCount
main.args: ${
param.inData} ${
param.hadoopOutData}
output.path: ${
param.hadoopOutData}
- name: hive1
type: hive
config:
hive.script: src/main/hive/showdb.q
- name: NoOpTest1
type: noop
- name: hive2
type: hive
dependsOn:
- hive1
config:
hive.script: src/main/hive/showTables.sql
- name: java1
type: javaprocess
config:
Xms: 96M
java.class: com.linkedin.foo.HelloJavaProcessJob
- name: jobCommand1
type: command
config:
command: echo "hello world from job_command_1"
- name: jobCommand2
type: command
dependsOn:
- jobCommand1
config:
command: echo "hello world from job_command_2"
想要使用 Flow 2.0 进行工作流的配置,首先需要了解 YAML 。YAML 是一种简洁的非标记语言,有着严格的格式要求的,如果你的格式配置失败,上传到 Azkaban 的时候就会抛出解析异常。
value 与 : 符号之间必须要有一个空格
key: value
写法一 同一缩进的所有键值对属于一个map
key:
key1: value1
key2: value2
写法二
{key1: value1, key2: value2}
写法一 使用一个短横线加一个空格代表一个数组项
-
a
-
b
-
c写法二
[a,b,c]
支持单引号和双引号,但双引号不会对特殊字符进行转义:
s1: ‘内容\n 字符串’
s2: “内容\n 字符串”
转换后:
{ s1: ‘内容\n 字符串’, s2: ‘内容\n 字符串’ }
一个 YAML 文件中可以包括多个文档,使用---
进行分割。
Flow 2.0 建议将公共参数定义在config
下,并通过${}
进行引用。
新建 flow
配置文件:
nodes:
- name: jobA
type: command
config:
command: echo "Hello Azkaban Flow 2.0."
在当前的版本中,Azkaban 同时支持 Flow 1.0 和 Flow 2.0,如果你希望以 2.0 的方式运行,则需要新建一个 project 文件,指明是使用的是 Flow 2.0:
azkaban-flow-version: 2.0
由于在 1.0 版本中已经介绍过 Web UI 的使用,这里就不再赘述。对于 1.0 和 2.0 版本,只有配置方式有所不同,其他上传执行的方式都是相同的。执行结果如下:
和 1.0 给出的案例一样,这里假设有五个任务(jobA——jobE), D 任务需要在 A,B,C 任务执行完成后才能执行,而 E 任务则需要在 D 任务执行完成后才能执行,相关配置文件应如下。可以看到在 1.0 中需要分别定义五个配置文件,而在 2.0 中只需要一个配置文件即可完成配置。
nodes:
- name: jobE
type: command
config:
command: echo "This is job E"
# jobE depends on jobD
dependsOn:
- jobD
- name: jobD
type: command
config:
command: echo "This is job D"
# jobD depends on jobA、jobB、jobC
dependsOn:
- jobA
- jobB
- jobC
- name: jobA
type: command
config:
command: echo "This is job A"
- name: jobB
type: command
config:
command: echo "This is job B"
- name: jobC
type: command
config:
command: echo "This is job C"
Flow2.0 支持在一个 Flow 中定义另一个 Flow,称为内嵌流或者子流。这里给出一个内嵌流的示例,其 Flow
配置如下:
nodes:
- name: jobC
type: command
config:
command: echo "This is job C"
dependsOn:
- embedded_flow
- name: embedded_flow
type: flow
config:
prop: value
nodes:
- name: jobB
type: command
config:
command: echo "This is job B"
dependsOn:
- jobA
- name: jobA
type: command
config:
command: echo "This is job A"
内嵌流的 DAG 图如下:
执行情况如下:
文章浏览阅读1w次,点赞3次,收藏21次。DPDK学习(rte_eal_init)DPDK学习(eal_thread_loop)rte_bus_liststruct rte_bus { TAILQ_ENTRY(rte_bus) next; /**< Next bus object in linked list */ const char *name; /**< Name of the bus..._dpdk rte_eal_init
文章浏览阅读1.3k次。Problem Description虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时_一个人的旅行from: hdu, 2066
文章浏览阅读526次。这些物理网卡设计的假设是,这些主机将要与企业增强版许可配置,以便所有的vSphere功能都可以使用。我没有创建一堆不同的设计和以前一样,因为理想情况下,你会希望坚持使用符合一堆标准对于大多数人来说一个简单的设计。另外,我已经更新了这些CONFIGS为执行iSCSI的多路径和删除使用以太通道的配置,因为那些大多需要在标准的vSwitch配置。我也建议开始移动了一切到vNetwo..._vsphere布局设置
文章浏览阅读4.3k次,点赞11次,收藏85次。在move base中global planner效果并不理想,很大程度上也影响局部规划的效果,因此尝试给出人工采取的全局路径,再用teb local planner局部避障。_拟合一条曲线发送给move_base的全局路劲
文章浏览阅读233次。《计算机系统性能测试与分析概论.ppt》由会员分享,可在线阅读,更多相关《计算机系统性能测试与分析概论.ppt(59页珍藏版)》请在人人文库网上搜索。1、a,1,计算机系统性能测试陈文光清华大学计算机系,a,2,为什么要学这本门课,组装一台电脑 关心哪些指标? 处理器主频 内存大小 如何评价一个计算机系统的性能,选哪些程序评测? 都测试哪些值? 这些值如何汇总? 这些值真的能够反映计算机系统的性能..._计算机系统性能评价 陈文光
文章浏览阅读2.9k次,点赞2次,收藏3次。leecode错误:control reaches end of non-void function [-Werror=return-type]_ontrol reaches end of non-void function [-werror=return-type]
文章浏览阅读7.6k次,点赞13次,收藏16次。OpenGL.ES在Android上的简单实践:20-水印录制(预览 gl_blend)1、继续画出预览帧紧接着上篇文章,既然是要画出预览帧,按照之前其他项目的架构组成。我们是通过模型FrameRect.draw的方法画出预览帧,在定义这个draw方法之前我们从着色器出发,看看需要什么。 private static final String VERTEX_SHADER ..._android使用opengl录像时添加水印
文章浏览阅读1.8k次。一、Throwable结构在Java中,Throwable是所有错误与异常的超类。Throwable包含两个子类:Error(错误)和Exception(异常)异常和错误的区别是:异常能被程序本身可以处理,错误是无法处理Error: 是程序无法处理的错误,表示运行应用程序中较严重问题. 大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。(如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefF.._java 错误和异常
文章浏览阅读1.2w次。错误一:解决办法:1.4.0版本,因为master的元数据全部在本地磁盘文件,如果额外的添加了一个master,会报错,找不到consensus-meta,也就是master的容错机制,需要对数据格式化错误二:impala中创建使用kudu存储,但是client端读取数据,读取不出来。错误三: [New I/O worker #1] WARN org.apa_cannot complete before timeout
文章浏览阅读8.1k次,点赞2次,收藏3次。WPF 中不时所有控件都有Border边框属性,像容器就没有这个属性,那么如何给容器加边框呢,WPF中Border可以当做一个控件使用如下文给StackPanel内加Border控件 <StackPanel Name="panel" Grid.Column="0"> <Border BorderBrush="{DynamicResource {x:Static..._stackpanel 边框
文章浏览阅读598次。读取有一点误差#include <pcl/visualization/cloud_viewer.h>#include <iostream>//标准C++库中的输入输出类相关头文件。#include <pcl/io/io.h>#include <pcl/io/pcd_io.h>//pcd 读写类相关的头文件。#include <pcl/..._pcl io loadlasfile
文章浏览阅读848次。崩溃堆栈如下:解决办法:_uscamera拔掉崩溃