hadoop网站流量日志数据统计

news2024/9/24 23:30:26
	系统背景介绍
	

在这里插入图片描述
在这里插入图片描述``

数据提供企业决策能力
网站日志的数据分析------》受欢迎程度

如何评价你这个网站的受欢迎程度 用数据 下载的人多了 观看的人多了
通过Hadoop 对某个网站产生的日志数据流量进行统计分析 得出该网站的访问流量
继而做出决策

在这里插入图片描述

我们可以采用flume收集nginx的success文件日志

nginx--->flume------>hdfs---->hive数据分析------>sqoop到mysql中
flume采集数据到hdfs(),
数仓
mr对数据进行预处理(原始目录 现有目录)
hive(数仓分层 分析 将目录的数据导入到表中)
放在hdfs上
接下来我们可以写mapreduce程序对我们采集后的日志进行预处理
因为从服务器采集过来的数据可能格式并不满足我的需求


数仓
因为这些日志数据可能有一些脏数据我们要通过mr 程序给这些数据进行一个清洗 
把他们变成结构化的文件


预处理---------》hive 在这里我们可以对我们的数据进行一个数据分析
数据分析也是我们大数据处理之后最为重要的环节
经过数据分析之后可以得到一个结果  使用sqoop 导出到mysql 

在这里插入图片描述

1.flume采集日志  flume的source  channel sink  的配置
我们需要通过flume采集日志信息数据
采集之后存储在hdfs

采集nginx.access.log

在这里插入图片描述

access.log

在这里插入图片描述

这时就涉及到模块开发了
接下来我们来看数据的预处理阶段,我们要分析预处理的数据.我们要把不合法的数据丢失了  要过滤掉

数据预处理的流程
首先我们拿到原始数据   然后对数据进行清洗

在这里插入图片描述

预处理阶段可以使用mr来实现 使用mr来实现清理和筛选 不合法的数据我添加一个标识,不让他物理删除
我们此时的数据清洗只需要使用mapTaks就可以完成我们的任务

分析预处理的数据
在这里我们需要对flume收集后的数据使用mr进行预处理,通过预处理将我们的日志数据变成方便分析的一种格式


Hadoop添加我们的Jar的依赖

在这里插入图片描述

封装Javabean对象
我们要编写mr程序来做预处理 也就是说哦我们呢数据真正的处理是要通过mr来做的
mr的程序 我们要写3个类 一个mapper 一个reducer 一个main
1.获取job对象
2.源文件输入路径 输出到哪里
3.设置reduce为0
把我们的任务提交到Job

在这里插入图片描述


mapper类  map方法是核心处理数据的

在这里插入图片描述


一行文本数据封装javabean对象 WebLogBean
我要过滤掉静态资源因为我在进行分析的时候我不用分析css
经过过滤之后保证我们wbeLogbean是我们的想要的数据
Context.write(k2,v2)..  将K2和v2写在上下文中
mapTask  一行一行读取 封装javaBean , 
过滤css  
False 代表有问题的  这一行的数据是否合法
True就代表没有问题

在这里插入图片描述

我们进行完毕数据预处理之后  接下来我们就可以吧mr输出结果上传到hdfs中
并且可以使用hive建立表的结构和我们输出结果的映射关系

hive可以将文件数据和表进行映射
建设数仓
1. 数仓分层 ods表
------>mr输出处理之后的日志数据的字段

在这里插入图片描述

2. 设置宽表 将原先的窄表分解成了宽表

在这里插入图片描述
在这里插入图片描述

针对这个字段进一步拆分 比如说月 天小时
在窄表的基础上进行拆分 我们拆分的就是这个time_local 日期在表达的时候更加清晰

我们的宽表就是基于窄表的loca_time ,http_referer进一步进行拆分

在这里插入图片描述
在这里插入图片描述

第三步

我们的实时表就是这个宽表,写完事实表之后 我们要根据业务需求设计维度表,我们此时只是日均pv量
其实就是页面的访问量

在这里插入图片描述

我们可以根据自己的需求定义维度表,来进行多角度的数据分析
启动hive服务  创建hive数仓 
1、mr的数据导入到base表 2. 建立大宽表 3. 基于业务建立维度表

在这里插入图片描述

可以将mr 处理后的数据文件导入到数仓中  是一个分区表 按照 xxx分区  按照天来进行分区
我们需要将mr清洗之后的结果文件导入到ods


Load表
数据加载成功Load到hive中
生成数据的宽表

在这里插入图片描述

从ods(原始数据层)中整理出来一些中间表
将非结构化的数据进行抽取  形成明细表

在这里插入图片描述

我们就可以将原来宽表的数据进行再一次的拆分 拆分出年月日

