访谈:Airbnb数据流程框架Airflow与数据工程学的未来

Airflow是Airbnb数据流程框架,本文接受访谈的是该工具的研发者,Tylor E.Edmiston增加了介绍和后记。





简介

我时不时会对一些看过的关于未来科技的帖子产生共鸣。

就在几周前让我产生共鸣的是Airbnb数据工程师,公司数据流程框架工具Airflow的研发者MaximeBeauchemin的一篇文章《数据工程师的崛起》( The Rise of the Data Engineer)。在天文学者公司(Astronomer),Airflow在我们技术堆栈处于非常核心的位置:我们的工作流程集被Airflow中的数据流程(pipeline)定义为有向无回图(DAGs)。这个帖子,证实了为什么现在是天文学者(Astronomer)这样的公司存在的最佳时机。

读完帖子之后,我找到Max想做一个采访,让我高兴的是他愉快的接受了邀请并耐心的回答了我们关于Airflow和数据工程师未来的问题。接下来你会看到他的回答,但首先我想加一点点背景说明。

你可能在想“数据工程是什么,它为什么重要?

在《数据工程师的崛起》( The Rise of the Data Engineer)中,Maxime这样定义数据工程的:

  • 数据工程领域可以被当作是从软件工程衍生出的,包含了商业智能和数据仓库的一个超集。
  • 数据工程师之所以存在是因为企业们现在拥有大量如宝藏一样的数据,但让其产生价值,这些数据必须经过提炼。而数据工程工具箱则让我们快速大量地进行提炼。

闲话少说,让我们来看看对Max的问题:

天文学者(Astronomer)公司的优秀员工们被要求做一个关于Airflow 和数据工程的简短访问。以下为相关问答:

[问题1]Airflow下一版本发布是在什么时候,最令你激动的特性是什么?

8.0rc4(版本候选4号)刚刚被Apache委员会投票通过,但是被Airbnb技术人员发现一些故障后暂停发布。技术人员正全力移除这些障碍,新的发布马上就来。我们应该期待1.8.0这周或下周问世。

这是第一个非Airbnb主导的版本,荷兰国际集团的Bolkede Bruin为了这次发布做了出色的工作。这次发布相较上次发布,时间和工作量上都增加了不少。这是自2016年6月13日颁布的1.7.1.3之后的第一次发布。

这次的版本同1.7.1.3相比有相当大的改变,在我看来,以下几点是需要强调的:

  • 一个多线程调度器,允许更快的日程循环并提高导入DAG文件时的容错能力。先前的版本,一个DAG文件里的简单sys.exit()语句就可以使调度器停止运行。
  • 用NVD3替代Highcharts的图表库。Highcharts有一个非Apache兼容许可证,拿掉它将把我们带出法律灰色地带。
  •  Unix系统模拟和控制组,允许以特殊Unix用户方式运行任务,特定的控制组可以在任务级限制资源利用率。这可以避免一个任务占用所有资源以致威胁Airflowworker(工作节点)。
  • 谷歌云服务(GCS)与改进后的操作元(operator)和挂钩集(hooks)集成。
  • 一个更好更依赖于模型的引擎,可以实现更多的可维护性和扩展性代码,在UI上添加新特性“为何不是我的任务在运行”。
  • 可修复所有关于“僵尸”和“不死”进程。
  • 比之前版本有更好的(资源)池区处理超负荷任务。
  • 新操作元和挂钩集。
  • 极其容易的操作性和全面地故障修复

我们希望能够有一系列更稳定的版本遵循这个安排表,虽然还没有官方承诺要这样做。

[问题2]从Airbnb内部工具到Apache项目工具是如何过渡的?

这个过渡还是很顺利的。Apache社区通过允许很多外部贡献者合并pull请求来衡量社区贡献,一方面加速了项目改进的速度。另一方面它减慢了版本发布的步伐,强迫我们管理自己版本的分支,这由之前官方发布的版本和代表我们添加在每个版本顶部的提交表单的“樱桃”列表组成。我们现在也倾向于开发这样一个内部分支,一旦发行版在我们这边的生产上稳定下来就将其推出社区。

我们很享受在上次发布之后收到的帮助,看到项目在我们自己自愿有限的情况下(借助社区)依然欣欣向荣。我习惯于独自检查和合并每个性能需求,过去几年就这样交出自己的成果。很开心看到这些良性循环和令人开心的“传销”一次次进化。

[问题3]你怎么看待Airflow的用途改进?接下来的5年,会出现什么新的Airflow应用?

