hadoop2.7.2学习笔记15-HDFS user guide

来源:互联网 发布:第一军团永远忠诚知乎 编辑:程序博客网 时间:2024/06/13 03:19

1、概要

hdfs由namenode和datanode组成,前者负责管理文件系统元数据,后者负责存储具体数据。

hdfs支持类shell的命令行直接与其交互。

hdfs的主要特性包括:

1、文件权限和认证;

2、机架敏感,在分配tasks和存储时会考虑到机架;

3、安全模式,维护中用到的一种管理模式;

4、fsck,一个检测文件系统健康的工具,可以查找丢失的文件或blocks;

5、fetchdt,一个用于获取DelegationToken并将其存放在本地文件系统的工具;

6、Balancer(平衡器),在集群datanode中做负载均衡的工具;

7、升级和回滚,hdfs允许升级后进行回滚;

8、secondary namenode,周期性对NameSpace设置检查点,并帮助控制namenode的更改日志文件大小;

9、检查点节点(check point node),周期性对NameSpace设置检查点,并帮助控制namenode的更改日志文件大小,可以取代secondary namenode的角色。hdfs允许在没有回退节点(backup node)的前提下存在多个检查点节点;

10、回退节点,是检查点节点的扩展。它也接收来自namenode的编辑流,并在内存中保存一个和namenode同步的NameSpace的副本。namenode中只能注册一个回退节点。

2、web ui

默认情况下,namenode的web ui端口是50070,它会展示集群的基本情况,也可以用它浏览文件系统。

3、shell命令

通过bin/hdfs dfs -help查看hadoop支持的文件系统shell命令。

DFSAdmin命令

bin/hdfs dfsadmin命令支持管理操作。

4、Secondary NameNode

当namenode启动时它会从一个fsimage文件读取hdfs状态,接着读取edits log文件。然后将新的hdfs状态写入fsimage文件,并清空edits file文件。随后hdfs开始其他操作。edits log文件和fsimage文件只有在namenode启动的时候才会归并一次,因此edits log文件可能变的非常大。这使得namenode的重启也变得异常耗时。

secondary namenode周期性地归并fsimage和edits log,确保edits log的大小不超过一个限额。

secondary namenode上checkpoint进程的启动主要受两个属性控制:

dfs.namenode.checkpoint.period默认值1小时,指定两个checkpoints之间的最大时延。

dfs.namenode.checkpoint.txns默认是1000000,指定未checkpoint的最大交易数,超过此数值会自动进行checkpoint。

secondary namenode的最新的检查点的存储方式和namenode一致,这样namenode可以随时读取它的最新检查点。

5、Checkpoint Node

它从namenode下载fsimage和edits log,并将它们归并后再上传到namenode。

命令行bin/hdfs namenode -checkpoint会在配置文件中指定的节点启动checkpoint node进程。

checkpoint node的位置和它的web ui可以通过dfs.namenode.backup.addressdfs.namenode.backup.http-address参数配置。

checkpoint进程受控于两个属性:

dfs.namenode.checkpoint.period默认值1小时,指定两个checkpoints之间的最大时延。

dfs.namenode.checkpoint.txns默认是1000000,指定未checkpoint的最大交易数,超过此数值会自动进行checkpoint。

它的检查点对于namenode来说也是随时可读的,集群中可以配置多个checkpoint node。

6、Backup Node

提供类似checkpoint node检查点,同时在内存中保存有和namenode时刻保持同步的file system namespace。它在将文件系统的edits流写入硬盘的同时,还会通过这个流去更新内存中的namespace。

namenode只支持一个backup node。当backup node存在时不允许有checkpoint node存在。以后会支持多个backup node。

backup node的配置方式和checkpoint node相同。

使用命令行bin/hdfs namenode -backup 可以启动backup node。

backup node的位置和它的web ui可以通过dfs.namenode.backup.addressdfs.namenode.backup.http-address参数配置。

