HDFS日常维护

容量管理

理解HDFS的数据都是以普通文件格式写到DN的本地磁盘。HDFS的已使用容量有多种查看方式,比如NameNode页面(默认端口50070的)、hdfs dfs命令、以及集群管理器页面(如Cloudera CM)。
HDFS总使用容量在80%以下是安全的,超过就需要人工干预。另外也要理解,HDFS不可能做到每个DN的每块盘都以相同的百分比写入数据,很可能出现总容量使用80%,但个别盘已经超90%甚至写满的情况,这时候就需要借助balancer脚本(start-balancer.sh)或 hdfs balancer命令来进行均衡。为了管理数据,还需要熟悉常用的hdfs 和Linux命令。
容量管理还涉及到非技术性工作。如企业的数据总量和增量如何? 如何设置清理策略?是否需要对冷热数据采取不同的管理策略(如存储介质、副本数)?如何制定扩容、灾备方案?等等。这些工作无法通过培训传授方案,需要结合企业实际进行规划。

进程管理

HDFS进程管理中,DN的进程比较次要,死掉只需处理完问题再拉起即可。
NN进程的可用性决定了整个HDFS的可用性。目前已有完善的NameNode HA方案,如果是 社区版集群,可参考(QJM方案): http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html。如果是CDH集群,可进入HDFS服务,点击Actions - Enable High Availability,按照指引逐步操作即可,比较直观。
另外,为了保证NN进程的稳定,还需要考虑分配的JVM内存。我们介绍过一般100w个块对应300MB堆内存,按此计算出一个值后,再乘以2就够用了。

故障管理

HDFS最常见的是硬盘故障,停机更换即可,注意同时停机个数<副本数即可,服务起来后做一下fsck。
NN的故障比较棘手。有了Hadoop2.x后的NameNode HA机制后,单点故障不再可怕,但仍会被内存相关问题困扰。最常出现的情况就是出现长时间的full GC,使得NN无法响应其他进程的RPC请求,从而造成严重问题。 推荐使用Java8以上版本的JDK以及G1GC,并分配足够的堆内存,使得每次GC的时间可控。
posted @ 2025-06-21 22:06  屠魔的少年  阅读(22)  评论(0)    收藏  举报