Azkaban
发表于|更新于
|浏览量:
坦诚是最明智的策略。——富兰克林
分享一个工作流框架
https://github.com/azkaban/azkaban
官方文档
Azkaban documentation! — Azkaban documentation
Azkaban是一个分布式工作流管理器,在LinkedIn上实现,以解决Hadoop作业依赖性的问题。我们的作业需要按顺序运行,从 ETL 作业到数据分析产品。
Features 特征
- 与任何版本的 Hadoop 兼容
- 易于使用的 Web UI
- 简单的 Web 和 http 工作流上传
- 项目工作区
- 工作流的调度
- 模块化和可插件化
- 身份验证和授权
- 跟踪用户操作
- 有关失败和成功的电子邮件警报
- SLA告警和自动杀伤
- 重试失败的作业
阿兹卡班的设计主要考虑了可用性。它已经在LinkedIn上运行了好几年,并驱动了他们的许多Hadoop和数据仓库流程。
相关推荐
2024-05-11
jackson序列化时带上类型信息
独学而无友,则孤陋而寡闻。——刘向 首先这么配置即可: 1234objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); 假设我们有两个类 Foo 和 Bar,其中 Bar 是 Foo 的子类。未配置 activateDefaultTyping 之前和配置之后,序列化这些对象的 JSON 表示会有所不同。 类定义 1234567public class Foo { public String value = "A Foo";}public class Bar extends Foo { public String barValue = "A Bar";} 配置前 在不使用 activateDefaultTyping 的情况下,序列化 Foo 类型和 Bar 类型的对象...
2022-03-08
注解支持@Alias同步值
你最可爱,我说时来不及思索。但思索之后,还是这样说。——普希金《你多么可爱》 首先是这个issue:希望AnnotationUtil增加对@AliasFor的支持 然后我就提交了这个PR:提供AnnotationUtil#getAnnotationAlias,为@Alias注解做别名支持的适配 代码如下(找不到方法可以去看hutool源码): 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import cn.hutool.core.exceptions.UtilException;import cn.hutool.core.util.ArrayUtil;import cn.hutool.core.util.ObjectUtil;import cn.hutool.core.util.ReflectUtil;import cn.hutool.core.util.StrUtil;import java.lang.annotation.Ann...
2025-12-25
conductor
今天所做之事勿候明天,自己所做之事勿候他人。——歌德 Conductor:源自 Netflix 的可扩展工作流编排引擎当你的系统从“一个应用”演进为“几十上百个微服务 + 一堆事件”,你就会需要一个可靠、可观察、可伸缩的编排引擎,把这些复杂的流程组织起来。Conductor 正是为此而生——它最初由 Netflix 构建,用于管理分布式、异步的微服务与事件驱动工作流;如今由 Orkes 团队在社区中持续维护与发展。 仓库主页:conductor-oss/conductor 官方站点:Conductor OSS README 永久链接(信息来源):README.md@aa7de92 默认分支:main 项目描述(仓库 Description):“Conductor is an event driven orchestration platform providing durable and highly resilient execution engine for your applications” 许可协议:Apache 2.0 进一步了解 Netflix ...
2021-02-19
replaceAll坑
学如弓弩,才如箭镞,识以领之,方能中鹄。一一袁枚 前两天遇到一个坑,在使用String.replace()和replaceAll的时候 因为没有看过API和注释,拿着就开用,结果造成一个bug 这里留做记录 场景是这样的,我对一个字符串进行替换,将[idea]替换为""时使用了replaceAll,导致其他不该被替换的字符也被替换了 这段代码 123String str = "Hino Supa and ruben";System.out.println(str.replace("[idea]", ""));System.out.println(str.replaceAll("[idea]", "")); 输出的结果为 12Hino Supa and rubenHno Sup n rubn 可以看到,replaceAll把我们的[idea]当做了正则表达式… 点进源码一看注释,好家伙 第一句就是 123Replaces each substring of...
2023-03-01
mybatis一对多查询
想认识人,解剖自己就好——杜克罗 官方文档 书接上文:mybatis流式查询 分享mybatis的结果映射配置的一对多查询方式: 123456789101112131415161718<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.ruben.mapper.UserMapper"> <resultMap id="userInfo" type="com.ruben.pojo.po.UserInfo"> <collection property="...
2021-09-19
mybatis-plus乐观锁
青,取之于蓝而青于蓝;冰,水为之而寒于水。 ——《荀子·劝学》 同样还是mybatis-plus官方示例项目 此处乐观锁不同于悲观锁的区别是,它只有在真正执行数据库操作的时候才去进行判断是否重复修改 需要指定一个字段作为版本号,使用@Version注解 官方文档中如此描述: 当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式: 取出记录时,获取当前version 更新时,带上这个version 执行更新时, set version = newVersion where version = oldVersion 如果version不对,就更新失败 乐观锁配置需要两步 #1.配置插件spring xml方式: 123456789<bean class="com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor" id="optimisticLockerInnerInterceptor"...

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog