实时即未来,车联网项目之项目展示和任务调度【八】

举报
Maynor学长 发表于 2022/09/29 16:46:07 2022/09/29
【摘要】 @[toc] 离线任务解析——多维统计数据的准确率多维统计数据准确率开发步骤自定义InputFormat 用于读取 Hive 数据对读取进来的数据Row(srcData,errorData)转换成Row(id,srcData,errorData,准确率,错误率,处理时间)自定义OutputFormat 写入到 mysql 数据库中 车联网项目 web 接口springboot 分三层 MVC...

@[toc]

离线任务解析——多维统计数据的准确率

  • 多维统计数据准确率
  • 开发步骤
    1. 自定义InputFormat 用于读取 Hive 数据
    2. 对读取进来的数据Row(srcData,errorData)转换成Row(id,srcData,errorData,准确率,错误率,处理时间)
    3. 自定义OutputFormat 写入到 mysql 数据库中

车联网项目 web 接口

  • springboot 分三层 MVC DAO层、Service层、Controller层
  • 加载程序包,添加模块,可视化

车联网任务监控与部署

  • 任务部署三种模式

    1. 本地部署 (开发使用)

    2. Standalone 部署 ()

      # 启动 flink 独立集群
      bin/start-cluster.sh
      stop-cluster.sh
      # 提交任务
      ./bin/flink run -p 4 ./examples/batch/WordCount.jar
      
    3. Flink on yarn 部署 (生产环境)

      节点 yarn角色 flink角色(HA)
      node01(192.168.10.10) resourcemanager、nodemanager jobmanager、taskmanager
      node02(192.168.10.20) nodemanager jobmanager、taskmanager
      node03(192.168.10.30) nodemanager taskmanager
      # 开辟一定的资源 -s指定slot(cpu核数)
      ./bin/yarn-session.sh -jm 1024m -tm 4096m
      # 任务提交到yarn执行,指定并行度,指定jm可用内存,指定tm的可用内存
      ./bin/flink run -m yarn-cluster -p 4 -yjm 1024m -ytm 2048m ./examples/batch/WordCount.jar
      
  • 车联网任务分类总结

    • 实时分析(Flink任务)

      1. 原始数据实时ETL
      2. 车辆明细数据实时ETL
      3. 驾驶行程分析
      4. 电子围栏分析
      5. 远程诊断故障实时分析
      6. 自定义告警规则分析
      7. 车辆数据指标即席查询(phoenix)
      8. mongo中geohash地理位置查询
      9. 自定义告警规则告警类型统计
      10. 自定义告警规则新增与历史告警统计
      11. 驾驶充电行程分析(扩展分析任务,类似驾驶行程分析)
      12. T3车型故障分析(扩展分析任务)
    • 离线分析:

      1. 原始数据etl中hdfs结果正确数据与异常数据关联对应hive外部表(hive)
      2. 数据接入正确率离线分析(hive)
      3. 车辆动态监测(sql)
      4. 后台数据服务接口(application)
  • 任务部署

    1. 实时 ETL 任务部署

      • 编译实时子任务 —— StreamingAnalysis

      • 在 pom.xml 文件中设置执行主类 (mainClass)

      • 获得打包后的 jar 包,上传到到服务器

      • 提交到 yarn 执行,由于虚拟机可用内存少,根据可用内存大小设置jm/tm内存

        ./bin/flink run -m yarn-cluster -p 3 -yjm 1024m -ytm 2048m /opt/CarNetworkingSystem/StreamingAnalysis-1.0-SNAPSHOT-jar-with-dependencies.jar
        
      • 提交任务到Flink集群

        ./bin/flink run -p 3 /opt/CarNetworkingSystem/StreamingAnalysis-1.0-SNAPSHOT-jar-with-dependencies.jar
        
    2. 车辆明细数据 ETL 任务部署——VehicleDetailETLTask

      • 提交到 yarn 执行

        ./bin/flink run -p 4 -c cn.itcast.flink.streaming.task.VehicleDetailETLTask /opt/CarNetworkingSystem/StreamingAnalysis-1.0-SNAPSHOT-jar-with-dependencies.jar
        
      • 如果遇到不能分配足够的 slot 数,如何解决呢?

        • 可以增加 slot 数,以满足任务所需 slot
        • 减少提交任务的 slot 数,以满足集群中的 slot 数
  • 选用 Linux crontab 进行任务部署会遇到各种问题,是否有更好的解决方案呢?

    • 自研框架
    • Oozie 、airflow、DelphinScheduler、 Azkaban、SchedulerX 等
    • 这里选择 DelphinScheduler

DolphinScheduler任务调度

