当前位置: 首页 > news >正文

出行项目案例

spark和kafka主要通过Scala实现,Hadoop和HBase主要基于java实现。

通过该项目,主要达到以下目的:

(1)通用的数据处理流程,入门大数据领域

(2)真实体验大数据开发工程师的工作

(3)企业级的项目,利用这个思路可以做二次拓展开发

(4)从0到有,数据抽取、数据存储、数据处理、展现

大数据平台架构图:

大数据没有事务的概念,需要不间断完整地把流程跑完,没有事务回滚的概念。

1. 项目需求

打车、叫车,出行的便捷问题等问题在一个出行平台建设中需要解决,与此同时安全出行也是重中之重,为了增加出行的便捷,提高出行的安全,对我们乘车的细节以及发生点我们迫切的需要及时知道,为此特地通过大数据的手段来处理我们海量的出行数据,做到订单的实时监控,乘车轨迹的的回放,虚拟打车站的选定等功能。

重点:乘车轨迹的的细节回放,虚拟打车站

2. 效果示意图

轨迹回放:

订单监控:指标的计算


3. 技术选型 


我们的项目建设主要是依据数据的生命周期来做的技术选型,目前主要依照的是大家都在用的一些技术,具体生产中应用要考虑实际的场景。比如人员、技术、接入难度、社区、版权等等各种问题

3.1 数据的生命周期

