解读分布式调度平台Airflow在华为云MRS中的实践
摘要: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中的实践的更多相关文章
- 华为云MRS支持lakeformation能力,打造一站式湖仓,释放数据价值
摘要:对云端用户而言,业务价值发现是最重要的,华为MRS支持LakeFormation后,成功降低了数据应用的成本,帮助客户落地"存"与"算"的管理,加快推进了 ...
- Elastic-Job 分布式调度平台
概述 referred:http://elasticjob.io/docs/elastic-job-lite/00-overview Elastic-Job是一个分布式调度解决方案,由两个相互独立的子 ...
- 中国DevOps平台市场,华为云再次位居领导者位置
摘要:华为云软件开发生产线DevCloud在市场份额和发展战略两大维度均排名第一,再次位居领导者位置. 9月21日 ,国际权威分析师机构IDC发布<IDC MarketScape: 中国 Dev ...
- 华为云 MRS 基于 Apache Hudi 极致查询优化的探索实践
背景 湖仓一体(LakeHouse)是一种新的开放式架构,它结合了数据湖和数据仓库的最佳元素,是当下大数据领域的重要发展方向. 华为云早在2020年就开始着手相关技术的预研,并落地在华为云 Fusio ...
- 华为云的API调用实践(python版本)
一.结论: 1.华为云是符合openstack 社区的API,所以,以社区的API为准.社区API见下面的链接. https://developer.openstack.org/api-ref/net ...
- 华为云函数中使用云数据库的JavaScript SDK基础入门
背景介绍 使用云数据库Server端的SDK,此处我以华为提供的官方Demo为例,他们的Demo也已经开源放在了GitHub上,大家需要的可以自行下载. https://github.com/AppG ...
- 分布式调度平台XXL-JOB源码分析-执行器端
上一篇文章已经说到调度中心端如何进行任务管理及调度,本文将分析执行器端是如何接收到任务调度请求,然后执行业务代码的. XxlJobExecutorApplication为我们执行器的启动项,其中有个X ...
- 分布式调度平台XXL-JOB源码分析-调度中心
架构图 上图是我们要进行源码分析的2.1版本的整体架构图.其分为两大块,调度中心和执行器,本文先分析调度中心,也就是xxl-job-admin这个包的代码. 关键bean 在application.p ...
- 分布式调度平台XXL-JOB源码分析-时序图
整体流程 初始化 任务调度 任务执行 任务回调 注册心跳
- 全链路压测平台(Quake)在美团中的实践
背景 在美团的价值观中,以“客户为中心”被放在一个非常重要的位置,所以我们对服务出现故障越来越不能容忍.特别是目前公司业务正在高速增长阶段,每一次故障对公司来说都是一笔非常不小的损失.而整个IT基础设 ...
随机推荐
- 【Qt6】列表模型——几个便捷的列表类型
前面一些文章,老周简单介绍了在Qt 中使用列表模型的方法.很明显,使用 Item Model 在许多时候还是挺麻烦的--要先建模型,再放数据,最后才构建视图.为了简化这些骚操作,Qt 提供了几个便捷类 ...
- Django + celery + redis 执行异步任务及查看结果
官方文档 https://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-celery-wit ...
- c#享元模式详解
基本介绍: 享元模式的定义:运用共享技术有效地支持大量细粒度的对象重复使用.适用于大量小粒度的对象造成的运行效率和内存使用效率低下的情况. "享元"顾名思义,"享 ...
- node 实现上传 和 下载 文件接口 简易版
var express = require('express');var fs = require('fs');var path = require('path');var multipart = r ...
- 原生JS实现视频截图
视频截图效果预览 利用Canvas进行截图 要用原生js实现视频截图,可以利用canvas的绘图功能 ctx.drawImage,只需要获取到视频标签,就可以通过drawImage把视频当前帧图像绘制 ...
- Windows10下的hexo搭建
用hexo搭建个人博客 查看效果:慢蜗牛博客 目录 用hexo搭建个人博客 准备环境 Github Node.js和Git 连接Github 安装hexo 安装插件 部署 Hexo 到 GitHub ...
- EMCC13.5+Oracle19.13+Redhat8 In Silent Mode
问题描述:使用静默的方式来安装emcc13.5+Oracle19.13,准备好19c的oracle环境,一开始用21c的库+emcc13.5的安装检查一直过不去,但是19c是没有问题的,具体问题会在下 ...
- Vue项目的创建、运行与端口号修改
前言:Vue-cli是Vue官方提供的一个脚手架,用于快速生成一个Vue的项目模板,依赖于NodeJS环境 NodeJS下载:NodeJS安装下载 Vue-cli下载:Vue-cli下载 一.Vue图 ...
- java-导出pdf
前言: 纯代码画pdf格式 <!-- iText PDF --> <dependency> <groupId>com.itextpdf</groupId& ...
- 使用nacos配置无效,原因:项目中 gateway服务配置的 application的name:@artifactId@ 和nacos上配置的DataID 不一致导致
遇到一个问题,项目启动后一致无法正常登陆进入后端,登陆时一直报错返回null,排查后发现是自己粗心,项目中 gateway服务配置的 application的name:@artifactId@ 和 ...