ARM+麒麟大数据环境搭建:Airflow

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: ARM+麒麟大数据环境搭建:Airflow

第1章概述
1.1编写目的
暂无
1.2业务背景
暂无
第2章组件介绍
2.1组件介绍与架构说明
airflow 介绍 airflow是一款开源的,分布式任务调度框架,它将一个具有上下级依赖关系的工作流,组装成一个有向无环图,其作为整个中台的作业调度中心,为数据批处理提供基础服务。
2.2逻辑部署拓扑
airflow的运行流程从逻辑上可为分为两个节点,调度器Scheduler 和执行器:Executor,调度器是一种使用 DAG 定义结合元数据中的任务状态来决定哪些任务需要被执行以及任务执行优先级的过程。调度器通常作为服务运行。执行器是一个消息队列进程,它被绑定到调度器中,用于确定实际执行每个任务计划的工作进程。
2.3物理部署拓扑
Scheduler 和Executor均部署在node4上
2.4依赖环境
硬件:Phytium ARM CPU,银河麒麟v10 内核版本4.19.90-17 arm64 桌面版
python依赖:python3.8
组件依赖:无

2.5界面效果
2.5.1安装完成后的运行效果
image.png

2.5.2运行日志
运行日志在~/airflow/logs目录下,可使用cat命令进行查看
image.png

第3章部署步骤
3.1安装python3.8.6
3.1.1编译安装python3.8.6
解压python-3.8.6.tgz,将python3.8.6安装至/usr/local/python3目录
进入Python-3.8.6/Modules目录,编辑Setup文件,将以下5行注释去掉,如下图
image.png

建立目录
mkdir /usr/local/python3
进入Python-3.8.6目录,执行编译安装
cd Python-3.8.6
./configure --prefix=/usr/local/python3
make && make install
3.1.2建立python3和pip3的软链
删除原有的链接
rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
创建python3的软链
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
创建pip3 的软链
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
3.1.3添加环境变量
编辑/etc/profile文件
vi /etc/profile
加入以下内容
环境变量,
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/python3/lib
配置airflow需要的环境变量,
export AIRFLOW_HOME=~/airflow
export AIRFLOW_GPL_UNIDECODE=yes
添加python3的目录,否则无法识别airflow命令
export PATH=$PATH:/usr/local/python3/bin
保存退出,加载环境变量
source /etc/profile

测试pip3和python3命令,出现如下版本号则安装成功
[root@node4 python+pip] python3 -V
Python 3.8.6
[root@node4 python+pip] pip3 -V
pip 20.2.1 from /usr/local/python3/lib/python3.8/site-packages/pip (python 3.8)
image.png

3.1.4升级pip3的版本
进入安装包的python+pip目录,执行以下语句:

进入安装包python+pip目录
cd python+pip
安装pip新版本
pip3 install pip-21.3.1-py3-none-any
再次查看版本,已更新为21.3.1
pip3 -V

3.2安装airflow
1.123.2.1安装airflow
进入安装包airflow_1.10.9_all,执行安装

[重要] 安装setuptools 49.2.1,
pip3 install setuptools-49.2.1-py3-none-any.whl

[重要] 安装numpy 1.18.1,
自动安装的版本为1.22.2,与本操作系统不兼容
解压unzip numpy-1.18.1.zip,进入解压目录进行安装
python3 setup.py install

安装airflow
执行安装
pip3 install apache-airflow --no-index -f ./
安装时间会比较长,如出现版本不兼容的报错,可忽略,如出现报错,参考以下方法解决:

报错:
安装pendulum-1.4.4.tar.gz时报
ERROR: Could not find a version that satisfies the requirement setuptools>=60.9.3 (from versions: none)
ERROR: No matching distribution found for setuptools>=49.2.1

解决方法:
执行以下命令后,重新执行安装
解压 pendulum-1.4.4.tar.gz,进入解压的目录,执行
python3 setup.py install 安装

报错:
distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('pytest-runner')

解决方法:
执行以下命令后,重新执行安装
pip3 install pytest_runner-6.0.0-py3-none-any.whl

报错:
ModuleNotFoundError: No module named '_ssl'

解决方法:
依次按顺序执行以下命令后,重新执行安装
rpm -ivh e2fsprogs-devel-1.45.3-4.p01.ky10.aarch64.rpm
rpm -ivh keyutils-libs-devel-1.5.10-11.ky10.aarch64.rpm
rpm -ivh libverto-devel-0.3.1-2.ky10.aarch64.rpm
rpm -ivh krb5-devel-1.17-9.ky10.aarch64.rpm
rpm -ivh openssl-devel-1.1.1d-9.ky10.aarch64.rpm

