Fanr

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2 HDFS Users Guide

2 HDFS Users Guide. 1

2.1目的... 1

2.2.概述... 1

2.3.先决条件... 2

2.4. Web Interface. 2

2.5. Shell Command. 2

2.5.1 DFSAdmin 命令... 3

2.6 Secondary Namenode. 3

2.7 Checkpoint Node. 3

2.8 Backup node. 4

2.9 Import Checkpoint. 4

2.10 均衡器... 5

2.11 Rack Awareness. 5

2.12 Safemode. 5

2.13 fsck. 5

2.14 fetchdt. 5

2.15 Recovery Mode. 5

2.16 更新和回滚... 6

2.17 Datanode热切换磁盘... 7

2.18 文件权限和安全性... 7

2.19 可扩展性... 7

2.20 相关阅读... 7

 

2.1目的

2.2.概述

HDFSHadoop应用使用的主要的分布式存储。HDFS集群使用namenode管理文件系统元数据,datanode保存实际数据。HDFS体系结构中有详细的描述。用户手册主要解决HDFS和用户的交互和HDFS集群的管理。HDFS体系结构中描述了namenodedatanodeclient的相互之间的交互。Clientnamenode获取元数据,修改元数据,在datanode中操作实际的数据。

以下是hdfs主要的特性:

·         Hadoop包含hdfshdfs是非常适用于商用的硬件上面,进行分布式存储和分布式处理的。Hdfs有很好的容错性,可扩展性,扩大也很简单。Mapreduce也是极简的适用于庞大的分布式系统。

·         HDFS是高可配置的,默认配置适用于大多数安装。只有在极大的集群下需要调整配置。

·         Hadoop使用java开发,适用于绝大多数平台。

·         Hadoop支持类似shell的命令行,与hdfs直接交互。

·         Namenodedatanodeweb服务,可以很简单的查看和检查当前集群状态。

·         HDFS有用的特性:

o   文件权限和人认证

o   Rack awareness:在调度任务和分配存储是,考虑node的物理位置

o   Safemode:一个管理模式用来进行对hdfs维护。

o   Fsck:一个用来诊断文件系统是否良好的工具,发现丢失的文件和块。

o   Fetchdt:用来获取DelegationToken 并且保存到本地。

o   Balancer:datanode数据分布不均匀,使用这个工具来均衡。

o   Upgraderollback:软件更新后,因为一些无法预计的问题,可以回滚HDFS的更新

o   Secondary Namenode:定期的执行checkpoint,保证hdfs事务日志大小。

o   Checkpoint node:在命名空间上执行checkpoint,并且最小化namenode的修改日志大小。

o   Backup nodecheckpoint node 的扩展。除了checkpoint之外会接受到一串修改,并且维护在内存中。和namenode 保持同步。一个namenode只能有一个backup node

2.3.先决条件

2.4. Web Interface

Namenodedatanode每个都运行了一个内部的web server,为了显示cluster集群的基本信息。使用默认配置,namenode 的前段网站是http://hosts:9870。列出了cluster中的datanodecluster的基本信息。Web interface可以用来浏览文件系统(使用 browse the file system)

2.5. Shell Command

Hadoop 包含各种类似shell的命令,直接与HDFS和其他的文件系统进行交互。可以使用hdfs dfs –help查看支持的命令。hdfs dfs -help command-name可以查看命令的详细内容。命令支持很多和正常文件系统一样的操作,比如复制文件,修改文件权限等等。也支持HDFS的一些操作比如复制的文件个数。具体可以查看: File System Shell Guide.

2.5.1 DFSAdmin 命令

 hdfs dfsadmin用来支持HDFS管理操作。hdfs dfsadmin –help列出所有支持的命令,比如:

·         -report 报告HDFS的基本信息。一些信息都可以在namenode 的端页面上可以查看

·         -safemode 可以让用户手动进入和退出safemode

·         -finalizeupgrade 清理最后一次cluster升级的备份。

·         -refreshnodes 更新namenode可以连接的datanode。默认namenode读取dfs.hosts,dfs.host.exclude定义的文件中读取。Dfs.hosts包含了只允许注册到namenodeDfs.host.exclude是不允许的datanode。另外如果dfs.namenode.hosts.provider.classname设置为org.apache.hadoop.hdfs.server.blockmanagement.CombinedHostFileManager,所有包含和不包含的host都以json格式在dfs.hosts中。Datanode中的所有副本都放到了其他datanode,那么datanode会被停用。停用的node会自动被关闭。

·         -printTopology 打印cluster的拓扑,显示了namenode 可以查看到的一个b树。

2.6 Secondary Namenode

Namenode的修改以日志方式被保存,append的方式被加入到本地的文件系统文件中。当namenode启动,会从fsimage读取hdfs的状态,然后应用editlog。然后把新的fsimage写回到磁盘并且清空editlog。因为namenode只会在startup状态才会合并,editlog文件在繁忙的cluster中会变的很大。这样会是namenode启动话很长时间。

