我们有 Hadoop 集群,我们正在收集指标数据,以调查 Spark 应用程序的缓慢行为
经过对 Hadoop 集群的长期调查
我们从 Prometheus 指标中注意到,node_disk_io_now 的值高于正常值,并且它与数据节点机器上的所有 HDFS 磁盘相关
node_disk_io_now 定义是:
node_disk_io_now (字段 9) 唯一应归零的字段。当请求被发送到适当的 struct request_queue 时,该字段会增加,当请求完成时,该字段会减少。
我们想知道,调整内核参数是否可以对磁盘性能产生积极的影响
根据 node_disk_io_now 定义,似乎队列中等待的任务太多,
也许一些内核参数可以帮助改善上述行为,这样队列中的任务就不会长时间存在
答案1
在您的问题中,我看不出您使用的是哪种类型的磁盘,是 SSD/SAS/NLSAS 还是混合型。这是您选择中最重要的部分。
回答您的问题,对于内核参数,我会说是的,有一些参数您可以使用,以找到最适合您的集群的参数。
IO 优化中很重要的一个部分就是 IO Scheduler,目前的 Linux 内核中有三个 IO Scheduler。
无操作(先进先出):用于 SAN、SSD 类型的存储,其中存储设备本身足够智能,可以处理自身的优化。
最后期限:总体来说,这对文件和数据库服务器来说很好。您必须考虑是否要增强吞吐量或延迟。或者您可以增加读取请求,反之亦然。
常见问题:不推荐用于服务器,适合桌面使用。
除了 IO 调度程序之外,还有一些其他虚拟内存参数,下面我将仅提及它们,但您需要自己阅读有关它们的更多信息,以提高性能。
vm.swappiness
vm.dirty_ratio
vm.dirty_background_ratio
vm.dirty_expire_centisecs
and....
答案2
据我所知,没有内核选项可以改善这种情况。但是,您可能需要检查所有其他节点的 RAID 控制器是否具有与该节点相同的值(例如块写入大小),或者实际上相反。
还要确保 /etc/fstab 中的所有挂载都具有相同的选项。
除此之外,您需要检查磁盘规格并确保它们相同。
您还可以检查 RAM 大小,因为某些文件系统会在 RAM 中进行大量缓存。不确定 HDFS 是否如此,但例如 ZFS 非常依赖这一点。