Hadoop-模拟搭建用户行为日志采集系统分析

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
简介: Hadoop-模拟搭建用户行为日志采集系统分析

一. kafka应用流程示意



网络异常,图片无法展示
|


image


1. 前端js埋点,就是调用后端提供的对应接口.接口请求示例如下:

http://pingserver.com?itemid=111&userid=110&action=show&...


为了保证轻量级,并发度高,前端js埋点向后端异步发送的请求不需要关注返回状态,只负责调用即可;


2. flume监听log日志,将实时增加的log日志通过flume管道注入kafka中,接下来可以由storm或spark streaming进行实时流处理;


3. 方向(1)中应用:storm,spark streaming更偏重于业务处理及数据挖掘;


4. 方向(2)中应用:是将非结构化的用户行为日志数据转换成结构化的数据存入hbase中,使用hive进行行为日志的分析,比如统计pv,uv,vv,ctr,dau等.


二. 搭建日志采集系统log server流程图



网络异常,图片无法展示
|


日志采集系统


上图,就是一个Log Server实现的最简单流程图.


  1. Nginx分发器:上面提到了前端js埋点请求,要求速度要快,并发度要高,所以这里使用了Nginx分发器作为web server,实现反向代理与LB(负载均衡);


  1. Spawn-cgi:上图只是示例提供一个server服务的场景,同样也可以在不同节点上,提供相同的服务,用nginx实现负载均衡,以能提供更快更高可用的服务;


Spawn-cgi的功能: 就是提供了一个网关接口,它可以快速的实现对外暴露server服务的功能,并能使底层的服务变成一个常驻的守护进程;


它的请求走的fcgi协议,这种协议更加适合外部请求,因为http请求很容易受到攻击;


  1. Thrift RPC:在定义接口规范之后,能够帮助我们快速的生成client和server代码,并能帮助我们实现服务之间的解耦:


  • client只负责字段的解析等轻量级的工作;


  • server才是真正的引擎核心,我们可以在这里实现自己的业务处理逻辑.

使用Thrift RPC生成的client和server之间的通信,走的是RPC协议,这种协议有如下好处:


  • 跨语言,支持多种语言去生成client和server代码,c++,Python,java等;


  • 保证数据的安全,相比http协议更不容易受到外部攻击;


  • 速度快,性能好,比如用c++生成代码,实现效果性能更好,速度更快,更能应对高并发的处理请求;


RPC协议更加适合底层内部的请求,所以设计上后端一般都是使用RPC协议.

另外,RPC的两端client和server只要遵循RPC协议和定义的scheme接口通信规范,两端可以使用不同的开发语言.


4. 上面的client server中server,并不只是一种简单的服务,它可以由多个server通过RPC协议构成,比如下面搭建推荐系统:


网络异常,图片无法展示
|


推荐系统


三. 模拟日志收集系统的相关技术功能梳理



  1. Thrift RPC:在定义接口通信规范后,可以用Thrift命令快速生成server和client代码,完成最基本的C/S架构;这种生成代码的方式,可以帮助我们实现服务之间的解耦,client只负责字段的解析等轻量级的工作,而server才是真正的处理引擎;


在server里面,我们可以实现自己的业务处理逻辑.通过glogs可以将收集到用户行为日志快速高效的写入log文件中.


  1. Spawn-CGI: 通过cgi提供的网关接口,可以将自己用thrift rpc生成的server服务提供给外部.

简单的可以理解为提供了一种代理,可以在非应用程序所在的机器上操作应用程序.


  1. Nginx分发器: 就是web server,用于分发用户的请求,实现反向代理与负载均衡;通过它可以将用户的js埋点请求分发给我们的server应用程序去处理;


  1. ab压测: 如果Thrift RPC使用c++生成client和server,可以大大的提供性能,这种场景下,可以使用ab压测工具,进行压力测试;

上面的技术部分,基本就实现了模拟日志收集系统的搭建,下面再扩展做一下介绍.


  1. Flume + Hbase/Hive : 用于用户行为日志分析;


  1. Flume+Kafka+Storm/Spark Streaming :用于实时流处理的数据挖掘;
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2天前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
21天前
|
监控 测试技术 开发者
一行代码改进:Logtail的多行日志采集性能提升7倍的奥秘
一个有趣的现象引起了作者的注意:当启用行首正则表达式处理多行日志时,采集性能出现下降。究竟是什么因素导致了这种现象?本文将探索Logtail多行日志采集性能提升的秘密。
|
23天前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
|
24天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
1月前
|
存储 SQL 监控
|
1月前
|
运维 监控 安全
|
1月前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
95 2
|
1月前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
48 2
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
343 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
14天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。