分布式离线/实时日志统计系统(Hadoop.Spark)
2017-12-24 本文已影响136人
热血沸腾
概要
本文总结采用目前最流行的Hadoop生态圈和Spark生态圈搭建一套完整的分布式日志采集系统,支持离线和实时计算,可以满足多种需求,例如PV,UV,实时交易量等各个业务下的场景。
项目架构
项目架构图集群一览
大数据两个重要角色
- 存储 采用Hadoop集群
角色 | ip |
---|---|
NameNode | 192.168.6.98 |
DataNode1 | 192.168.6.92 |
DataNode2 | 192.168.6.99 |
- 计算 采用Spark
角色 | ip |
---|---|
Master | 192.168.6.98 |
Worker1 | 192.168.6.92 |
Worker2 | 192.168.6.99 |
组件清单及功能
- Tomcat 主要搜集业务上报的日志,例如自定义JS的PV和点击,移动客户端的PV和点击等,需要出接口和对应SDK帮助各个业务线和端集成简单,快速,正确。(参考示例例如友盟)
- Nginx 作为反向代理服务器,主要搜集服务器日志,好处无需各个端主动上报,缺点不能够满足各种复杂的需求
- Flume 分布式日志采集器,优点可以指定日志输出目录,代替做FTP日志文件服务器,不需要再主动下载日志文件,而是主动下发到Hadoop和Spark服务器。
-
Kfaka 高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
实时路线 - spark-streaming 拿到kafka的实时数据流,进行实时计算,它以时间片为消费单位,比如可以设置为1秒
-
Redis NoSQL中的键值对内存数据库(不够会扩展到磁盘),用一定的计算逻辑,计算实时的PV和UV数据
离线路线 - HDFS Hadoop分布式文件系统,主要用于日志存储,本文采用Apache开源的,还有一些商用的未采用,下文会做小知识分享。
- Hive 数据仓库,清洗数据后,存储结构化数据,本身拥有强大的SQL支持,简单易学,尤其针对pv,uv统计相当方便
- Hue 图形化显示Hive仓库的Web工具,直接使用图形化来执行SQL,快速拿到想要的数据。
- MySQL 最终想要的业务数据会使用PySpark任务做处理,放置到该Mysql中,同时可以作为Hive的元数据存储
- AZKABAN 相当好用的生成定时任务,同时很方便的提供图像化操作,方便创建以及管理查看任务运行情况
- CentOS本集群构建所使用的基础计算机操作系统
- Spark计算集群
- Python 用于清洗数据的脚本,计算业务数据的脚本
- SSM 用来搭建Web后台
结束
为什么如何搭建都没有讲?具体如何搭建集群以及各个环节如何融入的技术,请自行参考其他博文,本文只阐述项目架构。
搭建以上各个组件细节甚多,坑甚多,不同组件版本会遇到不同情况。我写出来也不具有统一参考性,我觉得自行摸索配合该架构图,会逐步打通整个业务流程,熟悉掌握大数据集群这两个关键性技术存储和计算。