写点什么

基于云服务 MRS 构建 DolphinScheduler2 调度系统

  • 2022 年 5 月 28 日
  • 本文字数:4909 字

    阅读完需:约 16 分钟

本文分享自华为云社区《基于云服务MRS构建DolphinScheduler2调度系统》,作者: 啊喔 YeYe 。

一、为什么写这篇文章?

 

1.网上关于 DolphinScheduler 的介绍很多但是都缺少了与实际大数据平台结合的案例指导。

 

2.DolphinScheduler1.x 版本,2.x 重构了内核实现,性能提升 20 倍!但是因为重构导致 2.x 与 1.x 部署过程存在差异,按照 1.x 部署 2.x 版本存在不少坑。

 

3.选择轻量化、免运维、低成本的大数据云服务是业界趋势,如果搭建 DolphinScheduler 再同步自建一套 Hadoop 生态成本太高!因此我们通过结合华为云 MRS 服务构建数据中台。

二、环境准备

 

三、安装 MRS 客户端

 

MRS 客户端提供 java、python 开发环境,也提供开通集群中各组件的环境变量:Hadoop、hive、hbase、flink 等。 

参见登录 ECS 安装集群外客户端

四、安装 MySQL 服务

1. 创建 ECS 用户

 

为了方便数据库管理,对于安装的 MySQL 数据库,生产上建立了一个 mysql 用户和 mysql 用户组:

# 添加 mysql 用户组

 

groupadd mysql# 添加mysql用户useradd -g mysql mysql -d /home/mysql# 修改mysql用户的登陆密码passwd ****
复制代码

2.解压安装包

 

```cd /usr/local/tar -xzvf mysql-5.7.13-linux-glibc2.5-x86_64.tar.gz# 改名为mysqlmv mysql-5.7.13-linux-glibc2.5-x86_64 mysql```
复制代码

 

赋予用户读写权限 

chown -R mysql:mysql mysql/

3. 配置文件初始化

① 创建配置文件 my.cnf

 

```vim /etc/my.cnf
[client]port = 3306socket = /tmp/mysql.sock
[mysqld]character_set_server=utf8init_connect='SET NAMES utf8'basedir=/usr/local/mysqldatadir=/usr/local/mysql/datasocket=/tmp/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid#不区分大小写lower_case_table_names = 1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
default-time_zone = '+8:00'```
复制代码

② 初始化 log 文件,防止没有权限

 

```#手动编辑一下日志文件,什么也不用写,直接保存退出cd /var/log/vim mysqld.log:wq 退出保存chmod 777 mysqld.logchown mysql:mysql mysqld.log```
复制代码

③ 初始化 pid 文件,防止没有权限

 

```cd /var/run/mkdir mysqldcd mysqldvi mysqld.pid:wq保存退出# 赋权cd ..chmod 777 mysqldchown -R mysql:mysql /mysqld```
复制代码

 ④ 初始化数据库

 

初始化数据库,并指定启动 mysql 的用户,否则就会在启动 MySQL 时出现权限不足的问题

 

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
复制代码

 

初始化完成后,在 my.cnf 中配置的 datadir 目录(/var/log/mysqld.log)下生成一个 error.log 文件,里面记录了 root 用户的随机密码。


cat /var/log/mysqld.log


执行后记录最后一行:root@localhost: xxxxx 。 这里的 xxxxx 就是初始密码。后面登入数据库要用到。

4. 启动数据库

 

#源目录启动:/usr/local/mysql/support-files/mysql.server start
复制代码

 

设置开机自启动服务

 

# 复制启动脚本到资源目录cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# 增加mysqld服务控制脚本执行权限chmod +x /etc/rc.d/init.d/mysqld
# 将mysqld服务加入到系统服务chkconfig --add mysqld
# 检查mysqld服务是否已经生效chkconfig --list mysqld
# 切换至mysql用户,启动mysql,或者稍后下一步再启动。service mysqld start# 从此就可以使用service mysqld命令启动/停止服务su mysqlservice mysqld startservice mysqld stopservice mysqld restart
复制代码