数据基础建设生态系统还没有表现出任何聚集到什么东西上更具管理性的信号。似乎我们仍然在急剧扩张的阶段,每天都有新的分布式数据库、新的框架结构、新库和新合作对象。由于这些系统更加复杂和快速发展,拥有像Airflow这样可以让所有的东西聚集在一个健全的环境下是非常重要的。这个环境可以让任何一个小难题与完善的API协调调度起来。

由于Airflow在调度范畴内达到了特性的完善。我们可以假设集成其他系统(例如hooks和operators)是一个可发展的区域。

Airflow最初的设想是更多地作为一个调度器而不会承载真正的工作量,但似乎人们更愿意用Airflow运行R脚本、Python数据处理任务、机器学习模型训练和排列等等更多复杂的工作量。当我们内部鼓励人们去开发像Kubernetes或Yarn 这类型的服务和杠杆基础设施的时候,显然地有一个需求需要Airflow直接演变成这样一个方向,并支持集装箱化(请运行这一任务在Docker控件内!)和资源管理(请分配4个CPU和64G内存给这个功能)。我们意识到人们可能在他们系统环境中的限制条件而又想发挥Airflow 的最大作用。所以如果你的Kubernetes集群部署在其中我们应该充分利用,即使没有部署,我们也想你能够同时在Airflow上运行你的任务。

我相信Airflow被定位为批量处理调度器即将在未来5年成为主导。我们有一个可靠的技术基础和庞大高动力的社区!

[问题4]你怎么看待同一领域的相同技术,例如Luigi,Azkaban等?

个人来讲自从加入Airflow社区之后我没有用过Luigi,Azkaban 或Oozie所以我更会照本宣科的给你说一些来自这些社区的难民或者被抛弃的人所说的话。

关于Luigi,有着比Airflow更小的作用域,可能我们更像互补而不是竞争。从我收集到的消息,产品的主要的维护者已经离开Spotify,很显然地他们现在内部(至少)有些用例也使用Airflow。我没有完整版故事但是很乐意听到更多关于它的事。我在想很多今天选择Luigi的公司可能之后也会选择Airflow,因为他们开发了他们需要的额外的特性集,这些特性集Airflow恰好提供。

关于Azkaban,我不确定除了LinkedIn谁还用它。显然这个项目现在还没有真正活跃的社区,我怀疑项目会继续在那个方向发展。而在LinkedIn外部,我听说了一些使用它的公司的奇闻逸事,某人在LinkedIn关闭了这个项目离开公司并在其他地方继续使用。

Oozie是我听过最被否定的一款软件,曾经,试着找出一个不在核心圈的Oozie用户有对其最全面的正面反馈。试一试吧!它可能是解决了核心问题之后仍然会被人们抱怨的,但是我认为它对不起这个名字也无法被拯救了。

我坚定地相信在配置上可以像编程一样的方式去创作工作流,我看到Airflow的关联物在现代数据生态系统中也稳定发展。好像基本上每一个在湾区关于数据和分析的创业公司都是用的Airflow。

http://www.timqian.com/star-history/#apache/incubator-airflow&spotify;/luigi&apache;/oozie&azkaban;/azkaban

[问题5]在接下来的5-10年数据工程学做为一个规程会怎么样改变创业公司呢?

现在创业公司不再将数据和分析作为后面考虑的东西。典型地他们早早的让数据科学家参与进来,第一波工程师会在产品初期版本中测量一些重要的分析结果。总裁们要求责任制和提供一种叫做“增长黑客”的服务早期提供指导服务给创意公司并衡量他们潜在投资回报看看哪还需要加倍投注。

我想未来的创业公司会被推动到刻画数据成熟度中,使其访问更好更便宜更易于访问的分析软件和服务。很多工作已经通过开源包模型化,但是仍然有一批不停增长的完整供应商解决方案例如MixPanel,Interana, Optimizely。不断提供云服务的AWS,GCS 和 Microsoft。

用于最尖端的事物像实时OLAP分析,异常检测,A/B测试量表和用户细分群体分析是现在任何创业公司以最低才能和合适的经费都想接触的。

当这些提供物变得越来越适用,变成保持竞争力的必需品,给敏捷创业公司提供越过领域中既定的慢玩家的机会。(应该是慢速发展的公司)

后记

2011年,MarcAndreessen写了一篇热门论文《为何软件在吞噬这个世界》(WhySoftware Is Eating The World)。2017年机器运行的所有软件都是由一座座数据山产生的,很多都很有价值但是只有使用对的工具才能让其全部搞清楚。

作为一个框架结构,Airflow提供了一个工作流层的抽象物给数据管道。Astronomer的DataRouter在其上构建了一个可以从任何源头到任何目的地的数据流程(管道)服务。你可以在最近的博客中学习更多关于Astronomer怎么使用Airflow和我们的开源理念。

