加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

阿里技术架构内部总结:HDFS监控落地的思考

发布时间:2019-11-08 17:06:14 所属栏目:策划 来源:IT技术管理那些事儿
导读:Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。 HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。在大数据生态圈中,HDFS是最重要的底层分布式文件系统,它的稳定性关乎整个生态系统的健康

慢节点主要特征是,落到该节点上的读、写较平均值差距较大,但给他足够时间,仍然能返回正确结果。通常导致慢节点出现的原因除机器硬件、网络外,对应节点上的负载较大是另一个主要原因。实际监控中,除监控节点上的读写耗时外,节点上的负载也需要重点监控。

根据实际需要,可以灵活调整Datanode汇报时间,或者开启“陈旧节点”(Stale Node)检测,以便Namenode准确识别故障实例。涉及部分配置项:

  • dfs.namenode.heartbeat.recheck-interval
  • dfs.heartbeat.interval
  • dfs.namenode.avoid.read.stale.datanode
  • dfs.namenode.avoid.write.stale.datanode
  • dfs.namenode.stale.datanode.interval

4)容量

集群总空间、空间使用率

采集项:PercentUsed

HDFS UI花费了很大篇幅来展现存储空间相关指标,足以说明它的重要性。

空间使用率计算包含了处于“下线中”节点空间,这是一个陷阱。如果有节点处于下线状态,但它们代表的空间仍计算在总空间,如果下线节点过多,存在这样“怪象”:集群剩余空间很多,但已无空间可写。

此外,在Datanode空间规划时,要预留一部分空间。HDFS预留空间有可能是其他程序使用,也有可能是文件删除后,但一直被引用,如果“Non DFS Used”一直增大,则需要追查具体原因并优化,可以通过如下参数来设置预留空间:

  • dfs.datanode.du.reserved.calculator
  • dfs.datanode.du.reserved
  • dfs.datanode.du.reserved.pct

作为HDFS运维开发人员,需清楚此公式:Configured Capacity = Total Disk Space - Reserved Space = Remaining Space + DFS Used + Non DFS Used。

Namenode堆内存使用率

采集项:

HeapMemoryUsage.used/HeapMemoryUsage.committed

如果将此指标作为HDFS核心指标,也是不为过的。元数据和Block映射关系占据了Namenode大部分堆内存,这也是HDFS不适合存储大量小文件的原因之一。堆内存使用过大,可能会出现Namenode启动慢,潜在FGC风险,因此,堆内存使用情况需重点监控。

实际中,堆内存使用率增加,不可避免,给出有效的几个方案:

  • 调整堆内存分配
  • 建立文件生命周期管理机制,及时清理部分无用文件
  • 小文件合并
  • 使用HDFS Federation横向扩展

尽管这些措施可以在很长时间内,有效降低风险,但提前规划好集群也是很有必要。

数据均衡度

采集项:

阿里技术架构负责人内部总结:HDFS监控落地的思考

HDFS而言,数据存储均衡度,一定程度上决定了它的安全性。实际中,根据各存储实例的空间使用率,来计算这组数据的标准差,用以反馈各实例之间的数据均衡程度。

数据较大情况下,如果进行数据均衡则会比较耗时,尽管通过调整并发度、速度也很难快速的完成数据均衡。针对这种情况,可以尝试优先下线空间已耗尽的实例,之后再扩容的方式来实现均衡的目的。

还有一点需注意,在3.0版本之前,数据均衡只能是节点之间的均衡,不能实现节点内部不同数据盘的均衡。

RPC请求队列的长度

采集项:CallQueueLength(RPC请求队列长度)。

文件数量

采集项:FilesTotal

与堆内存使用率配合使用。每个文件系统对象(包括文件、目录、Block数量)至少占有150字节堆内存,根据此,可以粗略预估出一个Namenode可以保存多少文件。根据文件与块数量之间的关系,也可以对块大小做一定优化。

下线实例数

采集项:NumDecommissioningDataNodes

HDFS集群规模较大时,实时掌握健康实例说,定期修复故障节点并及时上线,可以为公司节省一定成本。

5)其他

除上述主要指标外,服务器、进程JVM、依赖服务(Zookeeper、DNS)等通用监控策略也需添加。

四、HDFS监控落地

Grafana仪表盘展现:主要用于服务巡检、故障定位(说明:Grafana官方提供的HDFS监控模板,数据指标相对较少)。

阿里技术架构负责人内部总结:HDFS监控落地的思考

HDFS部分集群Grafana仪表盘

ELK-Hadoop:主要用于全局日志检索,以及错误日志关键字监控。

阿里技术架构负责人内部总结:HDFS监控落地的思考

ES中搜索HDFS集群日志

阿里技术架构负责人内部总结:HDFS监控落地的思考

日志服务搜索HDFS集群日志

Hue、HDFS UI:主要用于HDFS问题排查与日常维护。

五、HDFS案例

案例1:

DNS产生脏数据,导致Namenode HA故障。

  • 发现方式:功能监控、SLA指标异常
  • 故障原因:DNS服务器产生脏数据,致使Namenode主机名出错,在HA切换时,因找到错误主机而失败
  • 优化建议:DNS作为最基础服务,务必保证其数据正确与稳定,在一定规模情况下,切忌使用修改/etc/hosts方式来解决主机名问题,如果没有高可用的内部DNS服务,建议使用DNSMasq来搭建一套DNS服务器

案例2:

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读