大数据
- 简单来说大数据就是海量数据及其处理方式.
大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [1] 中 大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。 大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
大数据相关技术
1.数据收集
爬虫(分析别人家的事):Python,java,Nucth…
日志(分析自己的事):log4j、Flume分布式日志收集工具(数据的收集聚集加载)
历史数据(分析以前的事):mysql、oracle、ETL(数据的提取转化加载)
IOT: 物联网
2.数据清洗
SQL: id name age gender addr 姓名 性别 18岁及以上的 select name, gender from user where age >= 18
逻辑: if(person != null){…}
数据清洗没有我们想的那么复杂,方式有很多:
过程中可以用代码直接清洗,flume可以清洗,Hive可以清洗,flink可以清洗。整个流程中几乎每个步骤都可以做到数据的清洗。
3.数据存储
HDFS(Hive、Hbase、Spark依赖存储都是HDFS)Hadoop distributed file system
S3(亚马逊)
NFS(sun公司)
4.数据处理
离线数据处理:MapReduce(hadoop的一部分)、Hive(底层是MR,业界主流)、SparkSQL、FlinkDataSet
流式数据处理:Flink(全面高效)、Storm(速度快,亚秒级)、SparkStreaming(速度没有Storm快,但是吞吐量高)
MQ: kafka
数据传输: Sqoop
状态监控: zookeeper
网站日志分析系统
数据收集:JS埋点
- 传统埋点方式的缺点:
直接嵌入业务系统,代码不好维护,影响业务系统性能。
- JS埋点优点:
日志收集系统与业务系统相互独立,互不影响,不占用业务系统性能,能收集到更多更详细的用户信息。
日志数据的提交方式
Get请求:https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_bd79f916377147b6aef8164d97d9abac
在哪里发起Get请求?
跨域请求
img标签中src实现跨域访问,将该图片插入到真个页面最后,像素1,边框0,用户看不到。
系统架构设计
离线分析:js埋点——日志收集系统(log4j)——flume——HDFS——Hive
实时分析:js埋点——日志收集系统(log4j)——flume——Kafka——Flink