DolphinScheduler任务调度介绍

  • DolphinScheduler 的简介和项目背景

  • DolphinScheduler 的项目的优势:

    1. 易于使用
    2. 解决复杂任务依赖的问题
    3. 支持多租户
    4. 支持许多任务类型
    5. 支持HA和线性可扩展性
  • DolphinScheduler 的项目特点:

DolphinScheduler 的项目安装

  • 安装要求环境

    image-20210819143350763

  • 上传安装包

    tar zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin.tar.gz -C  /export/servers/dolphinscheduler/dolphinscheduler-backend-1.2.0
    
  • 数据库初始化

    CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    SET GLOBAL validate_password_policy=LOW;
    SET GLOBAL validate_password_length=1;
    GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'root'@'%' IDENTIFIED BY '123456';
    flush privileges;
    
  • 添加mysql的jar:mysql-connector-java-5.1.47.jar到$HOME/lib目录下

  • 修改./conf/application-dao.properties中的下列属性

    # mysql
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://node03:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=123456
    
  • 建立 java 的软连接

    ln -s /export/servers/jdk1.8.0_181/bin/java /usr/bin/java
    
  • 执行创建表和导入基础数据脚本($HOME目录下)

  • 修改 DolphinScheduler 的 instal.sh 文件

    # 这里填 mysql or postgresql
    dbtype="mysql"
    # 数据库连接地址 
    dbhost="node03:3306" 
    # 数据库名 
    dbname="dolphinscheduler"
    
    # 数据库用户名,此处需要修改为上面设置的{user}具体值 
    username="root" 
    # 数据库密码, 如果有特殊字符,请使用\转义,需要修改为上面设置的{passowrd}具体值 
    passowrd="123456"
    # conf/config/install_config.conf配置
    # 注意:安装路径,不要当前路径(pwd)一样
    installPath="/opt/soft/dolphinscheduler"
    
    # 部署用户
    # 注意:部署用户需要有sudo权限及操作hdfs的权限,如果开启hdfs,根目录需要自行创建
    deployUser="root"
    
    # zk集群
    zkQuorum="node01:2181,node02:2181,node03:2181"
    
    # 安装hosts
    # 注意:安装调度的机器hostname列表,如果是伪分布式,则只需写一个伪分布式hostname即可
    ips="node01,node02,node03"
    
    # conf/config/run_config.conf配置
    # 运行Master的机器
    # 注意:部署master的机器hostname列表
    masters="node01,node02"
    
    # 运行Worker的机器
    # 注意:部署worker的机器hostname列表
    workers="node02,node03"
    
    # 运行Alert的机器
    # 注意:部署alert server的机器hostname列表
    alertServer="node03"
    
    # 运行Api的机器
    # 注意:部署api server的机器hostname列表
    apiServers="node01"
    
    ...
    resUploadStartupType="HDFS"
    defaultFS="hdfs://node01:8020"
    # resourcemanager HA配置,如果是单resourcemanager,这里为yarnHaIps=""
    yarnHaIps=""
    
    # 如果是单 resourcemanager,只需要配置一个主机名称,如果是resourcemanager HA,则默认配置就好
    singleYarnIp="node01"
    
    # hdfs根路径,根路径的owner必须是部署用户。1.1.0之前版本不会自动创建hdfs根目录,需要自行创建
    hdfsPath="/dolphinscheduler"
    
    # 拥有在hdfs根路径/下创建目录权限的用户
    # 注意:如果开启了kerberos,则直接hdfsRootUser="",就可以
    hdfsRootUser="root"
    
  • 创建 hadoop 配置文件连接

    ln -s /export/servers/hadoop-2.7.5/etc/hadoop/hdfs-site.xml ./
    ln -s /export/servers/hadoop-2.7.5/etc/hadoop/core-site.xml ./
    
  • 自动部署

    #1.安装 pip
    yum install -y python-pip
    #2.安装 kz 工具
    pip install kazoo
    #3.执行一键部署脚本
    sh install.sh
    
  • JPS查看是否安装成功

  • DophinScheduler 启停服务

    bin/stop_all.sh
    bin/start-all.sh
    
  • 前端部署

    • 上传并解压缩前端部署包

      mkdir /export/servers/dolphinscheduler/dolphinscheduler-front-1.2.0
      tar zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz -C /export/servers/dolphinscheduler/dolphinscheduler-front-1.2.0
      
    • 执行自动部署:默认端口为 8888

      sh ./install-dolphinscheduler-ui.sh
      
    • 登录到 DolphinScheduler

      http://node01:8888/view/login/index.html

      默认用户名密码:
      admin/dolphinscheduler123
      
    • 启动前端服务

      后台:start-all.sh

      前端:systemctl restart nginx

DolphinScheduler基础操作

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。