一、项目介绍及环境构建

173 阅读6分钟

项目需求

  • 这个项目属于哪个行业?

    • 工业化大数据平台
    • 行业:加油站服务商运营数据分析平台
  • 为什么要做这个项目?

    • 基于所有设备的安装、维修、巡检、改造的工单数据,辅助公司的运营,提高服务质量,做合理的成本预算
  • 这个项目具体需求是什么?

    • 提高服务质量,做合理的成本预算
    • 需求一:对所有工单进行统计分析
      • 安装工单、维修工单、巡检工单、改造工单、回访分析
    • 需求二:付费分析、报销分析
      • 安装人工费用、安装维修材料费用、差旅交通费用
  • 目标掌握加油站设备维护的主要业务流程

  • 实施流程图

image-20210819151836340.png

*   step1:加油站服务商联系呼叫中心,**申请服务**:安装/巡检/维修/改造加油机
*   step2:呼叫中心联系对应服务站点,**分派工单**:联系站点主管,站点主管分配服务人员
*   step3:服务人员**确认工单**和加油站点信息
*   step4:服务人员在指定日期到达加油站,进行**设备检修**
*   step5:如果为安装或者巡检服务,安装或者巡检成功,则服务完成
*   step6:如果为维修或者改造服务,需要向服务站点**申请物料**,物料到达,实施结束,则**服务完成**
*   step7:服务完成,与加油站站点服务商确认服务结束,完成**订单核验**
*   step8:工程师**报销**过程中产生的费用
*   step9:呼叫中心会定期对该工单中的工程师的服务做**回访**
  • 小结

    • 掌握加油站设备维护的主要业务流程
    • 工单分析、费用分析、物料分析、回访分析

技术选型

  • 目标掌握加油站服务商数据运营平台的技术选型

  • 实施

    • 数据生成:业务数据库系统

      • Oracle:工单数据、物料数据、服务商数据、报销数据等
    • 数据采集

      • Sqoop:离线数据库采集
    • 数据存储

      • Hive【HDFS】:离线数据仓库【表】
    • 数据计算

      • SparkCore:类MR开发方式【写代码调用方法函数来处理:面向对象 + 面向函数】
        • 对非结构化数据进行代码处理
        • 场景:ETL
      • SparkSQL:类HiveSQL开发方式【面向表】
        • 对数据仓库中的结构化数据做处理分析
        • 场景:统计分析
        • 开发方式
          • DSL:使用函数【DSL函数 + RDD函数】
          • SQL:使用SQL语句对表的进行处理
        • 功能:离线计算 + 实时计算
      • 注意:SparkSQL可以解决所有场景的分布式计算,离线计算的选型不仅仅是SparkSQL
        • SparkSQL/Impala/Presto
      • 使用方式
        • Python/Jar:spark-submit
          • ETL
        • ThriftServer:SparkSQL用于接收SQL请求的服务端,类似于Hive的Hiveserver2
          • PyHive :Python连接SparkSQL的服务端,提交SQL语句
          • JDBC:Java连接SparkSQL的服务端,提交SQL语句
          • spark-sql -f :运行SQL文件,类似于hive -f
          • beeline:交互式命令行,一般用于测试
    • 数据应用

      • MySQL:结果存储
      • Grafana:数据可视化工具
    • 监控工具

      • Prometheus:服务器性能指标监控工具
    • 调度工具

      • AirFlow:任务流调度工具
  • 小结

    • 本次项目的技术架构是什么?

      • Lambda架构:离线计算层 + 实时计算层 + 数据服务层
    • 项目中用到了哪些技术?

      • 数据生成:Oracle

      • 数据采集:Sqoop

      • 数据存储:Hive

      • 数据处理:SparkSQL

      • 数据应用:MySQL + Grafana

      • 数据监控:Prometheus

      • 任务调度:AirFlow

      • 版本控制:Git + Gitee

      • 资源容器:Docker

Docker的使用

  • 目标:了解docker的基本使用

  • container管理

    • 列举container

      #列举所有的
      docker ps -a
      
      #列举正在运行的
      docker ps
      
    • 进入container

      docker exec -it Name bash
      # 运行 hadoop、hive、spark、oracle、sqoop
      docekr exec -it hadoop bash
      docekr exec -it hive bash
      docekr exec -it spark bash
      docekr exec -it oracle bash
      docekr exec -it sqoop bash
      
    • 退出container

      exit
      
    • 删除container

      docker rm ……
      

