欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

大数据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