三、HDFS高可靠性措施

1)冗余备份

数据存储在这些 HDFS 中的节点上,为了防止因为某个节点宕机而导致数据丢失,HDFS 对数据进行冗余备份,至于具体冗余多少个副本,在 dfs.replication 中配置。

2)跨机架副本存放

仅仅对数据进行冗余备份还不够,假设所有的备份都在一个节点上,那么该节点宕机后,数据一样会丢失, 因此 HDFS 要有一个好的副本存放策略, 该策略还在开发中。目前使用的是, 以dfs.replication=3 为例,在同一机架的两个节点上各备份一个副本,然后在另一个机架的某个节点上再放一个副本。前者防止该机架的某个节点宕机,后者防止某个机架宕机。

3)心跳检测

DataNode 节点定时向 NameNode 节点发送心跳包,以确保 DataNode 没有宕机。如果宕机,会采取相应措施,比如数据副本的备份。

4)数据完整性检测

NameNode 在创建 HDFS 文件时,会计算每个数据的校验和并储存起来。当客户端从 DataNode 获取数据时,他会将获取的数据的校验和与之前储存的校验和进行对比。

5)安全模式

HDFS 启动时,会进入安全模式,此时不允许写操作。这时,NameNode 会收到所有 DataNode 节点的数据块报告,在确认安全之后,系统自动退出安全模式。

6)核心文件备份

HDFS 的核心文件是映像文件和事务日志,如果这些文件损坏,将会导致 HDFS 不可用。系统支持对这两个文件的备份,以确保 NameNode 宕机后的恢复。

7)空间回收

从 HDFS 中删除的文件会首先被放入到/trash 中,/trash 文件夹中的内容是被删除文件最后的副本,该文件夹会被定时清空。该文件夹中不存在的文件就彻底不存在了。

四、HDFS shell应用

1、HDFS shell命令分类

hadoop数据存储备份 hadoop集群备份最佳实践_安全模式

2、hdfs dfs 常用命令

1)查看所有命令   hdfs dfs

2) 查看某目录下文件列表   

    查看hdfs根目录下的文件列表     

      hdfs dfs -ls /

    查看指定目录下的文件夹及文件 

     hdfs dfs -lsr /

3)  查看某文本文件的内容 

     hdfs dfs -cat  /tmp/index.html

4) 创建目录 

  hdfs dfs -mkdir -p /tmp/edu

5) 删除目录 

  hdfs dfs -rmr /tmp/edu

6) 从hdfs下载文件

  hdfs dfs -copyToLocal  /tmp/index.html

7)从本地上传文件到hdfs 

  hdfs dfs -copyFromLocal index.html  /tmp/edu

8) 查看压缩的文本内容 

  hdfs dfs -text /tmp/edu/index.gz 

9) 查看文件大小   

  hdfs dfs -du -h /tmp/tianliangedu

10) 创建文件 

  hdfs dfs -touchz /tmp/tianliangedu/HelloWorld.txt

3、hdfs dfsadmin

hdfs dfsadmin 是集群管理员 的常用命令,用来对 HDFS 集群的整体运行进行管理和运维。常用的管理命令如下:

1)查看可用的管理命令

hdfs dfsadmin -help

2)报告文件系统信息

hdfs dfsadmin -report

3)设置目录配额

hdfs dfsadmin -setQuota <quota> <dirname>……<dirname>

比如:hdfs dfsadmin -setQuota 10 /tmp/tianliangedu

4)安全模式管理

当集群环境启动时,NameNode 会进入一个安全模式。此时不会出现数据块的写操作。NameNode 会收到各个 DataNode 拥有的数据块列表的数据块报告,由此 NameNode 获得所有的数据块信息。数据块达到最小副本数时,该数据块就被认为是安全的。

hdfs dfsadmin -safemode get ##返回安全模式是否开启的信息,返回 Safe mode is OFF/OPEN

hdfs dfsadmin -safemode enter ##进入安全模式

hdfs dfsadmin -safemode leave ##强制 NameNode 退出安全模式

hdfs dfsadmin -safemode wait ##等待,一直到安全模式结束