大数据应用开发实时统计订单信息

内容提要

  • 实战统计目标
  • Kafka安装与配置
  • 实时统计订单信息

一、实战统计目标

案例要求每30min统计一次新增营业额、新增订单数、新增有效订单数,因为有一些订单是免费的(如cost字段为空),所以这些订单是无效订单。此外,需要统计总订单数、有效订单总数、总营业额。

将这些指标实时更新到Redis中。此外,要保存整点的总订单数、有效订单总数、总营业额的对应数值。

避免重复统计数据,保证结果的准确性。

二、Kafka安装与配置

因为CDH的parcel包没有包含Kafka,所以需要单独加载Kafka的parcel包到Cloudera Manager中,parcel包的安装步骤如下。

1、从Cloudera官网Cloudera | The hybrid data company上下载Kafka的parcel相关资源。

需要注意的是,Kafka的版本要与CDH的版本相对应。

根据项目中的集群环境,下载KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel、KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel.sha1、manifest.json。

此外,需要下载KAFKA-1.2.0.jar文件。

2、在Cloudera Manager的server节点上配置相关资源

因为本项目中CDH集群的Cloudera Manager是安装在server1上的,所以在server1上把KAFKA-2.2.0-1.2.2.0.p0.68- el6.parcel、KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel.sha1、manifest.json文件添加到/opt/cloudera/ parcel-repo目录下,并把KAFKA-2.2.0-1.2.2.0.p0.68-el6.parcel.sha1重新命名为KAFKA- 2.2.0-1.2.2.0.p0.68-el6.parcel.sha,覆盖/opt/cloudera/parcel-repo/目录下的manifest.json。

3、另外,需要把KAFKA-1.2.0.jar添加到/opt/cloudera/csd目录下

登录Cloudera Manager的管理界面,选择“主机”→“Parcel”选项,在新的界面中单击“检查新Parcel”按钮,此时弹出2.2.0-1.2.2.0.p0.68未分配的提示,单击“分配”按钮,分配完成后单击“激活”按钮。

Kafka parcel包激活成功后的界面:

4、Kafka的parcel包添加成功后,需要在Cloudera Manager中安装Kafka集群

单击“添加服务”按钮,选择“Kafka”选项,单击“继续”按钮,选择Kafka Broker的安装节点,选择安装在node2、node3、node4上。

因为Kafka MirrorMaker此处用不到,所以不用安装,单击“继续”按钮即可完成安装。

如下图,Kafka集群已成功安装在node2、node3、node4上。

三、实时统计订单信息

1、订单实时数据流产生

模拟订单实时数据流的主要思路是通过使用Kafka生产者逐行读取订单数据文件,并向订单主题发送数据。为了模拟正常的订单产生速率,在生产者每次发送完消息后,线程随机睡眠0~10s。

模拟订单实时数据流产生的具体过程如下。

(1)在node2创建一个有3个副本及3个分区的Kafka主题,其名称为order

根据模拟的思路,使用Java语言实现Kafka生产者。将代码编译成user_profile_project-1.0.jar包并上传到CDH集群的node1节点的/root目录下。

(2)启动Kafka生产者

为了检验程序是否可以正常运行,需要启动消费者消费order主题。

成功启动消费者后,当order主题产生数据时,消费者会实时从该主题中获取数据,不断地在屏幕上输出订单记录。

2、Spark Streaming实时统计订单信息

基于实时统计订单信息的业务需求,给出实时统计订单的完整计算代码。

为了避免出现重复消费的问题,使用Redis来保存消费位置。程序在启动时,先从Redis中读取上一次的消费位置,每次成功消费消息后,将消费记录的下标更新到Redis中。

为了减少在Spark集群中配置外部依赖包,计算代码编译封装user_profile_project-1.0.jar的JAR包时,将Redis依赖添加到JAR包中,如下图。

3、针对计算代码编写测试代码。

在执行测试代码的同时,需要启动模拟生产Kafka的订单数据源程序。

启动程序后,可以在Spark监控界面中看到提交的任务ID,即查看实时统计订单任务,如下图。

程序启动后,通过每隔30min消费Kafka order主题的订单数据源来统计订单的相关指标,并更新到Redis中。

Spark Streaming的部分任务日志,如下图。

任务运行一段时间后,查看Redis订单统计信息及消费Kafka order主题的offset,如下图。

更多内容请持续关注本站!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值