在这里插入图片描述

宽表的数据 基于url再进行拆分

在这里插入图片描述

分区字段
表的数据怎么处理  
除了创建宽表之外 我们还要创建几个中间临时表  

在这里插入图片描述

创建临时表 

在这里插入图片描述

hive的自动分区?????
================================================》》》》》》》》》
向宽表中加数据??????????、怎么做
先拆小的 然后再组合成大宽表

在这里插入图片描述

先拆小的 然后再组合成大宽表

在这里插入图片描述
在这里插入图片描述

分区  按照时间进行分区
这个时候我们的宽表已经成功被我们加载数据了
如何去实现和加载我们的数仓
2. 我们先看下我们的分析指标
1.流量分析 
2.PV 

在这里插入图片描述

 数仓怎么去加工

在这里插入图片描述


在这个月的这一天的 他的pv量是多少
通过这个表我们就可以描述一天的pv量

在这里插入图片描述

分组  我们需要对sql 很了解
对数据很了解

在这里插入图片描述
在这里插入图片描述

我们创建各种维度表,然后再用sqoop从hdfs导出到我们的mysql的那个表

在这里插入图片描述


日志分析系统 报表展示
我们已经完成了我们的项目分析 并且已经吧项目分析的结果导出到我们关系型数据库也就是我们的mysql
接下来我们使用web技术 将我们分析的结果 图形化展示出来

DataV Echars BI应用

大致流程就是这样
nginx----->Flume----->linux------->load到hdfs 
----->hive键表 
-------->hdfs---->base表中----------》拆分表(中间层表)-------->(大宽表)=======》维度表(计算日均pv)---------->sqoop(mysql)----->quickBi进行展示

nginx------->filebeat----->logstash----->es------->kibana(展示)
我们可以通过logstash来进行过滤 然后通过kibana展示
然后写es的查询条件也可以支持各种业务的查询 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/372373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AcWing算法提高课-2.1.1池塘计数

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 题目传送门点这里 题目描述 农夫约翰有一片 N∗M 的矩形土地。 最近&#xff0c;由于降雨的原因&#xff0c;部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内&…

EasyRecovery16最新免费版电脑数据恢复软件功能介绍

EasyRecovery是一款支持Windows/Mac平台进行恢复图片的专业工具&#xff0c;尤其是各种流行单反相机RAW格式文件&#xff0c;以及超大型视频文件等&#xff0c;推荐摄影爱好者使用。适用于主流相机、无人机、PC、存储卡、USB 闪存驱动器等&#xff0c;由于删除、损坏或意外格式…

【项目精选】医院管理住院系统的研究与实现(源码+论文+视频)

点击下载源码 本系统主要分为六大模块&#xff0c;分别是医生管理模块、病人管理模块、病床管理模块、收费管理模块、统计分析模块和系统功能模块 &#xff0c;医生、病人和医院的管理人员都可以通过此系统寻找出自己所需要的信息。 1.1 背景 医院管理住院系统是当今大部分现代…

Nginx安装及介绍

前言&#xff1a;传统结构上(如下图所示)我们只会部署一台服务器用来跑服务&#xff0c;在并发量小&#xff0c;用户访问少的情况下基本够用但随着用户访问的越来越多&#xff0c;并发量慢慢增多了&#xff0c;这时候一台服务器已经不能满足我们了&#xff0c;需要我们增加服务…

华为OD机试用Python实现 -【天然蓄水库 or 天然蓄水池】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲天然蓄水库 or 天然蓄水池题目描述输入描述输出描述说明示例一输入输出说明示例二输入输出说明示例三输入输出说明Python 代码实现算法思路华为OD机试300题大纲 参加华为

Android 分区和内存监控

Andorid之所以是分区&#xff0c;是因为各自有对应的功能和用途的考量&#xff0c;可以进行单独读写和格式化。Android 设备包含两类分区&#xff1a;一类是启动分区&#xff0c;对启动过程至关重要。一类是用户分区&#xff0c;用于存储与启动无关的信息。启动分区boot 分区一…

HTML综合案例练习

一、展示简历内容 可以首先看一下我们的效果&#xff0c;之后再思考怎么实现 总的来说&#xff0c;这个练习不算难。 这里关于这个简历的代码编写我们不说太多&#xff0c;只注意以下几个内容即可&#xff1a; 注意及时查看我们的代码是否符合预期&#xff0c;即一段一段测 …

@ModelAttribute注释,接收用户不能做出修改的值,定义好值不变化

举例&#xff1a;有时候我们做修改的时候&#xff0c;比如用户的生日&#xff0c;和姓名用身份证验证之后就默认了你的资料&#xff0c;后期在修改个人资料的时候是不允许修改的&#xff0c;只能修改兴趣等等......1.设置实体类User&#xff0c;定义好属性&#xff0c;以及get,…

