前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EMR入门学习之HDFS的运维操作(十三)

EMR入门学习之HDFS的运维操作(十三)

原创
作者头像
披荆斩棘
修改2019-12-06 18:08:12
1.2K0
修改2019-12-06 18:08:12
举报
文章被收录于专栏:乘风破浪乘风破浪

一、查看HDFS文件系统健康状况

前言

HDFS是分布式文件系统。HDFS支持fsck命令来检查系统中的各种不一致状况。我们可以使用fsck 来查看当前文件系统的状态。该命令提供了若干选项,不同选项完成不同的功能。

登录EMR集群的Master节点,我们通过ps aux | grep namenode 可以看到HDFS的超级用户是Hadoop。

所以我们在Master节点su hadoop,执行hdfs fsck 输出如下:

代码语言:javascript
复制
Usage: hdfs fsck  [-list-corruptfileblocks | [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]] [-includeSnapshots] [-storagepolicies] [-blockId ]
  start checking from this path
 -move move corrupted files to /lost+found
 -delete delete corrupted files
 -files print out files being checked
 -openforwrite print out files opened for write
 -includeSnapshots include snapshot data if the given path indicates a snapshottable directory or there are snapshottable directories under it
 -list-corruptfileblocks print out list of missing blocks and files they belong to
 -blocks print out block report
 -locations print out locations for every block
 -racks print out network topology for data-node locations
 -storagepolicies print out storage policy summary for the blocks
 -blockId print out which file this blockId belongs to, locations (nodes, racks) of this block, and other diagnostics info (under replicated, corrupted or not, etc)

参数

说明

<path>

检查的起始目录

-move

将损坏的文件移到到/lost+found

-delete

删除损坏的文件

-files

打印出所有被检查的文件

-openforwrite

打印出正在写的文件

-list-corruptfileblocks

print out list of missing blocks and files they belong to

-blocks

打印出block报告

-locations

打印出每个block的位置

-racks

打印出datanode的网络拓扑结构

默认情况下,fsck会忽略正在写的文件,使用-openforwrite可以汇报这种文件

注意事项:当输入的 在namenode中文件数量大的时候,要慎重使用fsck命令,会对hdfs系统造成较大性能影响。 通常,推荐在文件系统负载低峰期时候执行该命令,作健康检查。

操作

示例1:对整个文件系统进行监控检查

hdfs fsck /

示例2:将某个目录中损坏的文件删除

示例3:打印被检查的文件信息

二、HA集群查看NameNode状态

前言

在运维HDFS集群,或排查问题的过程中,我们需要确定某个NameNode节点的服务状态。HDFS提供了haadmin工具来查看该信息。

操作命令

同样在Master节点hadoop用户下,使用hdfs haadmin -getAllServiceState 如下:

或者使用hdfs haadmin -getServiceState nn1 如下

则NameNode nn1 是active 状态,则输出active;否则,输出standby。

HA集群切换NameNode

操作命令

示例:hdfs haadmin -failover nn1 nn2

输出: Failover to NameNode at *.*.*.* successful

三、hdfs dfsadmin

hdfs 使用情况,节点信息查询

前言

HDFS是分布式文件系统。HDFS支持使用dfsadmin来查看各个节点的情况,以及集群存储使用情况。

操作命令

代码语言:javascript
复制
hdfs dfsadmin -report [-live] [-dead] [-decommissioning] 

说明

打印 hdfs文件系统的信息和各节点的统计信息. 如果加上可选参数,则只打印对应状态的节点信息。 比如,hdfs dfsadmin -report -live, 只打印存活的节点信息。

hdfs 添加/删除/更新节点

前言

需要添加/删除一些节点, (不建议手动操作,如果需要扩缩容,请通过emr中控台提供的操作接口来操作)

操作命令

代码语言:javascript
复制
hdfs dfsadmin -refreshNodes

说明

刷新节点。 重新读取 hosts 和exclude 文件,更新哪些datanode可以连接到NameNode,以及哪些datanode应该是decommissioned或recommissioned。

具体操作

  1. 需要退役的机器列表加入dfs.hosts.exclude文件
  2. hadoop dfsadmin -refreshNodes
  3. 等待一段时间,这些datanode的状态由in service->Decommission
  4. dfs.hosts文件剔除这批datanode
  5. hadoop dfsadmin -refreshNodes

四、HDFS集群数据均衡操作

前言

随着时间推移,运行中的HDFS集群数据节点datanode负载的数据量越来越不均衡。这将破坏数据本地性特征,导致部分数据节点异常繁忙,影响整个集群性能。

命令介绍

代码语言:javascript
复制
hdfs balancer          
[-threshold <threshold>]          
[-policy <policy>]          
[-exclude [-f <hosts-file> | <comma-separated list of hosts>]]          
[-include [-f <hosts-file> | <comma-separated list of hosts>]]          
[-idleiterations <idleiterations>]

参数

说明

-policy  <policy>

策略取值: datanode, blockpool 。表示balancing将基于datanode级别;“blockpool”只能在Federation架构下有效,balancer级别为“blockpool”表示每个datanode上每个blockpool的blocks个数分布均衡。建议保持默认。

-threshold  <threshold>

磁盘容量百分比,当参与数据均衡的节点之间容量占比差值小于该值时,均衡操作停止。

-exclude -f \ <hosts-file> | \ <comma-separated list of hosts>

排除某些节点参与数据均衡操作。

-include -f \ <hosts-file> | \ <comma-separated list of hosts>

指定某些节点参与数据均衡操作。

-idleiterations \ <iterations>

最大迭代次数,默认值5

注意:因为涉及到数据迁移,迁移速度通过hdfs-site.xml 文件中的dfs.datanode.balance.bandwidthPerSec指定,单位字节/sec。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、查看HDFS文件系统健康状况
    • 前言
      • 操作
      • 二、HA集群查看NameNode状态
        • 前言
          • 操作命令
            • HA集群切换NameNode
              • 操作命令
          • 三、hdfs dfsadmin
            • hdfs 使用情况,节点信息查询
              • 前言
              • 操作命令
              • 说明
            • hdfs 添加/删除/更新节点
              • 前言
              • 操作命令
              • 说明
              • 具体操作
              • 前言
              • 命令介绍
          • 四、HDFS集群数据均衡操作
          相关产品与服务
          弹性 MapReduce
          弹性 MapReduce (EMR) 是基于云原生技术和泛 Hadoop 生态开源技术的安全、低成本、高可靠的开源大数据平台。提供易于部署及管理的 Hive、Spark、HBase、Flink、StarRocks、Iceberg、Alluxio 等开源大数据组件,帮助客户高效构建云端企业级数据湖技术架构。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档