You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2020/12/17 11:31:04 UTC

[GitHub] [airflow-site] ashb commented on a change in pull request #355: 2.0 release content

ashb commented on a change in pull request #355:
URL: https://github.com/apache/airflow-site/pull/355#discussion_r545014095



##########
File path: landing-pages/site/content/en/blog/airflow-two-point-oh-is-here/index.md
##########
@@ -0,0 +1,144 @@
+---
+title: "Apache Airflow 2.0 is here!"
+linkTitle: "Apahce Airflow 2.0 is here!"
+author: "Ash Berlin-Taylor"
+github: "ashb"
+linkedin: "ashberlin"
+description: "We're proud to announce that Apache Airflow 2.0.0 has been released."
+tags: [Release]
+date: "2020-12-17"
+---
+
+I am proud to announce that Apache Airflow 2.0.0 has been released.
+
+The full changelog is about 3,000 lines long (already excluding everything backported to 1.10), so for now I'll simply share some of the major features in 2.0.0 compared to 1.10.14:
+
+## A new way of writing dags: the TaskFlow API (AIP-31)
+
+(Known in 2.0.0alphas as Functional DAGs.)
+
+DAGs are now much much nicer to author especially when using PythonOperator. Dependencies are handled more clearly and XCom is nicer to use
+
+Read more here:
+
+[TaskFlow API Tutorial](http://airflow.apache.org/docs/apache-airflow/stable/tutorial_taskflow_api.html)  
+[TaskFlow API Documentation](https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#decorated-flows)
+
+A quick teaser of what DAGs can now look like:
+
+```python
+from airflow.decorators import dag, task
+from 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()
+```
+
+## Fully specified REST API (AIP-32)
+
+We now have a fully supported, no-longer-experimental API with a comprehensive OpenAPI specification
+
+Read more here:
+
+[REST API Documentation](http://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html).
+
+## Massive Scheduler performance improvements
+
+As part of AIP-15 (Scheduler HA+performance) and other work Kamil did, we significantly improved the performance of  the Airflow Scheduler. It now starts tasks much, MUCH quicker.
+
+Over at Astronomer.io we've [benchmarked the scheduler—it's fast](https://www.astronomer.io/blog/airflow-2-scheduler) (we had to triple check the numbers as we don't quite believe them at first!)
+
+## Scheduler is now HA compatible (AIP-15)
+
+It's now possible and supported to run more than a single scheduler instance. This is super useful for both resiliency (in case a scheduler goes down) and scheduling performance.
+
+To fully use this feature you need Postgres 9.6+ or MySQL 8+ (MySQL 5, and MariaDB won't work with more than one scheduler I'm afraid).
+
+There's no config or other set up required to run more than one scheduler—just start up a scheduler somewhere else (ensuring it has access to the DAG files) and it will cooperate with your existing schedulers through the database.
+
+For more information, read the [Scheduler HA documentation](http://airflow.apache.org/docs/apache-airflow/stable/scheduler.html#running-more-than-one-scheduler).
+
+## Task Groups (AIP-34)
+
+SubDAGs were commonly used for grouping tasks in the UI, but they had many drawbacks in their execution behaviour (primarirly that they only executed a single task in parallel!) To improve this experience, we’ve introduced "Task Groups": a method for organizing tasks which provides the same grouping behaviour as a subdag without any of the execution-time drawbacks.
+
+SubDAGs will still work for now, but we think that any previous use of SubDAGs can now be replaced with task groups. If you find an example where this isn't the case, please let us know by opening an issue on GitHub
+
+For more information, check out the [Task Group documentation](http://airflow.apache.org/docs/apache-airflow/stable/concepts.html#taskgroup).
+
+## Refreshed UI
+
+We've given the Airflow UI [a visual refresh](https://github.com/apache/airflow/pull/11195) and updated some of the styling.
+
+![Airflow 2.0's new UI](airflow-2.0-ui.gif)
+
+Check out [the screenshots in the docs](http://airflow.apache.org/docs/apache-airflow/stable/ui.html) for more.
+
+## Smart Sensors for reduced load from sensors (AIP-17)
+
+If you make heavy use of sensors in your Airflow cluster, you might find  that sensor execution takes up a significant proportion of your cluster even with "reshedule" mode. To improve this,  we've added a new mode called "Smart Sensors".

Review comment:
       Can't apply this suggestion for some reason.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org