使用backup node之后,可以允许namenode放弃持久化存储,把持久化namespace的这部分责任交给backup node。使用该模式需要在启动namenode时给出-importCheckpoint选项,并在namenode配置中指定type edits的非持久化存储目录(dfs.namenode.edits.dir)。

7、Import Checkpoint

当image的备份丢失,且edits file丢失时,namenode可以从checkpoint导入image。步骤是:

1、创建一个空目录(由dfs.namenode.name.dir指定);

2、在dfs.namenode.checkpoint.dir属性中指定checkpoint的位置;

3、在启动namenode时附带选项-importCheckPoint。

8、Balancer

在存储一个新的blocks时,namenode将会考虑:

1、在写入该block的节点存储一个该block的备份;

2、需要在不同的机架存储一个该block的备份;

3、在写入该block的节点所在机架的其他节点存储一个该block的备份;

4、使数据在datanodes中均匀的分布。

9、Safemode

namenode启动时首先从fsimage和edtis log文件加载文件系统状态。接着,它会等待datanode发布它们的blocks信息。在这段时间内,namenode将会处于Safemode状态,该状态下的hdfs是只读的。在和datanode确认多数的blocks是可达的之后,namenode将会自动退出safemode。也可使用命令bin/hdfs dfsadmin -safemode来强制进入safemode。

10、fsck

用于检测文件的非一致性异常,但它并不负责修正异常。namenode会自动修复可修复的异常。它可以作用于整个文件系统或者文件系统的一个子集。

11、fetchdt

该hdfs命令用于获取代理令牌,并将其保存在本地文件。该令牌可让非安全的客户端访问secure server(比如namenode)。可以通过RPC或者HTTPS(经由kerboros)来获取令牌,得到该令牌后可以在没用kerboros tickets的时执行一条HDFS命令,只需要将HADOOP_TOKEN_FILE_LOCATION环境变量指向代理令牌文件。

12、Recovery Mode

namnode提供recovery mode,启动方法是namenode -recover

此模式用于备份元数据受到污染的情况下。namenode会在命令行提示用户可行的回复数据的方式。

也可以使用--force选项来强制让recovery mode每次都选择第一个备选项(通常也是最合理的那个)。

此方式会令用户丢失数据,因此还是推荐备份edit log和fsimage。

13、Upgrade and Rollback

典型的升级步骤:

1、通过dfsadmin -upgradeProgress的返回值判断集群是否需要finalize(finalize的意思应该是指彻底删除低版本的备份)。

2、停掉集群,部署新版本。

3、启动新版本时添加-upgrate选项(bin/start-dfs.sh -upgrade)。

4、如果用户认为新版本运行正常,则可以进行finalize。在finalize之前执行删除升级前就已经存在的文件的操作并不会进行真正的删除,文件依旧保存在备份中。

5、如果需要回退到旧版本。首先关闭集群并部署旧版本。接着在namenode执行回滚(bin/hdfs namenode -rollback)。最后以rollback选项启动集群(sbin/start-dfs.sh -rollback)。

在升级hdfs时需要重命名或删除新版本的保留路径(暂时不明白什么是保留路径)。在启动时新增选项-upgrade -renameReserved [optional key-value pairs]可以让namenode自动重命名保留路径。如果不添加key-value,重命名时会默认给保留路径增加后缀。

升级前最好先执行hdfs dfsadmin -saveNamespace。这样做是因为如果一个edit log操作指向自动重命名文件的目的地,那么可能出现数据不一致。

14、DataNode Hot Swap Drive

可以在不关闭datanode的情况下添加或替换hdfs data volumns。

如果有了一个新的存储目录,用户需要将它格式化并进行适当的挂载。

用户执行dfsadmin -reconfig datanode HOST:PORT start命令以启动重配置进程,用户使用dfsadmin -reconfig datanode HOST:PORT status来查询重配置任务的状态。

当重配置任务执行完毕,用户可以安全地解挂data volumns目录并移除硬盘。

15、文件权限和安全

权限同linux。目前,安全设置仅限于简单文件权限。开启namenode的用户即是hdfs的超级用户。以后的版本将支持kerberos的用户认证和数据传输加密。