[HDFS Manual] CH2 HDFS Users Guide

2 HDFS Users Guide

2 HDFS Users Guide. 1html

2.1目的... 1前端

2.2.概述... 1java

2.3.先决条件... 2node

2.4. Web Interface. 2linux

2.5. Shell Command. 2web

2.5.1 DFSAdmin 命令... 3shell

2.6 Secondary Namenode. 3apache

2.7 Checkpoint Node. 3json

2.8 Backup node. 4api

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.
相关文章
相关标签/搜索