大数据简单入门
大数据时代
最早提出“大数据”时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:“
数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。
人们对于 海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余
浪潮的到来。 ” “大数据”在物理学、生物学、环境生态学等领域以及军事、
金融、通讯等行业存在已有时日,却因为近年来互联网和信息行业的发展
而引起人们关注。
大数据概念
定义: 短时间快速产生大量多种多样的有价值的信息
大数据特征
4V:
1. 数据量大(volume)-------第一个特征是数据量大。大数据的起始计量单位至少是P(1000个T)、E(100万个T)或Z(10亿个T)
2. 类型繁多(variety)-------第二个特征是数据类型繁多。包括网络日志、音频、视频、图片、地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求。
3. 价值密度低(value)-----第三个特征是数据价值密度相对较低。如随着物联网的广泛应用,信息感知无处不在,信息海量,但价值密度较低,如何通过强大的机器算法更迅速地完成数据的价值“提纯”,是大数据时代亟待解决的难题。
4. 速度快,时效高(veloctiy)----第四个特征是处理速度快,时效性要求高。这是大数据区分于传统数据挖掘最显著的特征。
谷歌的三大论文
- GFS -----------------------------HDFS分布式文件系统(分布式的存储)
- Mapreduce---------------------分布式处理
- bigData--------------------------HBase
HDFS(分布式文件系统)
yarn------------------资源和任务调度
mapreduce--------批处理
spark:
(1)spark core
(2)sparkSQL 可以使用SQL处理
(3)sparkStreaming 流式处理
(4)mllib 机器学习库
(5)graphx spark停止维护
主从架构
主节点:Namenode-----一个集群只能有一个主节点
从节点:Datanode------一个集群可以有多个从节点
客户端:client
HDFS的读写机制
|
/ \
存文件 读文件
备份作用:为了解决安全问题(防止数据丢失)
HDFS的存储
存储方式:以block块的形式进行相应的存储
文件线性切割成块(block):偏移量offset(byte)
block分散存储在集群节点中
单一文件block大小一致,文件与文件可以不一致
block可是设置副本数,副本分散在的不同的节点中
副本数不能超过节点数
文件上传可以设置block大小和副本数
已经上传的文件block副本数可以调和智能,但是block大小不能改变
只支持一次写入多次读取 同一时刻只能有一个写入者
Namenode(主节点):
1. 管理所有文件 管理DataNode的信息 管理元数据(描述数据的数据)
2. 接受client的请求 负责读写
3. 与Datanode之间进行相应的通信
Datanode(从节点):
1.存储数据
2.响应给主节点情况
3.接受client的调度
HDFS写入步骤
Namenode(主节点)<--------->client(客户)
|
/ | \
Datanode Datanode Datanode
-
获取一个大文件
-
client将大文件进行切块 block数=文件大小/block大小
-
向namenode响应 ------>block块数
文件大小
文件权限
文件属主
文件上传时间 -
client 切一块
-
client向Namenode申请资源(datanode的信息)
-
Namenode会返回一批负载不高的datanode给client
-
client会向datanode里发送block并且做好备份
-
datanode存放block块之后会向Namenode汇报情况
HDFS读步骤
-
Namenode会向client发送一个请求,client接受请求之后,会向Namenode去申请节点信息(block所对应的id)
-
Namenode会向client发送节点信息
-
client获取到节点的信息之后 去datanode中拿取数据 (遵从就近原则)
备份机制
- 集群内提交 ----------在提交的节点上防止block
- 集群外提交 ----------选择一个负载不高的节点进行存放
- 放置在在与第一个备份不同的机架任意节点上
- 放置在第二歌备份的机架不同的节点上
pepeline管道
Namenode<------->client
||
||
||
Datanode===Datanode===Datanode
不会浪费资源 只备份一个放入管道 Datanode进行读取 大大提高了效率
- Namenode在返回给client一些Datanode的信息之后
- client会和这些Datanode形成一个管道,并且将block切割成ackPackage(大小为64K)
- Datanode会从管道中拿去响应的数据进行存储
- 当存储完成之后,Datanode会向Namenode进行汇报