Day06_03_Zebra网站日志流量分析系统
AI-摘要
Smith GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
了解更多
Day06_03_Zebra网站日志流量分析系统
SmithZebra网站日志流量分析系统
一、项目的流程图
二、实现步骤
1、实现流程
使用Flume收集数据 —–> 落地到HDFS —–> 创建Hive的外部表管理HDFS上的数据 —–> 利用HQL语句处理项
目逻辑 —–> 使用Sqoop将HDFS上的数据导出到MySQL —–> 数据可视化
2、Flume组件的工作说明
Flume在收集的过程中以天为单位进行收集,Hive在处理的时候按照以天为分区继而对每天的数据进行统计分析
对于时间而言
①把日志文件名称中的时间截取出来
②Flume在收集的过程中将当天的日志时间记录下来 — 采用的是第二种
1 | a1.sources=r1 |
保存退出执行启动命令
1 | ../bin/flume-ng agent -n a1 -c ../conf/ -f zebra.conf -Dflume.root.logger=INFO,console |
3、Hive组件的工作说明
①创建zebra数据库:create database zebra;
②使用改库:use zebra;
③建立总表:
1 | create external table zebra(a1 string,a2 string,a3 string,a4 string,a5 string,a6 string,a7 string,a8 string,a9 string,a10 string,a11 string,a12 string,a13 string,a14 string,a15 string,a16 string,a17 string,a18 string,a19 string,a20 string,a21 string,a22 string,a23 string,a24 string,a25 string,a26 string,a27 string,a28 string,a29 string,a30 string,a31 string,a32 string,a33 string,a34 string,a35 string,a36 string,a37 string,a38 string,a39 string,a40 string,a41 string,a42 string,a43 string,a44 string,a45 string,a46 string,a47 string,a48 string,a49 string,a50 string,a51 string,a52 string,a53 string,a54 string,a55 string,a56 string,a57 string,a58 string,a59 string,a60 string,a61 string,a62 string,a63 string,a64 string,a65 string,a66 string,a67 string,a68 string,a69 string,a70 string,a71 string,a72 string,a73 string,a74 string,a75 string,a76 string,a77 string) partitioned by(reportTime string) row format delimited fields terminated by '|' stored as textfile location '/zebra'; |
④增加分区操作
1 | alter table zebra add partition (reportTime = '2025-03-16') location '/zebra/reportTime=2025-03-16'; |
⑤通过抽样查询来查询数据
1 | select * from zebra tablesample (1 rows); |
⑥建立数据清洗表
1 | create table dataclear(reportTime string,appType bigint,appSubType bigint,userIp string,userPort bigint,appServerIp string,appServerPort bigint,host string,cellid string,appTypeCode string,interruptType string,transStatus bigint,trafficUL bigint,trafficDL bigint,retranUL bigint,retranDL bigint,procdureStartTime bigint,procdureEndTime bigint) row format delimited fields terminated by '|'; |
⑦数据清洗表的数据从总表zebra获取过来
1 | insert overwrite table dataclear select concat(reportTime,' ','00:00:00'),a23,a24,a27,a29,a31,a33,a59,a17,a19,a68,a55,a34,a35,a40,a41,a20,a21 from zebra; |
⑧处理业务逻辑得到业务逻辑表
1 | create table dataproc(reportTime string,appType bigint,appSubType bigint,userIp string,userPort bigint,appServerIp string,appServerPort bigint,host string,cellid string,attempts bigint,accepts bigint,trafficUL bigint,trafficDL bigint,retranUL bigint,retranDL bigint,failCount bigint,transDelay bigint) row format delimited fields terminated by '|'; |
⑨从数据清洗表中查询数据插入到业务逻辑表
1 | insert overwrite table dataproc select reportTime,appType,appSubType,userIp,userPort,appServerIp,appServerPort,host,if(cellid == '','00000000',cellid),if(appTypeCode == 103,1,0),if(appTypeCode == 103 and find_in_set(transStatus,"10,11,12,13,14,15,32,33,34,35,36,37,38,48,49,50,51,52,53,54,55,199,200,201,202,203,204,205,206,302,304,306") != 0 and interruptType == 0,1,0),if(appTypeCode == 103,trafficUL,0),if(appTypeCode == 103,trafficDL,0),if(appTypeCode == 103,retranUL,0),if(appTypeCode == 103,retranDL,0),if(appTypeCode == 103 and transStatus == 1 and interruptType == 0,1,0),if(appTypeCode == 103,procdureEndTime - procdureStartTime,0) from dataclear; |
⑩查询关心的信息 — 以应用APP受欢迎程度为例
1 | create table D_H_HTTP_APPTYPE(hourid string,appType int,appSubType int,attempts bigint,accepts bigint,succRatio double,trafficUL bigint,trafficDL bigint,totalTraffic bigint,retranUL bigint,retranDL bigint,retranTraffic bigint,failCount bigint,transDelay bigint) row format delimited fields terminated by '|'; |
⑩①根据dataproc业务表按照条件聚合以及字段的累加
1 | insert overwrite table D_H_HTTP_APPTYPE select reportTime,appType,appSubType,sum(attempts),sum(accepts),round(sum(accepts) / sum(attempts),2),sum(trafficUL),sum(trafficDL),sum(trafficUL) + sum(trafficDL),sum(retranUL),sum(retranDL),sum(retranUL) + sum(retranDL),sum(failCount),sum(transDelay) from dataproc group by reportTime,appType,appSubType; |
⑩②查询前5名受欢迎的APP
1 | select hourid,appType,sum(totalTraffic) as tt from D_H_HTTP_APPTYPE group by hourid,appType sort by tt desc limit 5; |
4、Sqoop组件的工作说明
因为Sqoop的特性导致需要提前在MySQL中建立表结构,才能将HDFS上的数据导出到MySQL
①在MySQL中执行语句:
1 | ①create database zebra; |
②进入Sqoop的bin目录执行命令
1 | sh sqoop export --connect jdbc:mysql://hadoop01:3306/zebra?useSSL=false --username root --password Root123456~! --export-dir '/home/software/hive-2.3.7/warehouse/zebra.db/d_h_http_apptype/000000_0' --table D_H_HTTP_APPTYEP -m 1 --fields-terminated-by '|'; |




