摘要:Airflow是一个使用Python语言编写的分布式调度平台,通过DAG(Directed acyclic graph 有向无环图)来管理任务。

本文分享自华为云社区《分布式调度平台Airflow在华为云MRS中的实践》,作者: 啊喔YeYe 。

介绍

Airflow是一个使用Python语言编写的分布式调度平台,通过DAG(Directed acyclic graph 有向无环图)来管理任务,不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。其平台拥有和Hive、Presto、MySQL、HDFS、Postgres等数据源之间交互的能力,并且提供了hook,使其拥有很好地扩展性。

MapReduce服务提供租户完全可控的企业级大数据集群云服务,可轻松运行Hadoop、Spark、HBase、Kafka、Storm等大数据组件。Airflow对接MapReduce服务后,可依靠Airflow平台提供的命令行界面和一个基于Web的用户界面,可以可视化管理依赖关系、监控进度、触发任务等

环境准备

  • 在华为云购买弹性云服务器ECS,用于安装运行Airflow,并绑定弹性公网IP,用于访问公网安装Airflow服务
  • 已开通MRS 3.x普通集群
  • 弹性云服务器ECS的虚拟私有云和安全组需与MRS普通集群一致,其公共镜像建议选择CentOS 8.2 64bit

安装Airflow

1. 登录已购买的Linux弹性云服务器,执行以下命令升级pip版本

pip3 install --upgrade pip==20.2.4

2. 安装Airflow以及创建登录Airflow的admin用户

使用vim 脚本名.sh新建脚本,写入如下内容并保存,使用sh 脚本名.sh执行脚本,执行完成后会创建登录Airflow的admin用户,并输入密码完成创建。本脚本会完成Airflow的安装以及创建登录Airflow的admin用户。脚本含义见注释。

# airflow needs a home, ~/airflow is the default,
# but you can lay foundation somewhere else if you prefer
# (optional)
export AIRFLOW_HOME=~/airflow AIRFLOW_VERSION=2.0.1
PYTHON_VERSION="$(python3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
# For example: 3.6
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
# For example: https://raw.githubusercontent.com/apache/airflow/constraints-2.0.1/constraints-3.6.txt
pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}" # initialize the database
airflow db init airflow users create \
--username admin \
--firstname Peter \
--lastname Parker \
--role Admin \
--email spiderman@superhero.org

3.执行以下命令启动Airflow WebServer

airflow webserver --port 8080 -D

4. 执行以下命令启动Airflow Scheduler

airflow scheduler -D

5. 访问Airflow WebUI

在本地浏览器输入“http://ECS弹性IP:8080”网址,进入Airflow WebUI登录界面

登录之后:

提交spark作业至MRS

1. 参考安装客户端在运行Airflow的弹性云服务器ECS上安装MRS客户端

例如安装客户端到/opt/client目录下,安装命令:

sh ./install.sh /opt/client/ -o chrony

2. 在安装Airflow的目录下新建目录"dags"

如Airflow安装目录是“/root/airflow”,新建目录“/root/airflow/dags”

3. 新建提交Spark作业的Python脚本

在新建目录下使用vim 脚本名.py新建python脚本并保存,脚本内容如下:

from datetime import timedelta
from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.operators.dummy import DummyOperator
from airflow.utils.dates import days_ago args = {
'owner': 'airflow',
} dag = DAG(
dag_id='spark-pi',
default_args=args,
start_date=days_ago(200),
schedule_interval='@once',
dagrun_timeout=timedelta(minutes=300),
tags=['spark'],
) run_this = BashOperator(
task_id='run_on_yarn',
# 其他组件命令参考MRS组件开发指南,将任务提交或运行命令替换到bash_command变量
bash_command='source /opt/client/bigdata_env;spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster /opt/client/Spark2x/spark/examples/jars/spark-examples_2.11-2.4.5-hw-ei-302023.jar 10',
#bash_command='echo "run"; echo 0 >> /tmp/test',
dag=dag,
) run_this

4. 登录Airflow WebUI,单击“spark-pi”左侧的开关按钮,然后单击右侧的三角按钮运行

5. 登录Manager页面,选择“集群 > 服务 > Yarn > 概览”

6. 步单击“ResourceManager WebUI”后面对应的链接,进入Yarn的WebUI页面,查看Spark任务是否运行

点击关注,第一时间了解华为云新鲜技术~

