热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HDFSFUSE访问频繁致使系统奔溃

随着集群使用的时间增长,发现集群越来越缓慢,甚至集群压力特别大的时候,导


集群规模几百台,每天有大量的MR任务在并行跑流程。主要业务做图片流数据解密计算生成高清图像。

随着集群使用的时间增长,发现集群越来越缓慢,甚至集群压力特别大的时候,导致操作系统莫名重启。

每天都会有6~8台无规律的操作系统压力过大重启。

排查时间和周期都非常的长,用了长达1个月的时间,各种检查,主要从两个方面着收:

  • 我们提供的集群软件本身检查

  • 客户开发的分布式应用程序检查

  • 操作系统层面的资源监控和管理检查

集群自身的检查

主要针对资源管理入手,从集群资源的每个组件使用资源的分配和限制,利用cgroup隔离进程,针对集群YARN的资源管理调度的控制,基于标签的调度,基于cgroup隔离,资源队列控制,并发控制,最大限度的提高集群资源利用率,尽量使任务分配到更多的节点执行,增强集群安全管控。

然而,并没有解决问题。

客户开发应用程序检查

主要针对客户开发的c/c++程序代码优化数据处理流程,由于中间涉及到大量的私有算法和科学计算的算法,无法并行化,所以访问集群数据的方式是利用HDFS-FUSE的方式。

使用方式数据大小时间
HDFS-PUT9.8G32.639s
HDFS-PUSE9.8G1m17.294s
NFSGateway9.8G1m58.294s

测试发现,Hadoop提供的几种把HDFS变成挂载到某个服务器,提供本地化命令操作的方式,FUSE性能是最高的。

经过优化流程,客户开发的应用程序只从FUSE取数据,大量写数据的操作利用c++在本地先写成功,在移动到FUSE的目录中,减少很多不必要的小文件写入,通过合并文件,优化整体程序的处理效率。

然而,并没有解决问题。

操作系统层面的资源监控和管理检查

每次几个大的流程启动之后,操作系统CPU直接飘红,通过集群监控系统直接失去心跳。

未来解决问题,我们从以下几个方面入手:

  • 集群监控工具

    • Ambari grafana 监控每一台服务器的集群CPU、内存、网络、磁盘IO等资源

    • Ganglia 检测全局主机CPU、网络、内存、磁盘等资源变化

    • Ambari Metrics 检测集群Hadoop生态用到的组件指标,JVM参数等

发现有局部集群会出现持续数分钟CPU洪峰,能挺过去的,一会心跳都恢复正常,而压力过大的直接操作系统重启。

  • Debug工具

    • CGROUP CPU 资源隔离,限制FUSE进程,有明显改善,至少操作系统不崩溃了。

    • GDB 调试 C 程序,跟踪Java调用Fuse C的library库情况,没有发现进一步信息。

    • Jstack 分析线程状态,定位到cpu占用率较高的线程,分析定位问题。

    • cpulimit限制CPU利用率,缓解系统压力。

经过资源隔离控制,明显改善,但是机器压力过大还是会失去联系,压力过后就会恢复,并未根本解决问题。

通过监控某些流程,发现流程启动之后,有大量的文件访问,导致CPU洪峰,进一步追踪目录。

发现竟然在某个目录下写了25万多个小文件,而且是存储在HDFS上的大量小文件。

这是一个临时目录,数据量不是很大,经过统计数据量很小,但是文件个数多,ls
一下就导致机器卡死。

进一步跟踪发现,大量数据访问分布式文件系统FUSE挂载的数据,单个集群的inode有限,一个目录下有大量的小文件,大量的IO访问,直接导致系统被拖死,是Linux操作系统的限制。

总结

使用方式问题。分布式文件系统挂载到某个机器,一台普通的x86服务器容纳几十PB的数据挂载到某个目录,一台服务器根本无法承受这样的数据量。

文件系统使用不合理。几十万文件放到一个目录下本身就是Linux系统的大忌,没有任何目录划分,list就可能导致系统被拖死,没用任何清理临时数据的程序逻辑,属于开发人员犯的常规错误。

程序层面的优化。通过改造可以分布式化的程序,利用分布式这样的技术提升整体数据处理效率。

业务流程优化。通过有效的数据处理流程优化,虽然没有解决根本问题,但提升了整体处理效率。

资源管理和安全。通过多集群整体的资源分配、安全管控提高了集群的运营和整体资源利用率。

统一资源管理。很多程序都是单机运行,没有利用YARN进行统一调度和资源分配,导致集群资源利用率不均衡,一些机器压力很大,一些机器长时间空闲,可以利用Docker,CGroup技术融合到YARN中进行资源隔离,统一集群资源管理,提升集群资源利用率,更快的完成计算任务。

分布式系统复杂。分布式系统,应用程序很难追踪和重现,分布式在多台机器,调试复杂和耗时,一般技术人员很难掌握,无法用好这样的技术,需要企业级的分布式软件产品来保障,全新的集群开发和使用规范指导他们开发出健壮的分布式程序。

欢迎关注微信公众号,第一时间,阅读更多有关云计算、大数据文章。


原创文章,转载请注明: 转载自Itweet的博客
本博客的文章集合:
http://www.itweet.cn/blog/archive/




推荐阅读
  • 深入探讨:Actor模型如何解决并发与分布式计算难题
    在现代软件开发中,高并发和分布式系统的设计面临着诸多挑战。本文基于Akka最新文档,详细探讨了Actor模型如何有效地解决这些挑战,并提供了对并发和分布式计算的新视角。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • JUC并发编程——线程的基本方法使用
    目录一、线程名称设置和获取二、线程的sleep()三、线程的interrupt四、join()五、yield()六、wait(),notify(),notifyAll( ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 小米路由器AX6000与小米11同步推出,不仅在硬件配置上达到了旗舰级水准,其独特的4K QAM技术更是引领了行业新标准。本文将深入探讨这款路由器的性能表现及其实际应用。 ... [详细]
  • 协程作为一种并发设计模式,能有效简化Android平台上的异步代码处理。自Kotlin 1.3版本引入协程以来,这一特性基于其他语言的成熟理念,为开发者提供了新的工具,以增强应用的响应性和效率。 ... [详细]
  • 本文详细介绍了进程、线程和协程的概念及其之间的区别与联系。进程是在内存中运行的独立实体,具有独立的地址空间和资源;线程是操作系统调度的基本单位,属于进程内部;协程则是用户态下的轻量级调度单元,性能更高。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
  • 本文介绍了读写锁(RWMutex)的基本概念、实现原理及其在Go语言中的应用。读写锁允许多个读操作并发执行,但在写操作时确保互斥,从而提高并发性能。 ... [详细]
author-avatar
手机用户2502907993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有