Secondary namenode定期合并fsimageeditlog,并且限制editlog大小。通常运行在另外一个设备上,因为需要的内存和primary namenode一样。

Secondary namenode上执行的checkpoint有个2参数控制:

·         Dfs.namenode.checkpoint.period 默认为1个小时,指定2checkpoint的时间间隔。

·         Dfs.namenode.checkpoint.txns 默认为100万,没100万事务进行一次checkpoint

Secondary namenode在目录中保存了最后一次checkpoint,目录结构和primary namenode一样。Checkpointimage会准备等待primary namenode 来读取。

Secondary namenode 相关命令 secondarynamenode

2.7 Checkpoint Node

Namenode使用2种文件来保存元数据,fsimage,最后一次checkpoint的元数据,editlog,从最后一次checkpoint到现在的元数据修改日志。当namenode启动,会使用fsimageeditlog合并,提供最新的文件系统状态。Namenode然后使用新的hdfs状态覆盖fsimage,并启动新的editlog

Checkpoint node定期的创建命名空间的检查点。会从活动的namenode下载fsimageeditlog,在本地合并,并且把新的image重新上传到namenodeCheckpoint通常运行在不同的服务器上,因为内存的需求和namenode一样。Checkpoint node根据配置文件使用hdfs namenode –checkpoint启动。

Checkpoint node 或者backup node可以通过配置dfs.namenode.backup.address dfs.namenode.backup.http-address设置。

checkpoint有个2参数控制:

·         Dfs.namenode.checkpoint.period 默认为1个小时,指定2checkpoint的时间间隔。

·         Dfs.namenode.checkpoint.txns 默认为100万,没100万事务进行一次checkpoint

Checkpoint node在目录中保存了最后一次checkpoint,目录结构和namenode一样。Checkpointimage会准备等待namenode 来读取。

2.8 Backup node

Backup node提供和checkpoint node一样的功能,也维护了一份内存的,最新的文件系统命名空间,这个是和活动namenode 保持同步状态的。接收namenode的修改的流,然后放到本地磁盘上,backup node也只应用这些修改到自己在内存的命名空间中,因此创建了一个namespace的备份。

Backup node不需要去下载fsimageeditlog,来创建checkpoint,因为已经在内存中有了最新的状态。Backup node checkpoint更加高效,只需要把命名空间保存到本地fsimage并且重置edit

Namenode只支持一个backup node。如果使用了backup node就无法使用checkpoint node。使用多个backup node在以后会支持。

Backup nodecheckpoint node启动方式一样。使用hdfs namenode –backup启动。

本地的backup node或者checkpoint nodeweb interface通过dfs.namenode.backup.addressdfs.namenode.backup.http-address参数配置。

使用backup node提供了选项,可以让namenode在没有持续化存储下运行,委托了所有的持续化到backup nodeNamenode-importcheckpoint启动,只配置 dfs.namenode.edits.dir

对于完整的讨论checkpoint node backup node 可以看 HADOOP-4539命令的使用可以看:namenode.

2.9 Import Checkpoint

最后一次checkpoint可以导入到namenode上如果所有其他的imageeditlog没有丢失:

·         创建一个空的目录,dfs.namenode.name.dir指向这个目录

·         指向checkpoint数据所在目录,dfs.namenode.checkpoint.dir

·         使用-importcheckpoint启动namenode

Namenode会从checkpoint目录读取数据,然后存放到namenode目录中。如果dfs.namenode.name.dir有文件那么就会报错。Namenode会检查dfs.namenode.checkpoint.dir的一致性,但是不会修改它。

2.10 均衡器

HDFS数据并不是统一的在datanode中。一个原因就是cluster加入了一个新的datanode。当放置新的blocknamenode会在选择datanode,考虑很多:

·         在写入的node上保留一份

·         跨机架需要一份

·         相同机架的不通服务器上面需要一份

·         HDFS数据统一的分配到datanode

因为很多考虑因素,因此数据不能统一的分配到所有datanodeHdfs提供了一个工具来管理分析block的位置,并且重新平衡datanode。一个简单的均衡器管理在HADOOP-1652命令使用查看 balancer.

2.11 Rack Awareness

HDFS集群可以识别rack的拓扑。为了最优化数据容量和使用这个配置很重要。可以查看文档:rack awareness 

2.12 Safemode

当启动namenode的时候从去加载fsimageeditlog文件。然后等待datanode 报告他们的block信息。如果副本不够就开始复制副本,这个时候namenode都在safemode下。Safemodehdfs集群是只读的。如果datanode报告绝大多数block可用,那么就会推出safemode。如果需要,HDFS可以手动进入hdfs dfsadmin –safemodeNamenode的前端网站可以看出safemode是否打开。

2.13 fsck

HDFS支持fsck命令检查各种不一致性。Fsck被设计用来报告各种文件问题。比如,块丢失。不想传统的fsck工具,这个命令并不会修复发现的错误。Namenode会自动修复绝大多数的错误。Fsck不是hadoopshell命令,使用hdfs fsck启动。具体可以查看:fsck.

