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


    摘要:本文介绍如何搭建DolphinScheduler并运行MRS作业。

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

    为什么写这篇文章?

    1. 网上关于DolphinScheduler的介绍很多但是都缺少了与实际大数据平台结合的案例指导。
    2. DolphinScheduler1.x版本,2.x重构了内核实现,性能提升20倍!但是因为重构导致2.x与1.x部署过程存在差异,按照1.x部署2.x版本存在不少坑。
    3. 选择轻量化、免运维、低成本的大数据云服务是业界趋势,如果搭建DolphinScheduler再同步自建一套Hadoop生态成本太高!因此我们通过结合华为云MRS服务构建数据中台。

    环境准备

    • dolphinscheduler2.0.3安装包
    • MRS 3.1.0普通集群
    • Mysql安装包 5.7.35
    • ECS centos7.6

    安装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
    # 改名为mysql 
    mv mysql-5.7.13-linux-glibc2.5-x86_64 mysql
    ```

    赋予用户读写权限
    chown -R mysql:mysql mysql/

    3. 配置文件初始化

    1. 创建配置文件my.cnf

    ```
    vim /etc/my.cnf
    
    [client] 
    port = 3306 
    socket = /tmp/mysql.sock 
    
    [mysqld] 
    character_set_server=utf8 
    init_connect='SET NAMES utf8' 
    basedir=/usr/local/mysql 
    datadir=/usr/local/mysql/data 
    socket=/tmp/mysql.sock 
    log-error=/var/log/mysqld.log 
    pid-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'
    ```

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

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

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

    ```
    cd /var/run/ 
    mkdir mysqld 
    cd mysqld 
    vi mysqld.pid 
    :wq保存退出 
    # 赋权 
    cd .. 
    chmod 777 mysqld 
    chown -R mysql:mysql /mysqld
    ```

    4. 初始化数据库

    初始化数据库,并指定启动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 mysql 
    service mysqld start 
    service mysqld stop 
    service mysqld restart 

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

    1. 修改密码

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

    2. 预置dolphinscheduler的用户

    ```
    mysql -uroot -p 
    mysql>CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 
    # 修改 {user} 和 {password} 为你希望的用户名和密码,192.168.56.201是我的主机ID 
    mysql> 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/sudoers 
    sed -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_rsa 
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
    chmod 600 ~/.ssh/authorized_keys

    2. 修改配置参数

    1. 修改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集群网络已打通):

    2. 修改 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_env
    HADOOP_HOME环境地址:通过echo $HADOOP_HOME获得 /opt/Bigdata/client/HDFS/Hadoop
    HADOOP_CONF_DIR:/opt/Bigdata/client/HDFS/Hadoop
    SPARK_HOME: 通过echo $SPARK_HOME获得/opt/Bigdata/client/Spark2x/spark
    JAVA_HOME: 通过echo $JAVA_HOME获得/opt/Bigdata/client/JDK/jdk1.8.0_272
    HIVE_HOME:通过echo $HIVE_HOME获得/opt/Bigdata/client/Hive/Beeline
    FLINK_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 
    
    # 启停 Master 
    sh ./bin/dolphinscheduler-daemon.sh stop master-server 
    sh ./bin/dolphinscheduler-daemon.sh start master-server 
    
    # 启停 Worker 
    sh ./bin/dolphinscheduler-daemon.sh start worker-server 
    sh ./bin/dolphinscheduler-daemon.sh stop worker-server 
    
    # 启停 Api 
    sh ./bin/dolphinscheduler-daemon.sh start api-server 
    sh ./bin/dolphinscheduler-daemon.sh stop api-server 
    
    # 启停 Logger 
    sh ./bin/dolphinscheduler-daemon.sh start logger-server 
    sh ./bin/dolphinscheduler-daemon.sh stop logger-server 
    
    # 启停 Alert 
    sh ./bin/dolphinscheduler-daemon.sh start alert-server 
    sh ./bin/dolphinscheduler-daemon.sh stop alert-server 
    
    # 启停 Python Gateway 
    sh ./bin/dolphinscheduler-daemon.sh start python-gateway-server 
    sh ./bin/dolphinscheduler-daemon.sh stop python-gateway-server

    6. 登录系统

    访问前端页面地址:
    用户名密码:admin/dolphinscheduler123

    提交MRS任务

    1.登录进入dolphinscheduler webui

    2. 配置MRS-hive连接

    登录mrs manager查看hiveserver ip:

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

    3. 创建任务

    1、创建项目

    2、创建工作流

    3、在工作流编辑任务

    4、任务上线

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

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

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

     

    华为伙伴暨开发者大会2022火热来袭,重磅内容不容错过!

    【精彩活动】

    勇往直前·做全能开发者→12场技术直播前瞻,8大技术宝典高能输出,还有代码密室、知识竞赛等多轮神秘任务等你来挑战。即刻闯关,开启终极大奖!点击踏上全能开发者晋级之路吧!

    【技术专题】

    未来已来,2022技术探秘→华为各领域的前沿技术、重磅开源项目、创新的应用实践,站在智能世界的入口,探索未来如何照进现实,干货满满点击了解

     

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

  • 相关阅读:
    windows下安装mysql教程
    python生成器实现杨辉三角
    python默认参数问题
    python中判断素数的函数
    extract()和extact_first()的区别
    硬连接和软连接的区别
    du与df的区别
    命题逻辑
    关于 better-scroll 设置了以后无法滚动或不生效的问题
    Maven *IDEA*
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/16320103.html
Copyright © 2020-2023  润新知