进程优先级(Linux)

目录 优先级VS权限 基本概念 查看系统进程 几个重要信息 PRI and NI PRI vs NI top命令 上限&#xff1a; 详细步骤 下限&#xff1a; 其他概念 优先级VS权限 权限&#xff1a;能or不能 优先级&#xff1a;已经能&#xff0c;但是谁先谁后的问题&#xff08;CPU资源有…

(十七)操作系统-进程同步、互斥

文章目录一、知识总览二、进程同步三、进程互斥1. 临界资源2. 互斥3. 对临界资源的互斥访问&#xff0c;在逻辑上分为四个部分4. 为了实现对临界资源的互斥访问&#xff0c;同时保证系统整体性能&#xff0c;需要遵循的原则五、总结一、知识总览 二、进程同步 同步亦称直接制约…

Kubernetes学习笔记-pod与集群节点的自动伸缩20230225

前言pod手动横向扩展&#xff1a;通过ReplicationController、ReplicaSet、Deployment等可伸缩资源的replicas字段&#xff0c;来手动实现pod中应用的横向扩展。pod纵向扩展&#xff1a;通过增加pod容器的资源请求和限制&#xff08;pod创建时&#xff09;pod自动横向扩展&…

Allegro如何快速把视图居中显示操作指导

Allegro如何快速把视图居中显示操作指导 用Allegro进行PCB设计的时候,为了方便检查和设计,时常需要将视图居中显示。一般地,会使用鼠标的中键进行放大和缩小,或者使用Zoom in和Zoom out来调整视图 Allegro还支持快速将视图居中 具体操作如下 点击View

Flume三种组件的选择对比

文章目录1.source2.channel3.sink1.source Source: 数据源:通过source组件可以指定让Flume读取哪里的数据&#xff0c;然后将数据传递给后面的 channel Flume内置支持读取很多种数据源&#xff0c;基于文件、基于目录、基于TCP\UDP端口、基于HTTP、Kafka的 等等、当然了&#x…

基于Windows下离线安装当前最新Arduino ESP32 SDK(2.0.7)固件开发包

基于Windows下离线安装当前最新Arduino ESP32 SDK&#xff08;2.0.7&#xff09;固件开发包✨写这篇的文章的初衷&#xff0c;是由于在前几天想通过离线一键安装包方式实现升级安装&#xff0c;结果发现解压后&#xff0c;可以找到开发板&#xff0c;但是无法上传代码&#xff…

JavaSe第3次笔记

1.String str "hello";字符串类型。 2.两个字符串类型相加意思是拼接&#xff0c;类似于c语言里面的strcat函数。 3.整型变成字符串类型: int a 10; String str String. valueOf(a); 4.当字符串和其他类型进行相加的时候&#xff0c;结果就是字符串。(不完全…

imporve-3

JSX语法糖本质 JSX是语法糖&#xff0c;通过babel转成React.createElement函数&#xff0c;在babel官网上可以在线把JSX转成React的JS语法 首先解析出来的话&#xff0c;就是一个createElement函数然后这个函数执行完后&#xff0c;会返回一个vnode通过vdom的patch或者是其他的…

Java基础--IO操作

一、IO原理及分类 一、IO原理 1、I/O是Input/Output的缩写&#xff0c;I/O技术是非常实用的技术&#xff0c;用于处理设备之间的数据传输&#xff0c;如读写文件&#xff0c;网络通信等。 2、java程序中对于数据的输入/输出操作一般都是以流的方式进行 3、java.io包下提供各…

【LeetCode】剑指 Offer(9)

目录 题目&#xff1a;剑指 Offer 25. 合并两个排序的链表 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 26. 树的子结构 - 力扣&#…

阿里测试经验7年,从功能测试到自动化测试,我整理的超全学习指南

做测试七年多&#xff0c;有不少人问过我下面问题&#xff1a; 现在的手工测试真的不行了吗&#xff1f; 测试工程师&#xff0c;三年多快四年的经验&#xff0c;入门自动化测试需要多久&#xff1f; 自学自动化测试到底需要学哪些东西&#xff1f; 不得不说&#xff0c;随着…

TCKGE: Transformers with contrastive learning for knowledge graph embedding

概述&#xff1a; 以前的一些知识图谱嵌入方法由于其浅层的网络结构&#xff0c;不能解决复杂的多关系知识图谱。因此文中针对此种现象&#xff0c;提出了TCKGE——针对于学习多关系知识图谱中复杂的语义信息。TCKGE能够有效的捕获知识图谱中丰富的语义信息&#xff0c;其利用了…