万象城,HDFS是监视落地背后思考的专业计划,鸡怎么做好吃

依据京东云的实战经验,咱们今日来聊聊HDFS相关的监控。

Hadoop分布式文件体系(HDFS)被规划成合适运行在通用硬件(commodity hardware)上的分布式文件体系。

HDFS能供给高吞吐量的数据拜访,十分合适大规划数据集上的运用。在大数据生态圈中,HDFS是最重要的底层分布式文件体系,它的安稳性关乎整个生态体系的健康。

本文介绍了HDFS相关的重要监控目标,共享目标背面的考虑。

一、HDFS监控应战

  • HDFS是Hadoop生态的一部分,监控方案不只需适用HDFS,其他组件如Yarn、Hbase、Hive等,也需适用

  • HDFS API供给的目标较多,部分目标没必要实时搜集,但毛病时需能快速获取到

  • Hadoop相关组件的日志,比较重要,如问题定位、审计等

  • 监控方案不只能满意监控自身,毛病定位触及目标也应掩盖

二、Hadoop监控方案

Hadoop监控数据搜集是经过HTTP API,或许JMX。实践中,用到比较多的产品首要有:CDH、Ambari,此外,还有部分东西,如Jmxtrans、HadoopExporter(用于Prometheus)。

CDH是一款开源的集布置、监控、操作等于一体的Hadoop生态组件管理东西,也供给收费版(比免费版多供给数据备份康复、毛病定位等特性)。CDH供给的HDFS监控界面在体会上是十分优异的,是对H牛顿三大规律DFS监控目标深化开掘之后的浓缩,比方HDF习S容量、读写流量及耗时、Datanode磁盘改写耗时等。

图1 CDH供给的HDFS监控界面

Ambari与CDH相似,同样是开源东西,但它的扩展性要比较好,别的,它的信息能够从机器、组件、集群等不同维度展示,挨近运维工程师运用习气。

图2 Ambari供给的HDFS监控界面

假如运用CDH,或许Ambari进行HDFS监控,也存在实践问题:

  • 对应的Hadoop及相关组件版别不能自界说

  • 不能很好的满意大规划HDFS集群实践监控需求

其他东西,如Jmxtrans现在还不能很好适配Hadoop,因而,实践的监控方案选型为:

  • 搜集:HadoopExporter,Hadoop HTTP API(阐明:HDFS首要调用http://{domain}:{port}/jmx)

  • 日志:经过ELK来搜集、剖析

  • 存储:Prometheus

  • 展示:Grafana,HDFS UI,Hue

  • 告警:对接京东云告警体系

三、HDFS监控目标

1、首要目标概览

表1 HDFS首要监控目标概览

2、黑盒监控目标

基本功用

文件整个生命周期中,是否存在功用反常蚕,首要监控创立、检查、修正、删去动作。

  • 检查时,需校正内容,有一种方法,能够在文件中写入时刻戳,检查时校正时刻戳,这样,能够依据时刻差来判别是否写超时

  • 牢记确保生命周期完好,不然,许多监控发生的临时文件或许导致HDFS集群垮掉

3、白盒监控目标

1)过错

B万象城,HDFS是监督落地背面考虑的专业方案,鸡怎样做好吃lock丢掉数量

搜集项:MissingBlocks

假如呈现块丢掉,则意味着文件现已损坏,所以需求在块丢掉前,提早预判或许呈现Block丢掉危险(经过监控UnderReplicatedBlocks来判别)。

不可用数据节点占比

搜集项:

在万象城,HDFS是监督落地背面考虑的专业方案,鸡怎样做好吃BlockPlacementPolicyDefault.java中的isGoodTarget界说了选取Datanode节点战略,其中有两项是“节点是否在下线”、“是否有满足存储空间”,假如不可用数量过多,则或许导致挑选不到健康的Datanode,因而,有必要确保必定数量的健康Datanode。

图4 选取可用Datanode时部分判别条件

过错日志关键字监控

部分常见过错监控(首要监控Exception/万象城,HDFS是监督落地背面考虑的专业方案,鸡怎样做好吃ERROR),对应关键字:

IOException、NoRouteToHostException、SafeModeException、UnknownHostException。

未仿制Block数

搜集项:子欲养而亲不待UnderReplicatedBlocks

UnderReplicatedBlocks在数据节点下线、数据节点毛病等均会发生许多正在同步的块数。

FGC监控

搜集万象城,HDFS是监督落地背面考虑的专业方案,鸡怎样做好吃项:FGC

读写成功率

搜集项:

monitor_write.status/monitor_read.status

依据Block实践读写流量会聚核算,是对外SLA目标的重要依据。

数据盘毛病

搜集项:NumFailedVolumes

假如一个集群有1000台主机,每台主机是12块盘(一般存储型机器规范装备),那么这将会是1万2000块数据盘,依照机械盘均匀季度毛病率1.65%(数据存储效劳商Backblaze核算)核算,均匀每个月毛病7块盘。若集群规划再扩展,那么运维工程师将消耗很大精力在毛病盘处理与效劳康复上。很显然,一套主动化的数据盘毛病检测、主动报修、效劳主动康复机制成为刚需。

除毛病盘监控外,毛病数据盘要有大局性处理方案。在实践中,以场景为维度,经过自助化的方法来完结对此问题处理。

图5 依据场景完结的Jenkins自助化使命

2)流量

Block读、写次数

搜集项:

搜集Datanode数据进行会聚核算。

网络进出流量

搜集项:nodegucci包_network_receive_bytes_total/ nod万象城,HDFS是监督落地背面考虑的专业方案,鸡怎样做好吃e_network_transmit_bytes_total