注:如还出现其他类似的缺少包的提示,都可使用pip3 install进行安装,所有依赖的包都在airflow_1.10.9目录里,最终出现Successfully installed,表示安装成功。

3.2.2初始化数据库
初始化数据库
airflow initdb

1.2.3.3.13.23.2.3启动airflow
启动airflow web
指定端口
airflow webserver -p xxx
不指定端口,默认为8080,启动成功后,通过http://x.x.x.x:8080访问
airflow webserver
使用以下命令可使airflow不随窗口关闭而关闭,并将日志输出(追加)到指定目录
nohup airflow webserver >> /airflow.log &
启动airflow scheduler,必须启动scheduler,否则web界面不更新新的dag等内容,
airflow scheduler

image.png

3.2.4更改数据库为mysql
Airflow默认数据库为SQLite,如需更改数据库为mysql,请修改$AIRFLOW_HOME/airflow.cfg文件,默认在~/airflow/airflow.cfg,加入以下内容
加入以下语句,格式如下:
mysq://[db_username]:[db_password]@[db_host]:[db_port]/[db_name]
例:
sql_alchemy_conn = mysql://root:root@localhost:3306/airflow charset=utf8
注:配置完后,重新使用airflow initdb初始化数据库,请提前准备好数据库及设置访问权限

如出现:ModuleNotFoundError: No module named 'MySQLdb',请在安装目录执行pip3 install mysqlclient-1.3.14.tar.gz 安装mysqlclient,

如出现:OSError: mysql_config not found,请在安装目录执行rpm -ivh mysql-community-devel-8.0.28-1.el8.aarch64.rpm 安装 mysql-devel

3.2.5中文化
进入airflow_1.10.9_all目录,安装Flask-BabelEx和PyMySQL

pip3 install Flask_BabelEx-0.9.4-py3-none-any.whl
pip3 install PyMySQL-0.9.3-py2.py3-none-any.whl

修改配置文件,~/airflow/airflow.cfg

修改时区
default_timezone = Asia/Shanghai
不加载示例
load_examples = False
将汉化包里的文件替换/usr/local/python3/lib/python3.8/site-packages/airflow目录里的文件,再重新始初化数据库,重新启动服务

3.2.6运行报错配置
为了捕获airflow运行dag时的报错信息,需要配置报错信息接收的数据库连接,修改/usr/local/python3/lib/python3.8/site-packages/airflow/www/utils.py 第528行,按实际情况修改数据库连接字符串
1第4章常见操作
4.1启动命令

启动web界面:airflow webserver
启动scheduler:airflow scheduler

4.2关闭命令
使用ps -ef |grep airflow找出进程,再通过kill命令关闭

4.3日志查看命令
运行日志在~/airflow/logs目录下,可使用cat命令进行查看
image.png

4.4健康检查方法
通过ps -ef | grep 查看运行进程,或通过web界面进行访问

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
5月前
|
消息中间件 网络安全 数据安全/隐私保护
麒麟系统ARM安装rabbitmq
麒麟系统ARM安装rabbitmq
|
1月前
|
Ubuntu KVM 虚拟化
基于ARM64的Qemu/KVM学习环境搭建
基于ARM64的Qemu/KVM学习环境搭建
|
1月前
|
NoSQL Ubuntu Linux
基于ARM64的Qemu/KVM学习环境搭建2
基于ARM64的Qemu/KVM学习环境搭建2
|
5月前
|
分布式计算 Hadoop Java
大数据实战平台环境搭建(上)
大数据实战平台环境搭建(上)
|
5月前
|
分布式计算 Hadoop Java
大数据实战平台环境搭建(下)
大数据实战平台环境搭建(下)
|
5月前
|
消息中间件 网络安全 数据安全/隐私保护
麒麟系统ARM安装rabbitmq
记录下麒麟liunx系统安装rabbitmq的踩坑记录,按照我这个步骤来,100%解决问题。 希望对您有帮助!
麒麟系统ARM安装rabbitmq
|
12月前
|
数据采集 消息中间件 监控
大数据组件-Flume集群环境搭建
大数据组件-Flume集群环境搭建
174 0
|
12月前
|
SQL 大数据 API
大数据组件-Flink环境搭建
大数据组件-Flink环境搭建
156 0
|
大数据 Java Linux
大数据Nifi环境搭建
大数据Nifi环境搭建
206 0
|
SQL 大数据 关系型数据库
大数据集群环境搭建 2
大数据集群环境搭建
88 0
下一篇
无影云桌面