项目环境配置

  • 目标根据需求实现项目环境配置

  • 配置本地映射

    • 配置Windows上的映射,方便使用主机名访问【把以前的有冲突的注释掉】

      # 位置:C:\Windows\System32\drivers\etc\ 下,hosts文件
      192.168.88.100 oracle.bigdata.cn
      192.168.88.100 hadoop.bigdata.cn
      192.168.88.100 hive.bigdata.cn
      192.168.88.100 mysql.bigdata.cn
      192.168.88.100 node1
      

image-20210820155305287.png

项目环境测试:Oracle

  • 目标实现项目Oracle环境的测试

  • 实施

    • 启动

      docker start oracle
      
    • 进入

      docker exec -it oracle bash
      
    • 连接

      #进入客户端命令行:/nolog表示只打开,不登录,不用输入用户名和密码
      sqlplus /nolog
      #登陆连接服务端:/ as sysdba表示使用系统用户登录
      conn / as sysdba
      
    • 测试

      select TABLE_NAME from all_tables where TABLE_NAME LIKE 'CISS_%';
      
    • 退出

      exit
      
    • 远程连接:DBeaver、DG

      • 创建连接

        • SID:helowin
      • 用户名:ciss

        • 密码:123456
    • 关闭

         docker stop oracle
      

项目环境测试:MySQL

  • 目标实现项目MySQL环境的测试

  • 实施

    • 大数据平台中自己管理的MySQL:两台机器

      • 存储软件元数据:Hive、Sqoop、Airflow、Oozie、Hue
      • 存储统计分析结果
    • 注意:MySQL没有使用Docker容器部署,直接部署在当前node1宿主机器上

    • 启动/关闭:默认开启自启动

    • 远程连接:使用命令行客户端、Navicat、DBeaver、DG都可以

      • 用户名:root
      • 密码:123456

项目环境测试:Hadoop

  • 目标实现项目Hadoop环境的测试

  • 实施

    • 启动

      docker start hadoop
      
    • 进入

      docker exec -it hadoop bash
      
    • 查看进程

      jps
      
    • 启动进程

      start-dfs.sh
      start-yarn.sh
      mr-jobhistory-daemon.sh start historyserver
      
    • 访问页面

      # hadf 访问路径
      node1:50070
      # yarn 访问路径
      node1:8088
      # 历史服务器 访问路径
      node1:19888
      
    • 退出

      exit
      
    • 关闭

      docker stop hadoop
      

项目环境测试:Hive

  • 目标:实现项目Hive环境的测试

  • 实施

    • 启动Hive容器

      docker start hive
      
    • 进入Hive容器

      docker exec -it hive bash
      source /etc/profile
      
    • 连接

      beeline
      !connect jdbc:hive2://hive.bigdata.cn:10000
      
    • SQL测试

      select count(1);
      
    • 关闭Hive容器

      docker stop hive
      
    • 远程连接:DBeaver、DG

      • 用户名:root
      • 密码:123456
      • 端口:10000
      • 需要替换驱动

项目环境测试:Spark

  • 目标实现项目Spark环境的测试

  • 实施

    • 启动Spark容器

      docker start spark
      
    • 进入Spark容器

      docker exec -it spark bash
      source /etc/profile
      
    • 启动Thrift Server【默认已经启动】

      start-thriftserver.sh \
      --name sparksql-thrift-server \
      --master yarn \
      --deploy-mode client \
      --driver-memory 1g \
      --hiveconf hive.server2.thrift.http.port=10001 \
      --num-executors 3 \
      --executor-memory 1g \
      --conf spark.sql.shuffle.partitions=2
      

image-20211006152344248.png

*   测试

        beeline -u jdbc:hive2://spark.bigdata.cn:10001 -n root -p 123456
        select count(1);

*   关闭Spark容器

        docker stop spark

*   远程连接:DBeaver、DG

    *   用户名:root
    *   密码:123456
    *   端口:10001
    *   **需要替换驱动**

项目环境测试:Sqoop

  • 目标实现项目Sqoop环境的测试

  • 实施

    • 启动Sqoop容器

      docker start sqoop
      
    • 进入Sqoop容器

      docker exec -it sqoop bash
      source /etc/profile
      
    • 测试

      sqoop list-databases \
      --connect jdbc:oracle:thin:@oracle.bigdata.cn:1521:helowin \
      --username ciss \
      --password 123456
      
    • 关闭Sqoop容器

      docker stop sqoop