1.什么是大数据
狭义(技术思维):使用分布式技术完成海量数据的处理,得到数据背后蕴含的价值。
广义:大数据是数字化时代,信息化时代的基础(技术)支撑,以数据为生活赋能。
大数据的核心工作:从海量的高增长、多类别、低信息密度的数据中挖掘出高质量的结果。(海量数据存储、海量数据传输、海量数据计算)
2.大数据的核心工作
存储:妥善保存海量待处理数据
计算:完成海量数据的价值挖掘
传输:协助各个环节的数据传输
3.大数据的生态
存储:Apache Hadoop HDFS、Apache HBase、Apache Kudu、云平台
计算:Apache Hadoop MapReduce、Apache Spark、Apache Flink
传输:Apache Kafka、Apache Pulsar、Apache Flume、Apache Sqoop
4.海量数据的分布式存储
数据量太大,单机存储能力有上限,需要靠服务器数量来解决问题
数量的提升带来的是网络传输、磁盘读写、CPU、内存等各方面的综合提升。分布式存储的组合可以达到1+1>2的效果。
5.Hadoop是由三大组件组成的:
HDFS组件(分布式存储),MapReduce组件(分布式计算),YARN组件(分布式调度)。
6.HDFS是Hadoop技术栈提供的f分布式数据存储解决方案,可以在多台服务器上构建存储集群,存储海量的数据。HDFS数据存储集群采用主从模式架构(中心化模式架构)
NameNode:主角色,负责管理HDFS集群和DataNode角色
DataNode角色:从角色,负责数据的存储
SecondaryNameNode:辅助角色,负责协助NameNode整理元数据
7.HDFS和Linux系统一样,均是以/作为根目录的组织形式。
8.HDFS和Linux系统中的命令也很类似。
9.HDFS文件系统中的文件只能删除和追加,不能修改。
10.什么是NFS:
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 (通俗的说**:** NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。)
11.HDFS分布式文件存储原理:
每个服务器(节点)存储文件的一部分。
12.block块:设定的HDFS服务器统一的管理单位,每个256MB(支持修改:配置文件中修改)
13.解决block块丢失的问题:
在其他服务器上进行备份。这样某一台服务器的某个block丢失了,可以从其他服务器上复制备份过来。
14.fsck命令查看文件的信息,例如该文件的副本数量和副本路径。
15.NameNode是如何管理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步骤
16.edits和fsimage文件中元数据的合并要么基于时间要么基于事务数,二者达到其一就触发合并操作。
17.SecondaryNameNode就是来做元数据的合并操作的,合并好了给NameNode操作。NameNode来写edits文件。
18.客户端在HDFS上写数据的流程:
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,按照顺序复制分发)
19.客户端在HDFS上读数据的流程:
1.客户端向NameNode申请读取某文件
2.NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表
3.客户端拿到block列表后自行寻找DataNode读取即可。
注意点:
1.数据同样不通过NameNode提供
2.NameNode提供的blockl列表,会基于网络距离计算尽量提供离客户端最近的。
20.为什么需要分布式计算:
因为数据量太大了,硬件性能不够,用数量来弥补。
21.分布式计算常见的两种工作模式:
分散->汇总(MapReduce就是这种模式)
中心调度->步骤执行(大数据体系的Spark,Flink等是这种模式)