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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 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日志并进行多维度分析。
相关文章
|
27天前
|
运维 安全 Linux
【揭秘】如何轻松掌控Linux系统命脉?——一场探索日志文件奥秘的旅程,带你洞悉系统背后的故事!
【8月更文挑战第21天】日志文件对Linux系统至关重要,记录着包括应用行为、组件状态和安全事件在内的系统活动,如同系统的“黑匣子”。掌握日志查看技巧是系统管理的基础技能,有助于快速诊断问题。常用命令包括`cat`、`tail`和`grep`等,可用于查看如`/var/log/messages`和`/var/log/auth.log`等系统日志文件,以及特定应用的日志。`journalctl`则用于查看systemd服务日志。此外,`logrotate`工具可管理日志文件的滚动和归档,确保系统高效运行。
36 4
|
24天前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
28 0
|
26天前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
24天前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
13天前
|
JSON 缓存 fastjson
一行日志引发的系统异常
本文记录了一行日志引发的系统异常以及作者解决问题的思路。
|
14天前
|
存储 分布式计算 Hadoop
Hadoop日志纪录篇
关于Hadoop日志记录的详细解析,涵盖了日志类型、存储位置、如何查看和管理日志,以及日志聚合等。
13 0
Hadoop日志纪录篇
|
23天前
|
存储 SQL 分布式计算
Hadoop生态系统概述:构建大数据处理与分析的基石
【8月更文挑战第25天】Hadoop生态系统为大数据处理和分析提供了强大的基础设施和工具集。通过不断扩展和优化其组件和功能,Hadoop将继续在大数据时代发挥重要作用。
|
26天前
|
存储 监控 数据可视化
在Linux中,如何查看系统日志?
在Linux中,如何查看系统日志?
|
25天前
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
|
25天前
|
运维 监控 Ubuntu
在Linux中,如何查看系统日志文件?
在Linux中,如何查看系统日志文件?