狭义(技术思维):使用分布式技术完成海量数据的处理,得到数据背后蕴含的价值。
广义:大数据是数字化时代,信息化时代的基础(技术)支撑,以数据为生活赋能。
大数据的核心工作:从海量的高增长、多类别、低信息密度的数据中挖掘出高质量的结果。(海量数据存储、海量数据传输、海量数据计算)
存储:妥善保存海量待处理数据
计算:完成海量数据的价值挖掘
传输:协助各个环节的数据传输
存储:Apache Hadoop HDFS、Apache HBase、Apache Kudu、云平台
计算:Apache Hadoop MapReduce、Apache Spark、Apache Flink
传输:Apache Kafka、Apache Pulsar、Apache Flume、Apache Sqoop
数据量太大,单机存储能力有上限,需要靠服务器数量来解决问题
数量的提升带来的是网络传输、磁盘读写、CPU、内存等各方面的综合提升。分布式存储的组合可以达到1+1>2的效果。
HDFS组件(分布式存储),MapReduce组件(分布式计算),YARN组件(分布式调度)。
NameNode:主角色,负责管理HDFS集群和DataNode角色
DataNode角色:从角色,负责数据的存储
SecondaryNameNode:辅助角色,负责协助NameNode整理元数据
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。(通俗的说:NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。)
每个服务器(节点)存储文件的一部分。
在其他服务器上进行备份。这样某一台服务器的某个block丢失了,可以从其他服务器上复制备份过来。
edits文件,是一个流水账文件,记录了hdfs中每一次操作,以及本次操作影响的文件其对应的block。
FSImage文件:就是全部的edits文件合并后的结果。(我只要edits文件的最终状态,中间的操作流水账我不关心)
so,NameNode元数据管理维护步骤
1.每次对HDFS的操作,均被edits记录
2.edits达到大小上限后,开启新的edits记录
3.定期进行edits的合并操作
(1)如果当前没有fsimage文件,将全部edits合并为第一个fsimage
(2)如果当前已经存在fsimage文件,将全部edits和已存在的fsimage进行合并,形成新的fsimage文件
4.重复1,2,3步骤
1.客户端想NameNode发起请求
2.NameNode审核权限,剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址
3.客户端向指定的DataNode发送数据包
4.被写入数据的DataNode同时完成数据副本的复制工作
5.如下图,DataNode1复制给DataNode2,然后基于DataNode2复制给DataNode3和DataNode4
6.写入完成客户端通知NameNode,NameNode做元数据记录工作。
关键信息:
a.NameNode不负责数据的写入,只负责元数据记录和权限审批
b.客户端直接向一台DataNode写数据。这个DataNode一般是离客户端最近(网络距离)的那个
c.数据块副本的复制工作,由DataNode之间自行完成(构建一个pipeline,按照顺序复制分发)
1.客户端向NameNode申请读取某文件
2.NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表
3.客户端拿到block列表后自行寻找DataNode读取即可。
注意点:
1.数据同样不通过NameNode提供
2.NameNode提供的blockl列表,会基于网络距离计算尽量提供离客户端最近的。
因为数据量太大了,硬件性能不够,用数量来弥补。
分散->汇总(MapReduce就是这种模式)
中心调度->步骤执行(大数据体系的Spark,Flink等是这种模式)