大数据BigData总结笔记(一)
程序员文章站
2022-03-05 10:21:41
...
一 什么是大数据?
大数据(big data),IT行业术语,P级甚至是E级数据级,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
三个案例
19g 的txt文件 : 无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合
买枪案例 : 洞察发现力
啤酒和尿布案例 : 更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [1]
中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。
大数据的5V特点(IBM提出):
Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
Value(低价值密度) 一条数据提取不到有价值的内容,海量数据集合在一起才能分析出有用的价值
所以大数据就是:海量数据及其处理方式
二 大数据生态圈介绍
1.数据获取 海量数据从哪里来?
爬虫: python , jsoup , nutch
(最好的爬虫语言是python->语法简洁 编译运行速度特别慢)
日志: flume 收集日志, log4j 打印日志
历史数据: hive , mysql , Oracle
趋势分析决定现在的行为和以后的计划.
历史数据清除出当前业务系统,存储在数据仓库hive中
计算: 科研领域进行大量的计算
2.数据清洗
进行数据的筛选
sql清洗: 例如select name from user where age>18
逻辑清洗:例如if(user!=null){.....} 清洗掉=null的数据
3.数据存储
hadoop.HDFS 分布式文件存储系统 高可用 开源 做海量数据存储 --> 目前最主流
spark,hive,hbase...号称可以做海量存储,但底层全部是HDFS--还不开源.
4.数据计算
a) 离线计算:最常见
hadoop.MapReduce: A YARN-based system for parallel processing of large data sets.
Hive ,SparkSql 用的较多,好用,底层还是hadoop的原理
补充知识 sqoop
b) 在线计算(流式计算)
三种计算引擎:
storm (300~500ms一次计算) 速度最快,但是吞吐量低,相当于是单条计算
sparkstreaming(3~5s一次计算) spark流式计算 速度稍慢,但是吞吐量很高
Flink 19.1月 被阿里收购,3月份 开源倒apache 最新的技术 速度快,吞吐量高
消息队列MQ: Kafka
5.大数据可视化
echarts.js -- 结合html,css,js 做数据统计分析的展示工具
三 网站用户日志流量分析系统
1.JS埋点
例如:日志模块 aop切面收集日志,即埋点: 要想从此过,留下个人信息;
1>.埋点位置放在服务器端:截留用户请求中的信息(ip,登录信息,访问页面..);拖慢服务器处理业务的效率加重后端代码压力
2>.埋点位置放在用户终端(浏览器端),获取更详细的用户信息:用户所用机型,浏览器,分辨率,地理位置...,
a> 收集到信息后如果发送到业务服务器:同样影响了服务器处理进度(处理js代码...)
b> 专门创建日志收集服务器进行日志信息的预处理:
通过log4j把日志打印处理,
通过flume把打印出来的日志收集
需要编辑逻辑代码(前端只有js能编辑逻辑代码),所以又叫js埋点.
JS埋点优点:日志收集系统与业务系统相互独立,互不影响,不占用业务系统性能,能收集到更多更详细的用户信息。
灵感:
Nginx: 反向代理的特殊分支:动静分离(例如:host配置的 image.jt.com 172.0.0.1 - 图片上传/图片读取)
当用户读取商品列表时:ngnix从业务服务器获取动态资源,从图片服务器获取图片;图片和动态资源分别向用户返回,两个服务器共同完成一个请求的响应 更快!
思路:
正常流程:浏览器<->业务服务器
额外流程:浏览器<-get?k=v&k=v->日志服务器:一个网页同时向两个服务器发送请求,传递数据!(只接收请求但是不响应)
大数据一般不使用复杂的框架,很多功能用不到,而且占用空间,处理慢,所以我们折中使用servlet ;优点:快,节省资源.
js中的三个重要函数
jt_set_cookie -- 给用户设置缓存
jt_get_cookie -- 从用户获取缓存
jt_get_random -- 标记用户;在线时长
八个重要指标
1. PV:点击量,一条日志就是一个点击量,越高越好。
2. UV:独立访客数,通过cookie记录uvid,用户每次访问带着cookie,系统识别是新的还是之前的,越高越好。
3. VV:独立会话数,通过cookie记录ssid,记录不同的ssid数量,体现时间段内所有用户一共访问了多少次,越高越好。
4. BR:跳出率,只访问一个页面就走了的会话/所有的独立会话,越低越好。
5. NewIP:新增独立IP,历史数据中(ip)没有出现过的访客IP地址数量, 越高越好,反映用户增长量,反映系统生命力。
6. NewCust:新增独立访客,历史数据中(uvid)没有出现过的独立访客,越高越好。
7. AvgTime:平均在线时长,所有会话的时长总和/会话数量,越高越好。
8. AvgDeep:平均访问深度,一个会话的访问页面数量叫做访问深度,每个会话的访问深度之和/会话数量。越高越好。
得到数据后, flume 会将数据分流到 离线数据和在线数据
离线:HDFS存储 Hive离线处理 sqoop转存到mysql 展示到echarts
在线:Kafka流量削峰 flink在线处理 ;实时数据存储到mysql,展示 或使用solr(ES 快一点)
上一篇: Tess4J识别图片
下一篇: TESS4J