5.登陆,修改密码,预置 dolphinscheduler 的用户

 

① 修改密码

 

```# 系统默认会查找/usr/bin下的命令;建立一个链接文件。ln -s /usr/local/mysql/bin/mysql /usr/bin# 登陆mysql的root用户mysql -uroot -p# 输入上面的默认初始密码(root@localhost: xxxxx)# 修改root用户密码为XXXXXXset password for root@localhost=password("XXXXXX");```
复制代码

 

② 预置 dolphinscheduler 的用户

 

```mysql -uroot -pmysql>CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;# 修改 {user} 和 {password} 为你希望的用户名和密码,192.168.56.201是我的主机IDmysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler';mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'192.168.56.201' IDENTIFIED BY 'dolphinscheduler';#刷新权限mysql> flush privileges;#检查是否创建用户成功mysql> show databases;#出现dolphinscheduler,查看创建的用户mysql> use mysql;mysql> select User,authentication_string,Host from user;```
复制代码

五、安装 dolphinscheduler 服务

1. 建立本机 id 免密

 

在任意文件夹下进行这一步均可,为防止误会,我在 dolphinscheduler203 进行这一步,创建用户 dolphinscheduler,后面所有操作都是再这个用户下做的。设置 root 免密登录该用户:

 

# 创建用户需使用 root 登录useradd dolphinscheduler# 添加密码echo "dolphinscheduler" | passwd --stdin dolphinscheduler# 配置 sudo 免密sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoerssed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers# 修改目录权限,在这一步前将jdbcDriver(我的mysql版本5.6.1,driver版本8.0.16)放入lib里,一并修改权限chown -R dolphinscheduler:dolphinscheduler dolphinscheduler203#进入新用户su dolphinscheduler
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys
复制代码

2. 修改配置参数

① 修改 install-config.conf 文件

 

[dolphinscheduler@km1 dolphinscheduler203]$ vi conf/config/install-config.conf修改:ips="192.168.56.201"masters="192.168.56.201"workers="192.168.56.201:default"alertServer="192.168.56.201"apiServers="192.168.56.201"pythonGatewayServers="192.168.56.201"# DolphinScheduler安装路径,如果不存在会创建,这里不能放你解压后的ds路径,放置后在运行代码时同名文件、文件夹会冲突导致消失installPath="/opt/dolphinscheduler203"# 部署用户,填写在 **配置用户免密及权限** 中创建的用户deployUser="dolphinscheduler"# ---------------------------------------------------------# DolphinScheduler ENV# ---------------------------------------------------------# 安装的JDK中 JAVA_HOME 所在的位置javaHome="/opt/hadoopclient/JDK/jdk1.8.0_272"# ---------------------------------------------------------# Database# ---------------------------------------------------------# 数据库的类型,用户名,密码,IP,端口,元数据库db。其中 DATABASE_TYPE 目前支持 mysql, postgresql, H2# 请确保配置的值使用双引号引用,否则配置可能不生效DATABASE_TYPE="mysql"SPRING_DATASOURCE_URL="jdbc:mysql://192.168.56.201:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8"# 如果你不是以 dolphinscheduler/dolphinscheduler 作为用户名和密码的,需要进行修改SPRING_DATASOURCE_USERNAME="dolphinscheduler"SPRING_DATASOURCE_PASSWORD="dolphinscheduler"# ---------------------------------------------------------# Registry Server# ---------------------------------------------------------# 注册中心地址,zookeeper服务的地址registryServers="192.168.56.201:2181"
复制代码

 

zk 地址获取方式 


登录 manager,访问 zookeeper 服务,copy 管理 ip 即可(前提 ECS 与 MRS 集群网络已打通): 


② 修改 conf/env 目录下的 dolphinscheduler_env.sh


以相关用到的软件都安装在/opt/Bigdata/client 下为例:

 

