HDFS UserGuide (HDFS用户手册)


http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html Purpose 本文档可作为使用HDFS的初期阅读资料,无论HDFS是作为Hadoop集群的一部分或者是一个独立运行的分布式文件系统。HDFS被设计用于很多环境中,对HDFS工作的知识有助于针对特定集群的诊断和改进。 Overview HDFS是Hadoop应用使用的一种主要的分布式存储。一个HDFS集群主要由一个管理文件系统元数据的NameNode和y一组存储实际数据的DataNode组成。HDFS Architecture Guide中对此进行了详细描述。本文档主要介绍用户和管理员如何与HDFS集群进行交互,而HDFS架构图则描述了NameNode、DataNodes和客户端之间的基本交互。客户端请求NameNode以获得稳健元数据或者修改文件信息,而与DataNodes进行实际的I/O。 以下是HDFS的突出特点中,很多用户比较感兴趣的部分: (1)Hadoop,包括HDFS非常适合利用常用硬件进行分布式数据存储和数据处理。它具有容错、可扩展和易于扩大规模等优点。MapReduce,由于其简单,并且适用于一大批分布式应用,因而成为Hadoop内置的一部分。 (2)HDFS默认的配置适用于大部分的情况,一般而言,只有在集群非常大时才需要调整配置。 (3)Hadoop是用Java编写的,被大多数平台所支持。 (4)Hadoop支持类shell命令,比便于用户或者应用与HDFS直接交互。 (5)NameNode和DataNodes内置web服务器,可以方便查看集群的当前状态。 (6)HDFS良好的新特性和持续的改进,下面是其中一些新的特性:
文件权限和身份验证; 机架敏感:在调度任务和分配存储时,考虑到节点的物理位置; 安全模式:用于维护的管理员模式; fsck:一种实用的文件系统诊断工具,用于查找丢失的文件或块; fetchdt:一种实用工具,用于获取 DelegationToken并保存到本地系统; Rebalancer:当数据分布不均衡时,用于数据均衡的工具; 升级和回滚:在软件升级后,如果出现问题,可以回到HDFS升级前的状态; Secondary NameNode:周期性进行checkpoint,保持NameNode EditLog规模在一定范围内; Checkpoint node:周期性checkpoint,使EditLog最小化,代替之前Secondary NameNode,但还未实际应用。NameNode可以拥有多个Checkpoint节点,同时没有Backup nodes; Backup node:是对Checkpoint节点的一个扩展。除了checkpoint外,接收来自NameNode的编辑流,保持一个namespace副本在本地内存中,保持与namenode的同步。NameNode只能有一个Backup node。

