怎样做娱乐网站,网站免费永久,自己建个电影网站可以吗,dw网站建设视频下载一、HDFS分布式文件存储系统
1-1 HDFS的存储机制 按块#xff08;block#xff09;存储 hdfs在对文件数据进行存储时#xff0c;默认是按照128M(包含)大小进行文件数据拆分#xff0c;将不同拆分的块数据存储在不同datanode服务器上 拆分后的块数据会被分别存储在不同的服…一、HDFS分布式文件存储系统
1-1 HDFS的存储机制 按块block存储 hdfs在对文件数据进行存储时默认是按照128M(包含)大小进行文件数据拆分将不同拆分的块数据存储在不同datanode服务器上 拆分后的块数据会被分别存储在不同的服务器上 副本机制 为了保证hdfs的数据的安全性避免数据的丢失hdfs对每个块数据进行备份默认情况下块数据会存储3份叫做3副本 副本块是存在不同的服务器上 默认存储策略由BlockPlacementPolicyDefault类支持。也就是日常生活中提到最经典的3副本策略。
1st replica 如果写请求方所在机器是其中一个datanode,则直接存放在本地,否则随机在集群中选择一个datanode.
2nd replica 第二个副本存放于不同第一个副本的所在的机架
3rd replica 第三个副本存放于第二个副本所在的机架,但是属于不同的服务器节点
1-2 HDFS写入数据流程
1、client发起文件上传请求通过RPC与NameNode建立通讯NameNode检查目标文件是否已存在父目录是否存在返回是否可以上传
2、client请求第一个 block该传输到哪些DataNode服务器上
3、NameNode根据配置文件中指定的备份数量及副本放置策略进行文件分配返回可用的DataNode的地址如ABC
4、 client请求3台DataNode中的一台A上传数据本质上是一个RPC调用建立pipelineA收到请求会继续调用B然后B调用C将整个pipeline建立完成后逐级返回client
5、 client开始往A上传第一个block先从磁盘读取数据放到一个本地内存缓存以packet为单位默认64KA收到一个packet就会传给BB传给CA每传一个packet会放入一个应答队列等待应答。
6、 数据被分割成一个个packet数据包在pipeline上依次传输在pipeline反方向上逐个发送ack命令正确应答最终由pipeline中第一个DataNode节点A将pipeline ack发送给client;
7、 当一个block传输完成之后client再次请求NameNode上传第二个block到服务器。
1-3 HDFS数据读取流程
1、 Client向NameNode发起RPC请求来确定请求文件block所在的位置
2、 NameNode会视情况返回文件的部分或者全部block列表对于每个blockNameNode都会返回含有该block副本的DataNode地址
3、 这些返回的DN地址会按照集群拓扑结构得出DataNode与客户端的距离然后进行排序排序两个规则网络拓扑结构中距离Client近的排靠前心跳机制中超时汇报的DN状态为STALE这样的排靠后
4、 Client选取排序靠前的DataNode来读取block如果客户端本身就是DataNode,那么将从本地直接获取数据
5、 底层上本质是建立FSDatainPutStream重复的调用父类DataInputStream的read方法直到这个块上的数据读取完毕一旦到达块的末尾FSDatainPutStream关闭连接并继续定位下一个块的下一个 DataNode
6、 当读完列表的block后若文件读取还没有结束客户端会继续向NameNode获取下一批的block列表一旦客户端完成读取它就会调用 close() 方法。
7、 读取完一个block都会进行checksum验证如果读取DataNode时出现错误客户端会通知NameNode然后再从下一个拥有该block副本的DataNode继续读。
8、 NameNode只是返回Client请求包含块的DataNode地址并不是返回请求块的数据
9、 最终读取来所有的block会合并成一个完整的最终文件。 1-4 checkpoint机制 checkpont机制是secondname和namenode之间的数据操作 该机制决定了secondname什么时候进行元数据的持久化保存 条件一 距离上一次保存时间过去了1个小时 条件二 文件的事务操作(文件写入文件修改文件删除)达到了100万次 两个条件任意一个满足就执行checkpoint fsimage文件其实是Hadoop文件系统元数据的一个永久性的检查点其中包含Hadoop文件系统中的所有目录和文件idnode的序列化信息fsimage包含Hadoop文件系统中的所有目录和文件idnode的序列化信息对于文件来说包含的信息有修改时间、访问时间、块大小和组成一个文件块信息等而对于目录来说包含的信息主要有修改时间、访问控制权限等信息。 edits文件存放的是Hadoop文件系统的所有更新操作的路径文件系统客户端执行的所以写操作首先会被记录到edits文件中。 hdfs oiv -p XML -i fsimage_00000000000000000 -o fsimage.xml
hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o edits.xml checkpoint的触发流程 1-NameNode管理着元数据信息其中有两类持久化元数据文件edits操作日志文件和fsimage元数据镜像文件。新的操作日志不会立即与fsimage进行合并也不会刷到NameNode的内存中而是会先写到edits中(因为合并需要消耗大量的资源)操作成功之后更新至内存。
2-有dfs.namenode.checkpoint.period和dfs.namenode.checkpoint.txns 两个配置只要达到这两个条件任何一个secondarynamenode就会执行checkpoint的操作。
3-当触发checkpoint操作时NameNode会生成一个新的edits即上图中的edits.new文件同时SecondaryNameNode会将edits文件和fsimage复制到本地HTTP GET方式。
4-secondarynamenode将下载下来的fsimage载入到内存然后一条一条地执行edits文件中的各项更新操作使得内存中的fsimage保存最新这个过程就是edits和fsimage文件合并生成一个新的fsimage文件即上图中的Fsimage.ckpt文件。
5-secondarynamenode将新生成的Fsimage.ckpt文件复制到NameNode节点。
6-在NameNode节点的edits.new文件和Fsimage.ckpt文件会替换掉原来的edits文件和fsimage文件至此刚好是一个轮回即在NameNode中又是edits和fsimage文件。
7-等待下一次checkpoint触发SecondaryNameNode进行工作一直这样循环操作。 checkpoint不能完全保证元数据不丢失如果真出现服务器宕机会丢失最新的操作数据 1-5 安全机制 安全模式是HDFS所处的一种特殊状态在这种状态下文件系统只接受读数据请求而不接受删除、修改等变更请求是一种保护机制用于保证集群中的数据块的安全性。 如果HDFS处于安全模式下,不允许HDFS客户端进行任何修改文件的操作,包括上传文件删除文件重命名创建文件夹,修改副本数等操作。 在hdfs启动后默认是在安全模式该模式会检查各个块信息只有确认块数据完整后会退出安全模式 退出安全模式的条件 1-每个数据块最小副本数量默认为1. 在上传文件时达到最小副本数就认为上传是成功的。 2-达到最小副本数的数据块的百分比。默认为0.999f。 3-离开安全模式的最小可用datanode数量要求默认为0,也就是即使所有datanode都不可用仍然可以离开安全模式 4-集群可用block比例可用datanode都达到要求之后如果在extension配置的时间段之后依然能满足要求此时集群才离开安全模式。单位为毫秒默认为30000.也就是当满足条件并且能够维持30秒之后离开安全模式 因为虚拟机的非正常关机造成块的数据丢失就进入安全模式 安全模式的指令操作 # 离开安全模式但是如果块数丢失较多无法离开使用前置离开 hdfs dfsadmin -safemode leave # 强制退出 hdfs dfsadmin -safemode forceExit