HDFS部分:namenode的启动流程,Block的副本放置策略

namenode的启动流程:

1.文件(fsimage)载入内存

2.执行编辑日志(edits)中的各项操作

3.创建一个新的fsimage文件

4.创建一个空的编辑日志

在namenode第一次启动之前,搭建了集群之后格式化,一切都是空的状态。

安全模式 namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。 此刻namenode运行在安全模式。即namenode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败)。 在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的, 在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束 当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。

HDFS部分:namenode的启动流程,Block的副本放置策略

公司一般用机架服务器

Block的副本放置策略

第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。

第二个副本:放置在于第一个副本不同的 机架的节点上。 第三个副本:与第二个副本相同机架的节点。 更多副本:随机节点

HDFS部分:namenode的启动流程,Block的副本放置策略

HDFS部分:namenode的启动流程,Block的副本放置策略

读到一行,按照字符串长度作为key,以这一行的内容作为value

切分成小文件,避免磁盘溢出的问题

只要是内部有序,外部无序,一次IO就可以得到全排序

单机处理大数据

单机也可以做,只是时间很慢

集群并行计算

HDFS:存储层,计算层

Hadoop的思想来自谷歌的三篇论文

大数据思想最早来自于谷歌,三篇论文

HDFS部分:namenode的启动流程,Block的副本放置策略

Hadoop项目

Hadoop生态圈

集群的主从模型

一主多备

Linux是目录树结构

HDFS部分:namenode的启动流程,Block的副本放置策略

MapReduce是基于磁盘存储

namenode 是基于内存存储的,断电易于丢失,需要做持久化操作的,也就是要写入到磁盘上去的。

HDFS部分:namenode的启动流程,Block的副本放置策略

HDFS部分:namenode的启动流程,Block的副本放置策略

持久化的第一是写入到磁盘,第二是写入到日志中

归并排序

namenode的持久化

拍快照是发生在namenode上的

10分钟:

每个块的副本数太多