解读分布式调度平台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基础设 ...
随机推荐
- docker入门加实战—项目部署之DockrCompose
docker入门加实战-项目部署之DockrCompose 我们部署一个简单的java项目,可能就包含3个容器: MySQL Nginx Java项目 而稍微复杂的项目,其中还会有各种各样的其它中间件 ...
- CodeTON Round 4 (Div. 1 + Div. 2)C
C. Make It Permutation 我们希望尽可能少地进行操作可以使代价最小,我们如果要排列的话,那些重复的元素我们无论如何都要进行删除的,所以我们可以先把去重的代价计算出来,然后依次枚举排 ...
- 五分钟k8s实战-Istio 网关
在上一期 k8s-服务网格实战-配置 Mesh 中讲解了如何配置集群内的 Mesh 请求,Istio 同样也可以处理集群外部流量,也就是我们常见的网关. 其实和之前讲到的k8s入门到实战-使用Ingr ...
- 6k Star!B站、滴滴、小红书都在用的网站防火墙
你有网站么?你担心网站被黑客攻击么?你知道如何抵御来自黑客的攻击吗? 据称互联网上有 30% 的流量都来自于恶意攻击.做过 Web 开发或者有过建站经验的朋友对 SQL 注入.CC 攻击.XSS.We ...
- Kubernetes 中的服务注册与发现原理分析
公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 对k8s有点了解技术人员,应该都只知道k8s是有服务注册发现的,今天就分析下这个原理,看看怎么实现的. 什么是服务注册与发 ...
- 外包杯学习进度(一) | 【Android】【Javaweb】Android与JavaWeb服务器交互教程——搭建环境
前言 我们老师留了一个题目,这里就不写了,第一需要攻破的问题就是如何将app中的数据域javaweb进行传递,并可以回弹消息等问题.所以就开始了解一下这方面的信息. 资料积累 参考胡大炮的妖孽人生的博 ...
- 校园社团活动管理系统(适合小白)基础javaweb前端项目实战【包含增删改查,mysql】一
校园社团活动管理系统(20分) 1.项目需求: 校园社团作为高校课外活动的重要组成部分,发展十分迅速,也受到越来越多学生的欢迎,社团规模.数量等都在日益增长,社团活动也更为多样和丰富.然而,大多数高校 ...
- ARM汇编指令实验
题目 地址为0x40008000起始的内存中存放了20个无符号的8位整数,请编写ARM汇编程序实现如下功能: 采用冒泡法将以上内存中的数据按照从小到大的顺序排列. 注意:在验收实验时,需要自己把具体的 ...
- C++ Qt开发:Slider滑块条组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Slider滑 ...
- Pytorch实现YOLOv3训练自己的数据集
1.说明: 最近一直在研究深度学习框架PyTorch,就想使用pytorch去实现YOLOv3的object detection.在这个过程中也在各大论坛.贴吧.CSDN等中看了前辈们写的文章,在这里 ...