HDFS--知识点2

1.NN和2NN工作机制
NameNode中的元数据是存储在哪里的?
因此产生在磁盘中备份元数据的FsImage。因此,引入Edits文件(只进行追加操作,效率很高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits中。因此,引入一个新的节点SecondaryNamenode,专门用于FsImage和Edits的合并。
在这里插入图片描述
第一阶段:NameNode启动
(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求。
(3)NameNode记录操作日志,更新滚动日志。
(4)NameNode在内存中对数据进行增删改。
2. 第二阶段:Secondary NameNode工作
(1)Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。(checkpoint就是日志合并)checkpoint 1小时,edits是100完
(2)Secondary NameNode请求执行CheckPoint。
(3)NameNode滚动正在写的Edits日志。
(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。
(5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
(6)生成新的镜像文件fsimage.chkpoint。
(7)拷贝fsimage.chkpoint到NameNode。
(8)NameNode将fsimage.chkpoint重新命名成fsimage。
在这里插入图片描述
2.查看oiv和oev命令
[atguigu@hadoop102 current]$ hdfs
oiv apply the offline fsimage viewer to an fsimage
oev apply the offline edits viewer to an edits file
(2)基本语法
hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
(3)案例实操
[atguigu@hadoop102 current]$ pwd
/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current
[atguigu@hadoop102 current]$ hdfs oiv -p XML -i fsimage_0000000000000000025 -o /opt/module/hadoop-2.7.2/fsimage.xml
[atguigu@hadoop102 current]$ cat /opt/module/hadoop-2.7.2/fsimage.xml
3.oev查看Edits文件
(1)基本语法
hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径
(2)案例实操
[atguigu@hadoop102 current]$ hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o /opt/module/hadoop-2.7.2/edits.xml
[atguigu@hadoop102 current]$ cat /opt/module/hadoop-2.7.2/edits.xml
CheckPoint时间设置
通常情况下,SecondaryNameNode每隔一小时执行一次。
一分钟检查一次操作次数,3当操作次数达到1百万时,SecondaryNameNode执行一次。
4. NameNode故障处理
NameNode故障后,可以采用如下两种方法恢复数据。
将SecondaryNameNode中数据拷贝到NameNode存储数据的目录;

  1. kill -9 NameNode进程
  2. 删除NameNode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)
    [atguigu@hadoop102 hadoop-2.7.2]$ rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*
  3. 拷贝SecondaryNameNode中数据到原NameNode存储数据目录
    [atguigu@hadoop102 dfs]$ scp -r atguigu@hadoop104:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* ./name/
  4. 重新启动NameNode
    [atguigu@hadoop102 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode
    5.集群的安全模式
    在这里插入图片描述
    2.基本语法
    集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。
    (1)bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
    (2)bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
    (3)bin/hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
    (4)bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)
    案例
    模拟等待安全模式
    (1)查看当前模式
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -safemode get
    Safe mode is OFF
    (2)先进入安全模式
    [atguigu@hadoop102 hadoop-2.7.2]$ bin/hdfs dfsadmin -safemode enter
    (3)创建并执行下面的脚本
    在/opt/module/hadoop-2.7.2路径上,编辑一个脚本safemode.sh
    [atguigu@hadoop102 hadoop-2.7.2]$ touch safemode.sh
    [atguigu@hadoop102 hadoop-2.7.2]$ vim safemode.sh
    #!/bin/bash
    hdfs dfsadmin -safemode wait
    hdfs dfs -put /opt/module/hadoop-2.7.2/README.txt /
    [atguigu@hadoop102 hadoop-2.7.2]$ chmod 777 safemode.sh
    [atguigu@hadoop102 hadoop-2.7.2]$ ./safemode.sh
    (4)再打开一个窗口,执行
    [atguigu@hadoop102 hadoop-2.7.2]$ bin/hdfs dfsadmin -safemode leave
    (5)观察
    (a)再观察上一个窗口 Safe mode is OFF
    (b)HDFS集群上已经有上传的数据了。
    6.DataNode工作机制
    DataNode工作机制。
    在这里插入图片描述
    7.集群中文件的传输
    1.scp实现两个远程主机之间的文件复制
    scp -r hello.txt root@hadoop103:/user/atguigu/hello.txt // 推 push
    scp -r root@hadoop103:/user/atguigu/hello.txt hello.txt // 拉 pull
    scp -r root@hadoop103:/user/atguigu/hello.txt root@hadoop104:/user/atguigu //是通过本地主机中转实现两个远程主机的文件复制;如果在两个远程主机之间ssh没有配置的情况下可以使用该方式。
    2.采用distcp命令实现两个Hadoop集群之间的递归数据复制
    [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop distcp
    hdfs://haoop102:9000/user/atguigu/hello.txt hdfs://hadoop103:9000/user/atguigu/hello.txt
    在这里插入图片描述
    8.案例实操
    (1)需要启动YARN进程
    [atguigu@hadoop102 hadoop-2.7.2]$ start-yarn.sh
    (2)归档文件
    把/user/atguigu/input目录里面的所有文件归档成一个叫input.har的归档文件,并把归档后文件存储到/user/atguigu/output路径下。
    [atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop archive -archiveName input.har –p /user/atguigu/input /user/atguigu/output
    (3)查看归档
    [atguigu@hadoop102 hadoop-2.7.2]$ hadoop fs -lsr /user/atguigu/output/input.har
    [atguigu@hadoop102 hadoop-2.7.2]$ hadoop fs -lsr har:///user/atguigu/output/input.har
    (4)解归档文件
    [atguigu@hadoop102 hadoop-2.7.2]$ hadoop fs -cp har:/// user/atguigu/output/input.har/* /user/atguigu
    9.回收站
    开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。
    在这里插入图片描述
    2.启用回收站
    修改core-site.xml,配置垃圾回收时间为1分钟。

    fs.trash.interval
    1

    3.查看回收站
    回收站在集群中的路径:/user/atguigu/.Trash/….
    10.快照对目录进行备份,并不会立即复制,而是记录文件的变化。
    在这里插入图片描述
    11.操作
    (1)开启/禁用指定目录的快照功能
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -allowSnapshot /user/atguigu/input
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -disallowSnapshot /user/atguigu/input
    (2)对目录创建快照
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfs -createSnapshot /user/atguigu/input
    通过web访问hdfs://hadoop102:50070/user/atguigu/input/.snapshot/s……// 快照和源文件使用相同数据
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfs -lsr /user/atguigu/input/.snapshot/
    (3)指定名称创建快照
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfs -createSnapshot /user/atguigu/input miao170508
    (4)重命名快照
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfs -renameSnapshot /user/atguigu/input/ miao170508 atguigu170508
    (5)列出当前用户所有可快照目录
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs lsSnapshottableDir
    (6)比较两个快照目录的不同之处
    [atguigu@hadoop102 hadoop-2.7.2]$ hdfs snapshotDiff
    /user/atguigu/input/ . .snapshot/atguigu170508
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据学习爱好者

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值