目的
本文档是使用Hadoop分布式文件系统(HDFS)作为Hadoop集群或独立通用分布式文件系统的一部分的用户的起点。虽然HDFS旨在在许多环境中“正常工作”,但HDFS的工作知识有助于在特定集群上进行配置改进和诊断。
概述
HDFS是Hadoop应用程序使用的主要分布式存储。HDFS集群主要由一个NameNode来管理文件系统元数据和存储实际数据的DataNodes。HDFS架构指南详细介绍了HDFS。本用户指南主要处理用户和管理员与HDFS集群的交互。HDFS架构图描述了NameNode,DataNode和客户端之间的基本交互。客户联系NameNode进行文件元数据或文件修改,并直接使用DataNodes执行实际的文件I / O。
以下是许多用户可能感兴趣的一些突出特征:
Hadoop,包括HDFS,非常适合于使用商品硬件的分布式存储和分布式处理。它是容错的,可扩展的,非常简单的扩展。由于其简明易用且适用于大型分布式应用程序,MapReduce是Hadoop的一个组成部分。
HDFS是高度可配置的,默认配置非常适合许多安装。大多数情况下,配置需要仅针对非常大的集群进行调整。
Hadoop是用Java编写的,在所有主要平台上都支持。
Hadoop支持类shell命令直接与HDFS进行交互。
NameNode和Datanodes内置了Web服务器,可以方便地检查集群的当前状态。
在HDFS中经常实施新功能和改进。以下是HDFS中有用功能的一个子集:
文件权限和身份验证。
机架感知:在调度任务和分配存储时考虑节点的物理位置。
Safemode:维护的管理模式。
fsck:用于诊断文件系统运行状况的实用程序,以查找丢失的文件或块。
fetchdt:一个用于获取DelegateToken并将其存储在本地系统上的文件中的实用程序。
平衡器:数据在DataNodes之间不均匀分布时平衡集群的工具。
升级和回滚:软件升级后,如果出现意外问题,可以在升级之前回滚到HDFS状态。
Secondary NameNode:执行命名空间的定期检查点,并帮助将包含HDFS修改日志的文件的大小保留在NameNode的某个限制内。
检查点节点:执行命名空间的定期检查点,并帮助最小化包含HDFS更改的NameNode中存储的日志大小。替换先前由Secondary NameNode填充的角色,尽管尚未使用。NameNode允许多个Checkpoint节点同时进行,只要没有备份节点注册到系统。
备份节点:Checkpoint节点的扩展。除了检查点之外,它还从NameNode接收编辑流,并维护其自己的命名空间的内存中副本,该副本始终与活动的NameNode命名空间状态同步。只能一个备份节点可以一次注册到NameNode。
准备工作
以下文档介绍如何安装和设置Hadoop集群:
- Single Node Setup for first-time users.
- Cluster Setup for large, distributed clusters.
本文档的其余部分假设用户能够使用至少一个DataNode来设置和运行HDFS。为了本文档的目的,NameNode和DataNode都可以在同一物理机上运行。
Web服务
NameNode和DataNode都会运行一个内部Web服务器,以显示有关集群当前状态的基本信息。使用默认配置,NameNode首页位于http://namenode-name:50070/。它列出了集群中的DataNodes和集群的基本统计信息。Web界面也可用于浏览文件系统(使用NameNode首页上的“浏览文件系统”链接)。
Shell命令
Hadoop包括与Hadoop支持的HDFS和其他文件系统直接交互的各种shell命令。命令bin / hdfs dfs -help列出了Hadoop shell支持的命令。此外,命令bin / hdfs dfs -help命令名显示命令的更详细的帮助。这些命令支持大多数正常的文件系统操作,如复制文件,更改文件权限等。它还支持几个HDFS特定操作,如更改文件复制。有关详细信息,请参阅File System Shell Guide.
DFSAdmin Command
bin / hadoop dfsadmin命令支持几个与HDFS管理相关的操作。bin / hadoop dfsadmin -help命令列出了当前支持的所有命令。例如:
-report:报告HDFS的基本统计资料。这些信息中的一些也可以在NameNode首页上找到。
-safemode:虽然通常不需要,管理员可以手动输入或离开Safemode。
-finalizeUpgrade:删除上一次升级过程中创建的群集的先前备份。
-refreshNodes:使用允许连接到namenode的数据库集更新namenode。Namenodes重新读取由dfs.hosts dfs.hosts.exclude定义的文件中的datanode主机名。dfs.hosts中定义的主机是作为集群一部分的数据库。如果dfs.hosts中有条目,则只允许其中的主机向namenode注册。dfs.hosts.exclude中的条目是需要停用的数据。当所有副本从其复制到其他数据库时,Datanodes完全退役。退出的节点不会自动关闭,也不会被选择用于写入新的副本。
-printTopology:打印集群的拓扑。显示由NameNode查看的附加到轨道的机架和数据库的树。
For command usage, see dfsadmin.
Secondary NameNode
NameNode将对文件系统的修改作为附加到本机文件系统文件的日志进行编辑。当NameNode启动时,它从快照文件fsimage中读取HDFS状态,然后应用编辑日志文件中的编辑。然后将新的HDFS状态写入fsimage,并使用空的编辑文件启动正常操作。由于NameNode仅在启动期间合并fsimage和edits文件,编辑日志文件可能会在繁忙的群集中随着时间的推移而变得非常大。较大编辑文件的另一个副作用是下次重新启动NameNode需要更长时间。
辅助NameNode定期合并fsimage和编辑日志文件,并将编辑日志大小保留在限制内。它通常在与主NameNode不同的机器上运行,因为其内存要求与主NameNode的顺序相同。
辅助NameNode上的检查点进程的开始由两个配置参数控制:
dfs.namenode.checkpoint.period,默认设置为1小时,指定两个连续检查点之间的最大延迟,
dfs.namenode.checkpoint.txns,默认设置为100万,定义NameNode上的未检查点事务数,这将强制执行紧急检查点,即使尚未达到检查点周期。
辅助NameNode将最新的检查点存储在与主NameNode的目录相同方式构造的目录中。因此,如果必要,检查指向的图像总是准备好被主NameNode读取。
For command usage, see secondarynamenode.
Checkpoint Node
NameNode使用两个文件保留其命名空间:fsimage,它是命名空间的最新检查点;edits,自检查点以来的命名空间更改的日志(日志)。当NameNode启动时,它会合并fsimage和edits journal,以提供文件系统元数据的最新视图。NameNode然后用新的HDFS状态覆盖fsimage并开始一个新的编辑日志。
Checkpoint节点定期创建命名空间的检查点。它从活动的NameNode下载fsimage和编辑,将其本地合并,并将新图像上传回活动的NameNode。Checkpoint节点通常在与NameNode不同的机器上运行,因为它的内存要求与NameNode的顺序相同。Checkpoint节点由配置文件中指定的节点上的bin / hdfs namenode -checkpoint启动。
Checkpoint(或Backup)节点及其附带的Web界面的位置通过dfs.namenode.backup.address和dfs.namenode.backup.http-address配置变量进行配置。
Checkpoint节点上的检查点进程的开始由两个配置参数控制。
dfs.namenode.checkpoint.period,默认设置为1小时,指定两个连续检查点之间的最大延迟
dfs.namenode.checkpoint.txns,默认设置为100万,定义NameNode上的未检查点事务数,这将强制执行紧急检查点,即使尚未达到检查点周期。
Checkpoint节点将最新的检查点存储在与NameNode的目录结构相同的目录中。这样,如果需要,这个检查点图像总是可以被NameNode读取。请参阅导入检查点。
可以在集群配置文件中指定多个检查点节点。
For command usage, see namenode.
Backup Node
备份节点提供与检查点节点相同的检查点功能,以及维护始终与活动NameNode状态同步的文件系统命名空间的内存中最新副本。随着从NameNode接受文件系统编辑的日志流并将其持续到磁盘,Backup节点也将这些编辑应用于内存中自己的命名空间副本,从而创建命名空间的备份。
备份节点不需要从活动的NameNode下载fsimage和edits文件,以便创建检查点,如Checkpoint节点或Secondary NameNode所要求的,因为它已经具有命名空间状态的最新状态在记忆中。备份节点检查点进程更有效,因为它只需要将命名空间保存到本地fsimage文件中并重置修改。
由于备份节点在内存中维护命名空间的副本,因此其RAM要求与NameNode相同。NameNode一次支持一个备份节点。如果备份节点正在使用中,则不会注册检查点节点。将来会支持同时使用多个备份节点。备份节点的配置方式与Checkpoint节点相同。它以bin / hdfs namenode -backup开头。
备份(或检查点)节点及其附带的Web界面的位置通过dfs.namenode.backup.address和dfs.namenode.backup.http-address配置变量进行配置。使用备份节点提供运行NameNode的选项,不带持久存储,将所有命名空间的状态委托给Backup节点。为此,请使用-importCheckpoint选项启动NameNode,并且不会为NameNode配置指定类型为dfs.namenode.edits.dir的持久性存储目录。
有关创建Backup节点和Checkpoint节点的动机的完整讨论see HADOOP-4539. For command usage, see namenode.