[参考其他数据平台的建设](https://www.sohu.com/a/242008443_468661)

数据的生产(web应用)>数据的传输>数据存储>计算>应用
 

3.2 数据传输

 数据采集:

采集框架名称主要功能版本
flume擅长日志数据的采集和解析1.9.0

消息中间件:

概述版本
KafkaLinkedIn用Scala语言实现,支持hadoop数据并行加载2.6.2

3.3 数据存储

框架名称主要用途版本
Hadoop分布式文件存储系统3.2.2
HbaseKey,value对的nosql数据库2.2.7

3.4 计算框架

框架名称基本介绍版本
Spark基于Spark,一站式解决批流处理问题3.1.1

4. 日志格式

本项目会使用到两份数据,原始文件名称为 order.txt以及gps。其中order.txt数据主要用来做我们的虚拟车站功能,gps主要用来做我们的数据回放功能。 日志存放在网盘中,可以下载,在/root目录下解压

gps数据:

字段名称类型示例备注
DRIVERID司机IDStringglox.jrrlltBMvCh8nxqktdr2dtopmlH
ORDERID订单IDStringjkkt8kxniovIFuns9qrrlvst@iqnpkwz
TIME时间戳String1501584540unix时间戳,单位为秒
LNG经度String104.04392GCJ-02坐标系
LAT纬度String30.67518GCJ-02坐标系

订单数据: 

字段ID字段名称字段样本描述
order_id订单IDstring类型且已脱敏
product_id产品线ID1滴滴专车, 2滴滴企业专车, 3滴滴快车, 4滴滴企业快车
city_id城市ID选取海口当地
district城市区号海口区号
county二级区县记录区县id
type订单时效0实时,1预约
combo_type订单类型1包车,4拼车
traffic_type交通类型1企业时租,2企业接机套餐,3企业送机套餐,4拼车,5接机,6送机,302跨城拼车
passenger_count乘车人数拼车场景,乘客选择的乘车人数
driver_product_id司机子产品线司机所属产品线
start_dest_distance乘客发单时出发地与终点的预估路面距离乘客发单时,出发地与终点的预估路面距离
arrive_time司机点击‘到达’的时间司机点击‘到达目的地’的时间
departure_time出发时间如果是实时单,出发时间(departure_time) 与司机点击‘开始计费’的时间(begin_charge_time)含义相同;如果是预约单,是指乘客填写的出发时间
pre_total_fee预估价格根据用户输入的起始点和目的地预估价格
normal_time时长分钟
bubble_trace_id
product_1level一级业务线1专车,3快车,9豪华车
dest_lng终点经度对应乘客填写的目的地对应的经度
dest_lat终点纬度对应乘客填写的目的地对应的纬度
starting_lng起点经度对应乘客填写的起始点对应的经度
starting_lat起点纬度对应乘客填写的起始点对应的纬度
year年份对应出行的年份
month月份对应出行的月份
day日期对应出行的日期

5. 项目架构

  • 数据采集 flume 去采集 order gps、发往kafka

  • spark 消费kafka数据存入redis里面(实时的监控)

  • spark 消费kafka数据存入hbase里面(计算绿点)

6. 环境搭建

所有的软件安装,请先bing XX分布式环境安装,然后在结合文档看本项目是如何配置的,否则如果你本身不清楚如何安装的,看下面的安装步骤会很懵 前提:我们的集群,使用了三台机器,机器的基础配置建议4C8G+50G-MEM的配置,否则项目会很卡,大数据环境存储基于MEM,计算基于内存,存在许多IO,所以对性能的要求是较高,学习的话建议大家可以按量购买云产品使用

安装环境 centos7.3

  • 所有的软件都基于root用户安装(生产环境中用普通用户),软件都安装在/root目录下

  • 三台机器需要提前设置好免密配置 免密配置参考

  • 所有的文件下载后,都需要改名称,例如mv hadoop-3.2.2 hadoop,其他的软件也需要改名称,目的是方便管理、升级

  • 所有涉及到的脚本都可以在doc目录下找到

节点角色
Hadoop01

HDFS: namenode,datanode,secondarynamenode

YARN: resourcemanager, nodemanager

Kafka

Spark: master,worker

Zookeeper: QuorumPeerMain

HBase: Hmaster,regionServer

Hadoop02

HDFS: datanode,

YARN: nodemanager

Spark: worker

kafka

Zookeeper: QuorumPeerMain

Hbase: regionServer

Hadoop03

HDFS: datanode

YARN: nodemanager

Spark: worker

kafka

flume

redis(docker)

Zookeeper: QuorumPeerMain

Hbase: regionServer

HDFS:基础数据的存储

YARN:计算调度,可以调度本地资源

kafka:流式处理

spark:计算软件,具体任务调度依赖于yarn,yarn依赖于HDFS

6.1 Java1.8安装

需要配置好环境变量

6.2 Hadoop

  • 节点1,下载hadoop wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz

  • 修改配置文件/root/hadoop/etc/hadoopworkersmapred-site.xmlhadoop-env.shyarn-site.xmlcore-site.xmlhdfs-site.xml 具体文件内容参考放在了doc下

    • cd etc/hadoop  然后cat 以下文件

      • workers表示分别部署在哪几台机器上:cat workers

      • mapred-site.xml配置了环境的位置

      • hadoop-env.sh配置了环境变量

      • yarn-site.xml:yarn是分布式调度软件,主要用来配置yarn的主节点在哪里

      • core-site.xml:定义了数据保存到本地的哪个位置,以及数据的副本个数(生产上一般是三个副本或以上)

      • hdfs-site.xml

  • 分发到其他节点 节点2 节点3

  • 启动前要格式化NameNode

  • 启动整体集群:/root/hadoop/sbin/start-all.sh

  • jsp查看启动了哪些进程:NameNode、SecondaryNameNode和DataNode代表的是HDFS的进程节点;ResourceManager和NodeManager是yarn的节点。此时yarn和HDFS就启动好了。

6.3 Spark

官网:spark.apache.org

  • 节点1,下载对应包 wget https://downloads.apache.org/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz  (注意spark和hadoop版本的对应)

  • 修改 /root/spark/conf/workersspark-env.sh 两个文件

    • cd conf/     cat workers  : 表示worker节点在哪些地方启动,master在本机启动,workers需要自己配置

  • xsync /root/spark /root/spark 分发到其他节点

  • 启动/root/spark/sbin/start-all.sh

通过fileOperator.jar将日志中的数据以每秒一条的速度定向写入到dest文件夹的gps文件中,flume实时监控目标文件gsp,并把采集到的数据发送到kafka中,kafka中也是每秒一条的速度进行接收。

6.4 Flume

  • 节点3,下载 wget https://mirrors.bfsu.edu.cn/apache/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz

  • 在节点3启动agent

  • flume启动脚本随课程发出

6.5 Kafka

  • 节点1,下载 wget https://mirrors.bfsu.edu.cn/apache/kafka/2.6.2/kafka_2.12-2.6.2.tgz

  • 修改 server.properties 文件,注意brokerid,zookeeper地址修改

  • xsync /root/kafka /root/kafka

6.6 HBase

  • 节点1,下载wget https://archive.apache.org/dist/hbase/2.2.7/hbase-2.2.7-bin.tar.gz

  • 修改 conf/hbase-site.xml \ regionServers文件

  • 分发到其他三个节点

  • bin/start-hbase.sh

6.7 zookeeper

  • 节点1,下载wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

  • 修改 zoo.cfg

  • /tmp/zookeeper/添加myid文件,文件内容分别为0,1,2

  • xsync /root/zookeeper /root/hadoop/zookeeper

HBase

6.8 Redis

Redis使用了docker安装,生产中使用的一般是集群,我们这里就不安装redis集群环境了

docker run --name myredis -p 6379:6379 -v /home/disk1/redis:/data -d redis redis-server --appendonly yes


http://www.mrgr.cn/news/92006.html

相关文章:

  • 1.15作业
  • 基于Flink SQL实现7天用户行为风险识别,结合滚动窗口预聚合与CEP复杂事件处理技术,根据用户7天的动作,包括交易,支付,评价等行为,识别用户的风险等级
  • 【找工作】C++和算法复习(自用)
  • Golang | 每日一练 (3)
  • Oracle备库srvctl start丢失某个原有的service_names的案例
  • C/C++跳动的爱心
  • AD(Altium Designer)器件封装——立创商城导出原理图和PCB完成器件封装操作指南
  • 如何用校园内网远程连接服务器
  • 【排序算法】六大比较类排序算法——插入排序、选择排序、冒泡排序、希尔排序、快速排序、归并排序【详解】
  • 网络运维学习笔记 017 HCIA-Datacom综合实验01
  • 视觉应用工程师(面试)
  • 学习笔记-沁恒第五讲-米醋
  • 前端八股——JS+ES6
  • 基于深度学习的信号滤波:创新技术与应用挑战
  • ROS2学习
  • 计算机视觉:主流数据集整理
  • Golang深度学习
  • cline通过硅基流动平台接入DeepSeek-R1模型接入指南
  • Spring使用三级缓存解决循环依赖的源码分析。
  • Redis基础学习