解读分布式调度平台Airflow在华为云MRS中的实践的更多相关文章

  1. 华为云MRS支持lakeformation能力,打造一站式湖仓,释放数据价值

    摘要:对云端用户而言,业务价值发现是最重要的,华为MRS支持LakeFormation后,成功降低了数据应用的成本,帮助客户落地"存"与"算"的管理,加快推进了 ...

  2. Elastic-Job 分布式调度平台

    概述 referred:http://elasticjob.io/docs/elastic-job-lite/00-overview Elastic-Job是一个分布式调度解决方案,由两个相互独立的子 ...

  3. 中国DevOps平台市场,华为云再次位居领导者位置

    摘要:华为云软件开发生产线DevCloud在市场份额和发展战略两大维度均排名第一,再次位居领导者位置. 9月21日 ,国际权威分析师机构IDC发布<IDC MarketScape: 中国 Dev ...

  4. 华为云 MRS 基于 Apache Hudi 极致查询优化的探索实践

    背景 湖仓一体(LakeHouse)是一种新的开放式架构,它结合了数据湖和数据仓库的最佳元素,是当下大数据领域的重要发展方向. 华为云早在2020年就开始着手相关技术的预研,并落地在华为云 Fusio ...

  5. 华为云的API调用实践(python版本)

    一.结论: 1.华为云是符合openstack 社区的API,所以,以社区的API为准.社区API见下面的链接. https://developer.openstack.org/api-ref/net ...

  6. 华为云函数中使用云数据库的JavaScript SDK基础入门

    背景介绍 使用云数据库Server端的SDK,此处我以华为提供的官方Demo为例,他们的Demo也已经开源放在了GitHub上,大家需要的可以自行下载. https://github.com/AppG ...

  7. 分布式调度平台XXL-JOB源码分析-执行器端

    上一篇文章已经说到调度中心端如何进行任务管理及调度,本文将分析执行器端是如何接收到任务调度请求,然后执行业务代码的. XxlJobExecutorApplication为我们执行器的启动项,其中有个X ...

  8. 分布式调度平台XXL-JOB源码分析-调度中心

    架构图 上图是我们要进行源码分析的2.1版本的整体架构图.其分为两大块,调度中心和执行器,本文先分析调度中心,也就是xxl-job-admin这个包的代码. 关键bean 在application.p ...

  9. 分布式调度平台XXL-JOB源码分析-时序图

    整体流程 初始化 任务调度 任务执行 任务回调 注册心跳

  10. 全链路压测平台(Quake)在美团中的实践

    背景 在美团的价值观中,以“客户为中心”被放在一个非常重要的位置,所以我们对服务出现故障越来越不能容忍.特别是目前公司业务正在高速增长阶段,每一次故障对公司来说都是一笔非常不小的损失.而整个IT基础设 ...

随机推荐

  1. Redis 6 学习笔记 1 —— NoSQL数据库介绍,Redis常用数据类型

    NoSQL数据库介绍(了解) 技术的分类1.解决功能性的问题:Java.Jsp.RDBMS.Tomcat.HTML.Linux.JDBC.SVN,2.进一步地,解决系统功能扩展性的问题:Struts. ...

  2. Safepoints: Meaning, Side Effects and Overheads(译文)

    Safepoints: Meaning, Side Effects and Overheads (安全点:含义.副作用和开销) 去年,我一直在进行有关profiling以及JVM运行时/执行的一些讨论 ...

  3. 比较并交换(compare and swap, CAS)

    比较并交换(compare and swap, CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生 ...

  4. IT运营与DevOps:有何不同?

    IT 运营和 DevOps 满足许多现代企业密切相关的需求.然而,尽管这两种角色之间有许多相似之处,但也有重要的区别,将 IT 运营与 DevOps 混为一谈是错误的. 本文通过解释每种类型的角色是做 ...

  5. Redis系列之常见数据类型应用场景

    目录 String 简单介绍 常见命令 应用场景 Hash 简单介绍 常见命令 应用场景 List 简单介绍 常见命令 应用场景 Set 简单介绍 常见命令 应用场景 Sorted Set(Zset) ...

  6. Keil MDK忽略警告, 包括文件末尾空白行, 未使用等警告

    首先应该了解为什么Keil MDK 会有这样的警告, 原因简单说就是C99规定了要在末尾行加回车 一. 你可以使用格式化工具对所有源文件进行一次格式化处理. 二. 在Keil MDK中查看 Build ...

  7. 二分查找binary_search

    一.解释 二.常用操作 1.头文件 #include <algorithm> 2.使用方法 a.binary_search:查找某个元素是否出现. a.函数模板:binary_search ...

  8. STL multiset容器

    multiset容器的概念和性质 set在英文中的意义是:集合.而multi−前缀则表示:多重的.所以multiset容器就叫做:有序多重集合. multiset的很多性质和使用方式和set容器差不了 ...

  9. 在PowerShell脚本中获取程序集文件属性的指定元数据特性的方法——AssemblyMetadataAttribute

    在PowerShell脚本中获取程序集文件属性的指定元数据特性的方法--AssemblyMetadataAttribute <# .SYNOPSIS 获取程序集文件属性的指定元数据特性 .DES ...

  10. CTA策略介绍

    CTA策略更多的时候是一种投资方法,更准确的说,主要投资于衍生品的.比较系统化规则化的投资方法都可以称作CTA投资,它并不拘泥于量化或是主动,其具有相当的生命力,会长期存在. CTA策略的收入来源是多 ...