三、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命令分类
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 ##等待,一直到安全模式结束