Prerequisite 以下文档描述如何安装和设置一个Hadoop集群:
Single Node Setup for first-time users.
Cluster Setup for large, distributed clusters.
本文档的剩余部分假定用户已经安装和运行了至少包含一个DataNode的HDFS。基于本文档的目的,NameNode和DataNode可以运行在同一台物理机器上。
Web Interface NameNode和DataNode各自运行了一个内部的Web服务器,主要用于显示集群当前状态等基本信息。在默认配置下,NameNode的前台页面是http://namenode-name:50070/。该页面列出了集群中的全部数据节点和集群的基本统计信息。Web页面也可以用来浏览文件系统。
Shell Commands Hadoop包含多个类shell名利集,可用于直接与HDFS和其他Hadoop支持的文件系统进行交互。bin/hdfs dfs -help命令列出了Hadoop shell支持的命令。bin/hdfs dfs -help command-name显示一个命令的详细帮助信息。这些命令支持大部分常用的文件系统操作,如拷贝文件、改变文件权限等。也支持一部分HDFS特有的操作,如修改文件副本因子等。
DFSAdmin Command bin/hadoop dfsadmin命令支持HDFS管理员相关操作。bin/hadoop dfsadmin -help命令列出了目前支持的全部命令。如: -report:报告HDFS的基本统计信息,其中部分信息在NameNode前台页面中是可见的。 -safemode:不常用,利用该命令,管理员可手动进入或离开安全模式。 -finalizeUpgrade:删除在上次升级时集群所做的备份。 -refreshNodes:更新允许连接到NameNode的DataNode集合。NameNodes重新读取dfs.hosts和dfs.hosts.exclude中定义的DataNode主机名。dfs.hosts中定义的datanodes是集群的组成部分,只有dfs.hosts中存在的主机才允许向NameNode注册。dfs.hosts.exclude中的主机则是不再使用的。这些不再使用的DataNodes中的所有副本都被拷贝到其他DataNodes后完全废弃。被废弃的节点不会自动关闭,只是不再被选择写入新的副本。 -printTopology:打印集群的topology,显示集群树和机器中的节点。
Secondary NameNode NameNode在edits文件中保存对HDFS文件系统的所有修改,edits文件存储在本地文件系统中。当NameNode启动时,首先从fsimage文件中读取HDFS状态,然后执行edits文件中的修改。然后将新的HDFS状态保存为一个新的fsimage并清空edits文件。由于NameNode只在启动时合并fsimage和edits,因此edits可能会变得非常大。这样做还会造成下次HDFS启动时会非常缓慢。 Secondary NameNode定期合并fsimage和edits,使得edits保持在一定大小范围内。通常Secondary NameNode运行在一台与主NameNode不同的机器上,所需要的内存与主NameNode一致。 Secondary NameNode中checkpoint是由如下两个配置参数管理: dfs.namenode.checkpoint.period,默认该参数是1小时,表示两个连续的checkpoint之间最大的间隔; dfs.namenode.checkpoint.txns,默认是1百万,当未保存的事务数量超过1百万时,会强制checkpoint,不管有没有到达period。 Secondary NameNode在与主NameNode相同的目录下保存着最新的checkpoint,这样在需要时,checkpoint的image文件可以随时被主NameNode读取。

Checkpoint Node NameNode利用两个文件对命名空间持久化,fsimage文件保存最新的checkpoint,edits保存自最近checkpoint开始的对命名空间编辑的日志。当一个NameNode启动时,合并fsimage和edits,提供一个最新的文件系统元数据,然后覆盖原有的fsimage文件并清空edits。 Checkpoint Node周期性创建命名空间的checkpoint。从active NameNode下载fsimage和edits,在本地合并为新的fsimage,然后将其上传到active NameNode。Checkpoint节点一般也运行在与active NameNode不同的机器上,其所需要的内存空间与active NameNode相同。Checkpoint节点在配置文件中指定的节点上,通过bin/hdfs namenode -checkpoint实现。 Checkpoint节点的位置和Web接口通过dfs.namenode.backup.address和dfs.namenode.backup.http-address配置。 checkpoint处理由以下两个参数控制: dfs.namenode.checkpoint.period,默认1小时,指定两次连续checkpoint的最大间隔; dfs.namenode.checkpoint.txns,默认1百万,当未保存的事务数量超过1百万时,会强制checkpoint,即时未达到period。 Checkpoint节点保存最新的checkpoint在于主NameNode相同的目录下,NameNode可以在需要时尽快得到checkpoint image。 多个checkpoint节点可以在集群配置文件中设置。
Backup Node bin/hdfs namenode -backup dfs.namenode.backup.address dfs.namenode.backup.http-address dfs.namenode.edits.dir
Import Checkpoint dfs.namenode.name.dir dfs.namenode.checkpoint.dir -importCheckpoint
Rebalancer
Rack Awareness net.topology.script.file.name
Safemode bin/hadoop dfsadmin -safemode
fsck bin/hadoop fsck
fetchdt bin/hadoop fetchdt DTfile
Recovery Mode namenode -recover (-force)
Upgrade and Rollback dfsadmin -upgradeProgress bin/start-dfs.sh -upgrade bin/start-dfs.sh -rollback
File Permissions and Security
Scalability
Related Documentation

相关内容