namenode的启动流程:
1.文件(fsimage)载入内存
2.执行编辑日志(edits)中的各项操作
3.创建一个新的fsimage文件
4.创建一个空的编辑日志
在namenode第一次启动之前,搭建了集群之后格式化,一切都是空的状态。
安全模式 namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。 此刻namenode运行在安全模式。即namenode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败)。 在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的, 在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束 当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。
公司一般用机架服务器
Block的副本放置策略
第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
第二个副本:放置在于第一个副本不同的 机架的节点上。 第三个副本:与第二个副本相同机架的节点。 更多副本:随机节点
读到一行,按照字符串长度作为key,以这一行的内容作为value
切分成小文件,避免磁盘溢出的问题
只要是内部有序,外部无序,一次IO就可以得到全排序
单机处理大数据
单机也可以做,只是时间很慢
集群并行计算
HDFS:存储层,计算层
Hadoop的思想来自谷歌的三篇论文
大数据思想最早来自于谷歌,三篇论文
Hadoop项目
Hadoop生态圈
集群的主从模型
一主多备
Linux是目录树结构
MapReduce是基于磁盘存储
namenode 是基于内存存储的,断电易于丢失,需要做持久化操作的,也就是要写入到磁盘上去的。
持久化的第一是写入到磁盘,第二是写入到日志中
归并排序
namenode的持久化
拍快照是发生在namenode上的
10分钟:
每个块的副本数太多