Apache Airflow 2.0 發布,Airbnb 開源的調度系統

2021-01-11 開源中國

Apache Airflow 2.0.0 已正式發布,Airflow 是一個靈活、可擴展的工作流自動化和調度系統,可編集和管理數百 PB 的數據流。項目可輕鬆編排複雜的計算工作流,通過智能調度、資料庫和依賴關係管理、錯誤處理和日誌記錄,Airflow 可以對從單個伺服器到大規模集群的資源進行自動化管理。Airflow 採用 Python 編寫,具有高擴展性,能夠運行其他語言編寫的任務,並允許與常用的體系結構和項目集成,如 AWS S3、Docker、Kubernetes、MySQL、PostgresSQL 等。

下面簡單介紹 2.0 版本的主要新特性。

更新 UI

Airflow 2.0 對 UI 進行了重大更新,並升級了部分樣式。

引入編寫 dag(有向無環圖)的新方法:TaskFlow API

新的方法對依賴關係的處理更清晰,XCom 也更易於使用。

示例

from airflow.decorators import dag, taskfrom airflow.utils.dates import days_ago@dag(default_args={'owner': 'airflow'}, schedule_interval=None, start_date=days_ago(2))def tutorial_taskflow_api_etl(): @task def extract(): return {"1001": 301.27, "1002": 433.21, "1003": 502.22} @task def transform(order_data_dict: dict) -> dict: total_order_value = 0 for value in order_data_dict.values(): total_order_value += value return {"total_order_value": total_order_value} @task() def load(total_order_value: float): print("Total order value is: %.2f" % total_order_value) order_data = extract() order_summary = transform(order_data) load(order_summary["total_order_value"])tutorial_etl_dag = tutorial_taskflow_api_etl()

詳情查看
TaskFlow API Tutorial
TaskFlow API Documentation

提升 Scheduler 性能

2.0 版本提升了 Airflow Scheduler 性能,啟動任務的速度明顯變快。在 Astronomer.io 上對此 Scheduler 進行基準測試的結果顯示,它的速度快到連開發者都懷疑結果出錯了。

Scheduler 現已兼容 HA

支持運行多個 scheduler 實例,這對於彈性使用(如果 scheduler 發生故障)和調度性能都非常有意義。若希望完全使用此功能,需要 Postgres 9.6+ 或 MySQL 8+(MySQL 5 和 MariaDB 可能無法使用多個 scheduler)。

運行多個 scheduler 不需要任何配置或其他設置,只需在其他地方啟動 scheduler (確保它可以訪問 DAG 文件),它將通過資料庫與現有的 scheduler 配合使用。

詳情查看 Scheduler HA 文檔。

簡化 KubernetesExecutor

Airflow 2.0 重新建立了 KubernetesExecutor 架構,為 Airflow 用戶提供更快、更容易理解和更靈活的使用方式。用戶現在可以訪問完整的 Kubernetes API 來創建一個 .yaml  pod_template_file,而不是在 airflow.cfg 中指定參數。

此外還用pod_override參數替換了executor_config詞典,此項變化從 KubernetesExecutor 刪除了三千多行代碼,使其運行速度更快,並減少潛在錯誤。

詳情查看
Docs on pod_template_file
Docs on pod_override

完整發布公告 https://airflow.apache.org/blog/airflow-two-point-oh-is-here/。