没有直接能够运用的现成数据,需求经过ReceivedBytes(接纳字节总量)、SentBytes(发送字节总量)来核算。

磁盘I/O

搜集项:node_disk_written_bytes_total/ node_disk_read_bytes_total

3)推迟

RPC处理均匀时刻

搜集项:RpcQueueTimeAvgTime

搜集RpcQueueTimeAvgTime(RPC处理均匀时刻)、SyncsAvgTime(Journalnode同步耗时)。

慢节点数量

搜集项:SlowPeerReports

慢节点首要特征是,落到该节点上的读、写较均匀值距离较大,但给他满足时刻,依然能回来正确成果。一般导致慢节点呈现的原因除机器硬件、网络外,对应节点上的负载较大是另一个首要原因。实践监控中,除监控节点上的读写耗时外,节点上的负载也需求要点监控。

依据实践需求阿福宝盒,能够灵敏调整Datanode报告时刻,或许敞开“陈腐节点”(Stale Node)检测,以便Namenode精确辨认毛病实例。触及部分装备项:

  • dfs.namenode.heartbeat.recheck-interval

  • dfs.heartbeat.interval

  • dfs.namenode.avoid.read.stal海港城e.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 = To鹊桥仙tal Disk Space - Rese西班牙语rved Space = Remaining Space + DFS Used + Non DFS Used。

Namenode堆内存运用率

搜集项:

HeapMemoryUsage.used/HeapMemoryUsage.committed

假如将此目标作为HDFS中心目标,也是不为过的。元数据和Block映射联系豪夺新夫很威猛占有了Namenode大部分堆内存,这也是HDFS不合适存储许多小文件的原因之一。堆内存运用过大,或许会呈现Namenode发动慢,潜在FGC危险,因而,堆内存运用状况需求点监控。

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

  • 调整堆内存分配

  • 树立文件生命周期管理机制,及时整理部分无用文件

  • 小文件兼并

  • 运用HDFS Federation横向扩展

虽然这些办法能够在很长时刻内,有用下降危险,但提早规划好集群也是很有必要。

数据均衡度

搜集项爱乐维复合维生素片:

H嗜睡是什么原因DFS而言,数据存储均衡度,必定程度上决议了它的安全性。实践中,依据各存储实例的空间运用率,来核算这耐组词组万象城,HDFS是监督落地背面考虑的专业方案,鸡怎样做好吃数据的规范差,用以反应各实例之间的数据均衡程度。

数据较大状况下,假如进行数据均衡则会比较耗时,虽然经过调整并发度、速度也很难快速的完结数据均衡。针对这种状况,能够测验优先下线空间已耗尽的实例,之后再扩容的方法来完结均衡的意图。

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

RPC恳求行列的长度

搜集项:CallQueueLength(RPC恳求行列长度)。

文件数量

搜集项:FilesTotal

与堆内存运用率合作运用。每个文件体系目标(包含文件、目录、Block数量)至少占有150字节堆内存,依据此,能够大略预估出一个Nam翌enode能够保存多少文件。依据文件与块数量之间的联系,也能够对块巨细做必定优化。

下线实例数

搜集项:NumDecommissioningDataNodes

HDFS集群规划较大时,实时把握健康实例说,定时修正毛病节点并及时上线,能够为公司节约必定本钱。

5)其他

除上述首要目标外,效劳器、进程JVM、依靠效劳(Zookeeper、DNS)等通用监控战略也需增加。

四、HDFS监控落地

Grafana仪表盘展示:首要用于效劳巡检、毛病定位(阐明:Grafana官方供给的HDFS监控模板,数据目标相对较少)。

图6 HDFS部分集群Grafana仪表盘

ELK-Hadoop:首要用于大局日志检索,以及过错日志关键字监控。

图7 ES中鲍长义查找HDFS集群日志

图8 日志效劳查找HDFS集群日志

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

五、HDFS事例

事例1

DNS发生脏数据,导致Namenode HA毛病。

  • 发现方法:功用监控、SLA目标反常

  • 毛病原因:DNS效劳器发生脏数据,致使Namenode主机名犯错,在HA切换时,因找到过错主机而失利

  • 优化主张DNS作为最根底效劳,必须确保其数据正确与安稳,在一异界小说定规划状况下,切忌运用修正/etc/hosts方法来处理主机名问题,如太阳花果没有高可用的内部DNS效劳,主张运用DNSMasq来建立一套DNS效劳器

事例2

机架分组不合理,导致HDFS无法写入。

  • 发现方法:功用监控写反常偶发性告警

  • 毛病原因:HDFS敞开机架感知,不同分组机器ineedagirl资源分配不合理,部分分组存储资源耗尽,在挑选Datanode时,找不到可用节点

  • 优化主张:合理分配各机架上的实例数量,并分组进行监控。在规划较小状况下,可用考虑封闭机架感知功用

HDFS监控自界说使命:

https://github.com/cloud-op/monitor

作者:李子树

来历:京东云订阅号(ID:JD-jcloud)

dbaplus社群欢迎广阔技术人员投稿,投稿邮箱:editor@dbaplus.cn

近期热文

看到外卖渠道这样改进数据库架构,DBA表明定心了

对!嫁人就嫁程序员!

2018 Python官方年度报告:把握Python趋势

分库分表就能无限扩容吗?

不论万象城,HDFS是监督落地背面考虑的专业方案,鸡怎样做好吃你运用哪种OLAP引擎,都能够这样搞定查询优化

近期活动

2019Gdevops全球敏捷运维峰会-北京站

评论(0)