• export HADOOP_HOME=/opt/Bigdata/client/HDFS/Hadoop• export HADOOP_CONF_DIR=/opt/Bigdata/client/HDFS/Hadoop• export SPARK_HOME2=/opt/Bigdata/client/Spark2x/spark• export PYTHON_HOME=/usr/bin/pytho• export JAVA_HOME=/opt/Bigdata/client/JDK/jdk1.8.0_272• export HIVE_HOME=/opt/Bigdata/client/Hive/Beeline• export FLINK_HOME=/opt/Bigdata/client/Flink/flink• export DATAX_HOME=/xxx/datax/bin/datax.py• export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH
复制代码

 

说明

 

​这一步非常重要,例如 JAVA_HOME 和 PATH 是必须要配置的,没有用到的可以忽略或者注释掉 

​环境变量查找方式说明:假设 MRS 客户端安装在/opt/Bigdata/client

source /opt/client/bigdata_envHADOOP_HOME环境地址:通过echo $HADOOP_HOME获得 /opt/Bigdata/client/HDFS/HadoopHADOOP_CONF_DIR:/opt/Bigdata/client/HDFS/HadoopSPARK_HOME: 通过echo $SPARK_HOME获得/opt/Bigdata/client/Spark2x/sparkJAVA_HOME: 通过echo $JAVA_HOME获得/opt/Bigdata/client/JDK/jdk1.8.0_272HIVE_HOME:通过echo $HIVE_HOME获得/opt/Bigdata/client/Hive/BeelineFLINK_HOME:通过echo $FLINK_HOME 获得/opt/Bigdata/client/Flink/flink
复制代码

3. 将 mysql 驱动包放入 lib 下

 


tar -zxvf mysql-connector-java-5.1.47.tar.gz
复制代码

 


cp mysql-connector-java-5.1.47.jar /opt/dolphinscheduler203/lib/
复制代码

4.创建元数据库数据表

 

执行 sh script/create-dolphinscheduler.sh

5. 服务安装、启停

 

每次启停都可以重新部署一次:sh install.sh

启停命令

 

# 一键停止集群所有服务sh ./bin/stop-all.sh
# 一键开启集群所有服务sh ./bin/start-all.sh
# 启停 Mastersh ./bin/dolphinscheduler-daemon.sh stop master-serversh ./bin/dolphinscheduler-daemon.sh start master-server
# 启停 Workersh ./bin/dolphinscheduler-daemon.sh start worker-serversh ./bin/dolphinscheduler-daemon.sh stop worker-server
# 启停 Apish ./bin/dolphinscheduler-daemon.sh start api-serversh ./bin/dolphinscheduler-daemon.sh stop api-server
# 启停 Loggersh ./bin/dolphinscheduler-daemon.sh start logger-serversh ./bin/dolphinscheduler-daemon.sh stop logger-server
# 启停 Alertsh ./bin/dolphinscheduler-daemon.sh start alert-serversh ./bin/dolphinscheduler-daemon.sh stop alert-server
# 启停 Python Gatewaysh ./bin/dolphinscheduler-daemon.sh start python-gateway-serversh ./bin/dolphinscheduler-daemon.sh stop python-gateway-server
复制代码

6. 登录系统

 

访问前端页面地址:http://xxx:12345/dolphinscheduler 


用户名密码:admin/dolphinscheduler123 


六、提交 MRS 任务

1.登录进入 dolphinscheduler webui

 

2. 配置 MRS-hive 连接

 

登录 mrs manager 查看 hiveserver ip: 



创建 Hive 数据连接,普通集群没有权限可以使用默认用户 hive,如有需要可以使用在 MRS 里面已经创建的用户: 


3. 创建任务

 

① 创建项目 


② 创建工作流 



 ③在工作流编辑任务 



 ④ 任务上线

 


 ⑤ 启动任务流之后可以查询工作流实例和任务实例 




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

 

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

 


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

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
基于云服务MRS构建DolphinScheduler2调度系统_大数据_华为云开发者社区_InfoQ写作社区