相關焦點

  • Apache RocketMQ 4.4.0 發布
    萬眾期待的 4.4.0 版本終於在昨天成功發布,值得關注的新特性包括權限控制(ACL)和消息軌跡(Msg Trace)。下面大家解讀該版本引入的這兩大特性。
  • Apache DolphinScheduler 1.3.2 發布,性能提升 2~3 倍
    (Incubating)經過長達  5 個多月的辛苦努力, 終於發布了 1.3.2 正式版本。DolphinScheduler-1.3.2 有超過 30 名貢獻者參與開發,性能較 1.2 版本有 2 ~ 3 倍的提升,相對 1.2 版本,1.3.x 增加了諸如 K8s支持、多目錄管理等重要的新特性和新的任務類型。
  • Apache SkyWalking(Incubating) 5.0.0-alpha 發布
    5.x版本系列的首次發布,系統迎來了全新的UI和功能特性。現代化的UI,後端複雜的分析能力,展現了從3.x到5.x的跨越,以及技術迭代。新版本從7個維度可視化剖析分布式系統的運行情況1. 幫助從單個實例的角度查看系統的運行情況。可以通過搜索框查詢到任何一個在運行的進程。
  • Apache Kudu 1.8.0 發布,Hadoop 生態數據存儲系統
    Hadoop 數據存儲系統 Apache Kudu 1.8.0 已發布,該版本包含以下新特性:引入了手動數據重新平衡工具,可用於在平板電腦伺服器之間重新分配表副本改進診斷工具,使診斷和故障排除更加簡單添加了對 Spark Streaming DataFrames 的支持到 Kudu Spark 連接器為 Python 客戶端添加了Pandas支持詳情請看發布說明
  • Apache Hadoop 3.0.0 GA 正式發布,要求 Java 8
    編者註:Hadoop 發布了全新 3.0 版本,關於該版本的主要改進說明,
  • 基於TensorFlow2.0的中文深度學習開源書來了!GitHub趨勢日榜第一
    十三 發自 凹非寺 量子位 報導 | 公眾號 QbitAITensorFlow 2.0 發布已有一個半月之久,你會用了嗎?近日,一個叫做深度學習開源書的項目在火了。因為這是一本基於TensorFlow 2.0 正式版的中文深度學習開源書。還包含電子書和配套原始碼。話不多說,一起來看看這本爆款書籍吧!
  • Apache Flex BlazeDS 4.7.0 發布 - OSCHINA - 中文開源技術交流社區
    Apache Flex BlazeDS 4.7.0 發布,Apache Flex BlazeDS 是基於伺服器的 Java 遠程和 Web 消息技術,允許開發者簡單連接到後端分布式數據和實時推送數據到
  • Airbnb 的數據基礎架構|數據|基礎架構|集群_網易科技
    在接下來的幾周內,我們將發布一系列突出我們的分布式架構和工具組件的博客文章。由於開源貢獻者提供了許多我們每天使用的基礎系統,使我們不僅樂意分享在公共 GitHub 的項目,而且還會聊我們一路上學到的東西。了解我們數據基礎設施的一些非正式理念:放眼開源世界:在開源社區中數據基礎設施有很多好的資源,我們儘量採用這些系統。
  • 谷歌開源TensorFlow Object Detection API物體識別系統
    API 將谷歌內部使用的物體識別系統(2016 年 10 月,該系統在 COCO 識別挑戰中名列第一)開源給更大的社區,幫助打造更好的計算機視覺模型。今天,我們很高興通過 TensorFlow Object Detection API 把該系統開源給更大的研究社區。這個代碼庫是一個建立在 TensorFlow 頂部的開源框架,方便其構建、訓練和部署目標檢測模型。我們設計這一系統的目的是支持當前最佳的模型,同時允許快速探索和研究。
  • 使用Apache Mesos 打造分布式資源調度系統
    最近發布的Apache Mesos 1.0意味著這項技術已經成熟,相比我們首次使用該服務時已經有了巨大的改進。Apache Mesos可將要使用集群的「框架」的資源分配,與框架任務的資源調度區分處理。當Mesos確定要將多少資源分配給框架後,將由框架的調度器決定在什麼時候將哪些資源分配給哪個任務。這樣的調度器是一種相當簡單的API,因此也能更專注於調度邏輯,並對分布式系統中不可避免出現的故障做出回應。藉此用戶可以針對不同用例編寫不同調度器,不像Mesos那樣為所有用例使用一個統一的調度器。
  • TensorFlow 2.0開源工具書,30天「無痛」上手
    有人在 GitHub 開源了一個名為《30 天吃掉那隻 TensorFlow2.0》的入門工具書,或許可以讓你無痛上手 TensorFlow 2.0。作者 lyhue1991 表示,這本書對「人類用戶極其友善」,以「Don't let me think」為最高追求,「如果說通過學習 TensorFlow 官方文檔掌握 TensorFlow2.0 的難度大概是 9 的話,那麼通過學習本書掌握 TensorFlow2.0 的難度應該大概是 3。」
  • Elastic Stack 6.0 beta 發布,開源系列合集
    Elastic Stack 6.0  beta 發布了,ElasticStack 是一系列開源產品的合集,包括 Elasticsearch、Kibana、Logstash 以及 Beats 等等
  • Apache Maven 3.0.1 發布 - OSCHINA - 中文開源技術交流社區
    Maven 剛剛發布了 3.0.1 版本。 下載地址:http://maven.apache.org/download.html 改進內容: ** Bug * [MNG-4850] - [regression] several elements of server configuration in settings.xml are not honoured * [MNG-4858
  • Apache Pulsar 2.6.1 版本正式發布:功能增強,新增 OAuth2 支持
    在 Apache Pulsar 2.6.0 版本發布後的 2 個月,2020 年 8 月 21 日,Apache Pulsar 2.6.1 版本正式發布!
  • 與TensorFlow 功能互補的騰訊 angel 發布 3.0 :高效處理千億級別...
    自 2017 年 angel1.0 在 Github 上開源以來,angel 共獲得星標數超過 4200、fork 數超 1000。騰訊發布了相關文章介紹了 angel3.0 更新細節等內容,雷鋒網(公眾號:雷鋒網) AI 開發者將其整理編輯如下。
  • 從星際2深度學習環境到神經機器翻譯,上手機器學習這些開源項目必...
    lllyasviel/style2paintsGitHub 地址:https://github.com/lllyasviel/style2paintsAI 漫畫線稿自動上色工具。tensorflow / tensorflowGitHub 地址:https://github.com/tensorflow/tensorflow一個採用數據流圖(data flow graphs),用於數值計算的開源軟體庫Theano / TheanoGitHub
  • Apache Flink 1.9.0 發布,開源流處理框架
    Apache Flink 1.9.0 已經發布,Apache Flink 項目的目標是開發一個流處理系統,以統一和支持多種形式的實時和離線數據處理應用程式以及事件驅動的應用程式。
  • 什麼是 ALC (Apache Local Community) Beijing?
    他於 2018 年和 2019 年在上海組織過兩次 ASF Committer 的 Meetup[1][2][3],希望能夠幫助本土的開發者更好的理解開源參與開源。由於時間倉促和場地有限,只邀請到華東地區的 ASF 項目開發者,並沒有惠及到更多的的 ASF 項目的用戶。通過這幾次 Meetup 大家發現,本土開發者對於 Apache 理念和倡導的哲學並不了解。
  • 挑戰TensorFlow、PyTorch,「後浪」OneFlow 有沒有機會?
    1、Actor機制實現去中心化調度OneFlow的運行時去中心化調度就是用Actor機制實現的。在整個由Actor構成的靜態圖中,沒有一個中心的調度節點,每個Actor都只需要關心自己消費的那些Actor,和消費自己生產出的數據的那些Actor即可。這樣在超大規模的分布式訓練場景下,完全的去中心化調度可以避免中心調度的單點性能瓶頸問題。
  • Tensorflow 2.0 即將入場
    而就在即將到來的2019年,Tensorflow 2.0將正式入場,給暗流湧動的框架之爭再燃一把火。如果說兩代Tensorflow有什麼根本不同,那應該就是Tensorflow 2.0更注重使用的低門檻,旨在讓每個人都能應用機器學習技術。