分布式离线/实时日志统计系统(Hadoop.Spark)

概要

本文总结采用目前最流行的Hadoop生态圈和Spark生态圈搭建一套完整的分布式日志采集系统,支持离线和实时计算,可以满足多种需求,例如PV,UV,实时交易量等各个业务下的场景。

项目架构

分布式离线/实时日志统计系统(Hadoop.Spark)_第1张图片
项目架构图

集群一览

大数据两个重要角色

  • 存储 采用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后台

结束

为什么如何搭建都没有讲?具体如何搭建集群以及各个环节如何融入的技术,请自行参考其他博文,本文只阐述项目架构。
搭建以上各个组件细节甚多,坑甚多,不同组件版本会遇到不同情况。我写出来也不具有统一参考性,我觉得自行摸索配合该架构图,会逐步打通整个业务流程,熟悉掌握大数据集群这两个关键性技术存储和计算。

你可能感兴趣的:(分布式离线/实时日志统计系统(Hadoop.Spark))