创业公司不再仅仅建造软件-我们创造产品和数据洞察力驱动的公司。随着数据工程生态系统继续蓬勃发展,对于绘制各种各样的数据源的具有洞察力的创业公司的数量和质量的期望也在不断上升。

原文发布时间为:2017-5-6

时间: 2024-10-31 04:06:26

访谈:Airbnb数据流程框架Airflow与数据工程学的未来的相关文章

大数据应用框架初创企业Concurrent获400万美元融资

大数据初创企业 Concurrent 在 A 轮融资中获 400 万美元. 成立于 2008 年的Concurrent是一家主要面向企业的http://www.aliyun.com/zixun/aggregation/8213.html">大数据应用平台开发商.创始人 Chris K. Wensel 是流行的开源项目 Cascading 的开发者.Cascading 实际上是一个 Java 应用框架,利用它开发者无需关心底层的 MapReduce 即可方便地开发企业级的数据分析和数据管理应

一篇文章全面解析大数据批处理框架Spring Batch

如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架构设计给予支撑;但批处理领域的框架确凤毛麟角.是时候和我们一起来了解下批处理的世界哪些优秀的框架和设计了,今天我将以Spring Batch为例,和大家一起探秘批处理的世界. 如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有

一个关注大数据治理中的“数据”的框架

大数据治理是更广泛的信息治理计划的一部分,通过调整多个功能的目标制定与大数据优化.隐私和货币化相关的策略.然而,若不了解基础http://www.aliyun.com/zixun/aggregation/18278.html">数据类型,大数据治理则毫无意义. 图 1. 大数据治理的一个 3 维框架 图字:行业和功能.大数据类型.信息治理 本文提供一个大数据治理框架.如图 1 所示,该矿框架由 3 个维度构成: 大数据类型 大数据可分成 5 类:Web 和社交媒体.机器到机器(M2M).大

基于 AOP 的动态数据国际化框架的设计与实现

互联网的发展推动了全世界的交流,需要开发出满足不同地区语言.文化.生活习惯要求的 Web 应用,因此,软件的国 际化已成为必须要解决的问题.国内外目前采用的国际化方法存在以下一些不足: 已存在的动态数据国际化解决方法不易于移植和复用. 没有现成的动态数据国际化解决方案或框架. 针对以上问题,需要提出一个动态数据国际化的解决方案. 为了在短时间内,规范高效的构建出国际化的 Web 应用,需要设计一种易于理解和维护的国际化开发框架.作者旨在将国际化相关的共性操作抽取出来进行一致性处理,生成 一种基于

学习使用ADO.NET Data Services (ADO.NET 数据服务框架)

ADO.NET Data Services Framework是在.NET Framework 3.5 SP1新推出的扩充功能,这个功能和概念 在以前的.NET 1.0-.NET3.5 技术中都没有出现的新概念,它主要用途是可以很容易的将数据库服务公开 在网络上,然后透过URL网址就可以对数据库进行CRUD的操作.ADO.NET Data Services能通过一个REST化 的方式将数据以Web上的数据服务展示.使得应用可以以数据服务的方式展现数据,然后被应用在企业网 络和互联网上的Web客户

codeigniter框架批量插入数据

 本文介绍codeigniter框架批量插入数据的实例,优化了其中的插入算法,大家参考使用吧   代码如下: $sub_form = array();   $loop = 0;   $ins_loop = 0;   $sum = count($form_datas);   $this->logger->info('insert data total:'.$sum);   //使用事物批量导入有助于提高插入效率   $callStartTime = microtime(true);   $thi

云端深度学习框架TensorFlow读取数据IO的高效方式

低效的IO方式 最近通过观察PAI平台上TensoFlow用户的运行情况,发现大家在数据IO这方面还是有比较大的困惑,主要是因为很多同学没有很好的理解本地执行TensorFlow代码和分布式云端执行TensorFlow的区别.本地读取数据是server端直接从client端获得graph进行计算,而云端服务server在获得graph之后还需要将计算下发到各个worker处理(具体原理可以参考视频教程-Tensorflow高级篇:https://tianchi.aliyun.com/compet

两个框架之间的数据类型转换,需要桥接技术

两个框架之间的数据类型转换,需要桥接技术 在所有的数据类型见面添加__bridge去修饰

ci-CI框架中对数据的操作有问题

问题描述 CI框架中对数据的操作有问题 我向下寻找报错的493行字段为 $data = $this->daoModel->salver_db->get($tableNamePix);,提示的错误为表中没有这个字段我是知道的,我想知道再往下我想修改sql语句去哪里看代码