2.14 fetchdt

HDFS支持fetchdt命令来获取Delegation Token并保存在本地系统中。这个token在后面用于访问服务器。工具使用RPC或者HTTPS获取tokenhdfs fetchdt 是不是hadoop shell命令。可以使用hdfs fetchdt DTfile。如果获取了token之后运行hdfs命令就不需要Kerberos tickets。通过参数HADOOP_TOKEN_FILE_LOCATION指向token文件。Fetchdt命令具体使用: fetchdt 

2.15 Recovery Mode

通常如果配置了多个元数据存储位置。如果一个存储位置损坏,可以从另外一个位置上读取。

但是如果只有一个存储位置,那么怎么办?这里有个namenode启动的特别模式recovery mode,可以恢复绝大多数数据。

通过namenode –recover进入recovery mode

进入recovery modenamenode会交互式提示你如何进行恢复。

如果不想要提示,可以加-force参数。会强制恢复模式总是选择第一个选项。通常都是合理的。

因为恢复模式会导致数据丢失,最要先备份editlogfsimage

2.16 更新和回滚

Hadoop在集群上的升级,和其他软件升级一样,都有可能会出现新的bug或者不兼容的修改影响现有的应用程序。HDFS允许管理员回退到之前的hadoop版本,并且回退cluster状态。HDFS升级可以看 Hadoop Upgrade 。在升级前,管理员需要删除已经有的backup使用hadoop dfsadmin –finalizeUpgrade命令。升级过程:

·         在升级前,确认是否有backup node

·         关闭集群,并且安装新的hadoop

·         使用-upgrade命令,start-dfs.sh –upgrade

·         很多情况下,cluster工作是没问题的,一旦新的hdfs被认为没问题,完成升级。

·         如果需要回退到老的版本:

o   关闭集群并且安装之前的hadoop

o   运行rollback命令hdfs namenode –rollback

o   –rollback启动cluster start-dfs.sh –rollback

当更新到新的HDFS,需要删除为新版本保留的路径。如果namenode在更新的时候碰到一个保留的路径。就会输出错误:

/.reserved is a reserved path and .snapshot is a reserved path component in this version of HDFS. Please rollback and delete or rename this path, or upgrade with the -renameReserved [key-value pairs] option to automatically rename these paths during upgrade.

使用-upgrade -renameReserved [optional key-value pairs]如果出现冲突那么会自动重命名比如,.snapshot 变为.my-snapshot 并且.reserved 变为 .my-reserved-upgrade -renameReserved .snapshot=.my-snapshot,.reserved=.my-reserved.

如果-renameReserved后面没有kv对,namenode会自动加一个后缀.<LAYOUT-VERSION>.UPGRADE_RENAMED, e.g. .snapshot.-51.UPGRADE_RENAMED

推荐在升级之前先运行hdfs dfsadmin –saveNamespace。如果edit log指向的文件被自动重命名那么就会有数据一致性问题。

2.17 Datanode热切换磁盘

Datanode支持热切换。用户可以增加或者替换HDFS数据卷,但是不需要关闭datanode。热切换过程:

·         如果有新的存储目录,用户可以格式化,并且mount

·         用户更新修改datanode配置dfs.datanote.data.dir

·         运行dfsadmin -reconfig datanode HOST:PORT start重新配置。然后可以通过命令dfsadmin -reconfig datanode HOST:PORT status查看重新配置的运行状态。

·         一旦重新配置任务完成,用户可以安全的umount老的数据卷。

2.18 文件权限和安全性

文件权限设计和其他的linux平台的文件系统类似。现在只用于限制简单的文件权限。启动namenode 的用户是HDFS的超级用户。未来的版本HDFS会支持网络验证协议,类似Kerberos并且加密数据传输。

2.19 可扩展性

Hadoop当前一个集群可能有上千个nodeHDFS每个cluster有一个namenode。当前namenode 的内存使用时主要的可扩展性限制。对于非常庞大的集群来说,增加平均文件的大小,可以增加cluster 的大小,但是又不会消耗太多内存。默认配置不使用于非常大的集群。

2.20 相关阅读

  • Hadoop Site: The home page for the Apache Hadoop site.
  • Hadoop Wiki: The home page (FrontPage) for the Hadoop Wiki. Unlike the released documentation, which is part of Hadoop source tree, Hadoop Wiki is regularly edited by Hadoop Community.
  • FAQ: The FAQ Wiki page.
  • Hadoop JavaDoc API.
  • Hadoop User Mailing List: user[at]hadoop.apache.org.
  • Explore hdfs-default.xml. It includes brief description of most of the configuration variables available.
  • HDFS Commands Guide: HDFS commands usage.

 

 

 

posted on 2018-03-14 16:43  Fanr_Zh  阅读(474)  评论(0编辑  收藏  举报