设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1239|回复: 0

[其他] 大数据项目实战之新闻话题的实时统计分析

[复制链接]

89

主题

2790

金钱

3242

积分

中级用户

发表于 2018-3-26 15:17:15 | 显示全部楼层 |阅读模式
前言:本文是一个完整的企业级大数据项目实战,实时|离线统计分析用户的搜索话题,并用酷炫的前端界面展示出来。这些指标对网站的精准营销、运营都有极大帮助。

为什么说是企业级?因为架构大致是按照企业标准来的,从日志的采集、转化处理、实时计算、JAVA后台开发、WEB前端展示,一条完整流程线下来,甚至每个节点都用的高可用架构,都考虑了故障转移和容错性。当然和真实的企业项目还是会有很大差距,数据量一大需要考虑的东西就多了。。。

所用到的框架包括:Flume+KafKa+Hbase+Hive+Spark(SQL、Structured Streaming )+Mysql+SpringMVC+Mybatis+Websocket+AugularJs+Echarts。

所涉及到的语言包括:JAVA、Scala、Shell。

本文并非零基础教学,只讲流程和代码,基础性的东西读者自行查缺补漏。主要需掌握Flume+KafKa+Hbase+Hive+Spark+Mysql,后台和前端的开发可以使用传统JDBC模式。

最终效果图如下:



项目架构图如下:



环境准备


模拟网站实时产生日志信息

• 获取数据源,本文是利用搜狗的数据:搜狗实验室

• 编写java类模拟实时采集网站日志。主要利用Java中的输入输出流。写好后打成jar包传到服务器上





• 编写采集日志的shell脚本

vim weblog.sh



• 运行效果图



Flume Agent2采集日志信息

主要通过设置Source、Channel、Sink来完成日志采集。

• 配置flume配置文件 vim agent2.conf


• 编写shell脚本,方便运行。vim flume.sh


• 运行的时候直接 ./flume.sh 即可

Flume Agent3采集日志信息

各方面配置都和Agent2完全一样、省略。

Flume Agent1整合日志信息

• vim agent1.conf



• vim flume.sh



具体讲解如下:

Flume与Hbase的集成

• 通过查看官方文档可知,Flume与Hbase的集成主要需要如下参数,表名、列簇名、以及Java类SimpleAsyncHbaseEventSerializer。



• 改写SimpleAsyncHbaseEventSerializer

下载Flume源码,需要改写如下两个Java类.







• 打成jar包,上传到linux服务器中替换原有flume目录的该jar包





• Flume配置文件配置Sink为Hbase



Flume与Kafka的集成

• Flume配置文件:主要配置topic、brokerlist:





• 编写kafka消费端脚本,消费从flume传过来的信息。

vim flume.sh



• 运行效果图



Kafka与Spark集成完成数据实时处理

spark的输入源为kafka,spark对来自kafka的数据进行计算,主要就是累加话题量。



Spark与Mysql集成



离线分析:HIVE集成HBASE。

我们知道Hive是一个数据仓库,主要就是转为MapReduce完成对大量数据的离线分析和决策。之前我们已经用Flume集成Hbase,使得Hbase能源源不断的插入数据。那么我们直接将HIVE集成HBase,这样只要Hbase有数据了,那Hive表也就有数据了。怎么集成呢?很简单,用【外部表】就搞定了。



验证一下HBASE和HIVE是不是同步的:





好了现在我们可以在Hive中尽情的离线分析和决策了~~~

SpringMVC+Mybatis完成对mysql数据的查询

个人觉得传统JDBC实在是太笨重,还是最喜欢Spring整合Mybatis对数据库进行操作。这里主要完成的操作就是对mysql的数据进行查询。详情请参考github,地址文章开头已给出。



WebSocket实现全双工通信

既然要实现客户端实时接收服务器端的消息,而服务器端又实时接收客户端的消息,必不可少的就是WebSocket了,WebSocket实现了浏览器与服务器全双工通信(full-duple),能更好的节省服务器资源和带宽并达到实时通讯。WebSocket用HTTP握手之后,服务器和浏览器就使用这条HTTP链接下的TCP连接来直接传输数据,抛弃了复杂的HTTP头部和格式。一旦WebSocket通信连接建立成功,就可以在全双工模式下在客户端和服务器之间来回传送WebSocket消息。即在同一时间、任何方向,都可以全双工发送消息。WebSocket 核心就是OnMessage、OnOpen、OnClose,本项目使用的是和Spring集成的方式,因此需要有configurator = SpringConfigurator.class。



Echarts完成前端界面展示

大家可以看到开头给出的项目效果图还是蛮漂亮的,其实非常简单,就是用的Echarts这个框架。直接给它传值就ok了,其他前端那些事它都给你搞定了。详情请参考github,地址文章开头已给出。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表