`
david.org
  • 浏览: 156429 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

影响Hadoop集群稳定性后续

阅读更多
由于目前处理的数据量还未称的上大规模,但每个节点的压力都不小,真是稳定压倒一切呀。

在系统的作业过程中,不仅仅是关注磁盘使用量,CPU,Load,以及IOWait等指标,更重要的是深入到进程内部,来发现潜在的问题。近期一直在关注Hadoop系统的运行,我把dfshealth.jsp 的web管理页面加了一个新的指标,就是每个Node的Xceiver Count,该参数表示当前Node有多少线程数在服务w/r;另外一个很有用的指标就是每个Node的Last Contact,这个心跳包的最后更新时间一般超过3时你就得留意着是不是还会继续增长,如果持续走高,那你就得花点时间来care一下这台node各方面的压力。

Last Contact增高是各个Node出现问题的前兆,所以得相当注意,以前我曾记录过方面的问题:http://dongyajun.iteye.com/blog/627905, 后来我最终还是放弃hadoop的shell实现,改用本地脚本运行的方式,把磁盘的使用量等信息输出到临时文件中,供hadoop读取,不过这个问题并没有因此得到完全解决。

1. Node收到删除大量block的命令,请参见:https://issues.apache.org/jira/browse/HDFS-611, 升级到0.21.0版本会解决
2. Node report block给NN,这个长长也会花较长时间,如果你节点的Block够多,一般在30w+时,要花30秒左右时间,甚至更多。(默认一个小时报告一次),其实report block是不应该放到DN的 offerService中执行的,这个在0.21.0在始终未解决。
3. 在reprt block 之前,首先要从FSDataset中,获取该Node所有block列表,这个操作将花大量的时间,有时甚至要250秒甚至更多。此操作加上之后的report block方法调用,已经花了近300秒时间了。

Node长时间不发送心跳给NN产生的问题并不仅仅是该Node无冤的沦为dead node,更重要的是对客户端put的影响,虽然这种现象不会同时发生在put操作时的那几台Node上,但由于压力等诸多因素,仍然会导致Node无法正常把刚写完的block报告给NN,如果该block未报告给NN,客户端则不能成功申请新的block,如果该block是客户端最后升请的block,客户端关闭文件时就会报 Could not complete file *** retrying...异常。

解决方案:
1. DN的offerservice 中,把block report 放到单独线程中运行。
心跳和block report异步来做,对于0.21.0以下版本仍然有问题,当block report从FSDataset获取block info时,会对FSDataset类实例持有锁,由于这个操作花大量时间,会导致心跳在调用getCapacity时,被无情的BLOCKED,Last Contact仍然会增高。
"DataNode: [/sd01/hadoop/data/, …]" daemon prio=10 tid=0x08b1b800 nid=0x4cdd waiting for monitor entry [0x6df25000..0x6df25e30]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at org.apache.hadoop.hdfs.server.datanode.FSDataset$FSVolumeSet.getCapacity(FSDataset.java:557)
    - waiting to lock <0x74faca20> (a org.apache.hadoop.hdfs.server.datanode.FSDataset$FSVolumeSet)
    at org.apache.hadoop.hdfs.server.datanode.FSDataset.getCapacity(FSDataset.java:755)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.offerService(DataNode.java:713)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.run(DataNode.java:1297)
    at java.lang.Thread.run(Thread.java:619)

   Locked ownable synchronizers:
    - None

2. 如果使用的低版本Hadoop,在FSDataset中,引入:
//Used for synchronizing access to usage stats
  private Object statsLock = new Object(); 

去掉FSDataset#getCapacity, #getRemaining 等方法的synchronized,改为:
/**
   * Return the total space used by dfs datanode
   */
  public long getDfsUsed() throws IOException {
	  synchronized(statsLock) {
	      return volumes.getDfsUsed();
	  }
  }
  
  /**
   * Return total capacity, used and unused
   */
  public long getCapacity() throws IOException {
	  synchronized(statsLock) {
	      return volumes.getCapacity();
	  }
  }

  /**
   * Return how many bytes can still be stored in the FSDataset
   */
  public long getRemaining() throws IOException {
	  synchronized(statsLock) {
	      return volumes.getRemaining();
	  }
  }
分享到:
评论
1 楼 caibinbupt 2010-09-09  
等,很详细的解决方法

相关推荐

    hadoop集群部署手册

    ### Hadoop集群部署手册知识点详解 ...对于初次接触Hadoop集群的学生来说,这份手册不仅提供了详尽的操作指南,还帮助他们建立起从理论到实践的桥梁,为后续深入学习大数据处理技术打下了坚实的基础。

    细细品味Hadoop_Hadoop集群(第5期)_Hadoop安装配置

    这个Hadoop集群包含一个Master节点和三个Slave节点,它们通过局域网互相连接,能相互通信。Master节点上配置了NameNode和JobTracker,负责全局数据管理和任务分解。每个Slave节点上运行DataNode和TaskTracker,处理...

    大数据技术基础实验报告-Linux环境下hadoop集群的搭建与基本配置.doc

    【大数据技术基础实验报告-Linux环境下hadoop集群的搭建与基本配置】 实验主要涉及了大数据技术中的基础概念,包括Linux操作系统、Java环境、SSH服务、Hadoop集群的搭建与配置。以下是具体步骤和知识点的详细解释:...

    hadoop2.6(x64)Win7上远程调试hadoop 集群

    Hadoop 2.6版本是一个重要的里程碑,引入了许多增强功能和优化,提高了稳定性和性能。在Windows 7环境下配置和远程调试Hadoop集群是一项挑战,但通过正确的方法和步骤,可以成功实现这一目标。以下是关于这个主题的...

    第5章 Hadoop集群运行.docx

    同时,保持集群的稳定性,定期检查节点健康状况,以及监控系统资源的使用情况,是维护高效Hadoop集群的关键。 通过这个实验,用户将深入理解Hadoop集群的运作机制,为后续的大数据处理任务打下坚实基础。

    细细品味Hadoop_Hadoop集群CentOS安装配置.rar_hadoop

    CentOS是一款基于Linux的开源操作系统,以其稳定性和安全性被广泛应用于服务器环境,是部署Hadoop的理想选择。在安装CentOS时,我们需要确保系统的更新是最新的,可以通过`sudo yum update`命令进行系统升级。同时,...

    CDH5 Hadoop集群完全离线安装说明

    ### CDH5 Hadoop集群完全离线安装说明 #### 系统环境 - 操作系统:CentOS 6.5 64位 #### 必备软件与工具 ...这些准备工作是搭建稳定、高效的Hadoop集群的基础,对于后续Hadoop集群的配置与管理至关重要。

    Hadoop集群MYSQL的安装指南.docx

    在大数据处理和分析场景中,MySQL是一个广泛使用的开源关系型数据库管理系统,尤其在互联网行业中,由于其高效、稳定和易用性,被众多公司采纳。...正确安装和配置MySQL,可以确保Hadoop集群的稳定性和数据管理效率。

    大数据与云计算培训学习资料 Hadoop集群_第1期_CentOS安装配置 共26页.pdf

    - CentOS作为常见的Linux发行版,其稳定性、开源性质以及与RHEL的兼容性使其成为Hadoop集群的首选平台。 总之,这份学习资料详细介绍了如何在CentOS 6.0环境下搭建和配置Hadoop集群,对于想要进入大数据领域的学习...

    Hadoop集群搭建与编程.pdf

    《Hadoop集群搭建与编程》一书主要涵盖了在分布式环境下构建和编程Hadoop集群的关键步骤。Hadoop是一个开源的分布式计算框架,它允许在廉价硬件上处理大规模数据集。为了充分发挥其并行处理和容错能力,必须在多台...

    hadoop集群安装.docx

    在搭建Hadoop集群的过程中,需要遵循一定的步骤和配置要求,以确保所有组件能协同工作。以下是对Hadoop集群安装过程的详细说明: 1. **安装前的准备工作**: 在开始安装之前,需要确保你拥有合适的硬件环境和软件...

    hadoop集群

    【Hadoop集群搭建详解】 Hadoop是一个开源的分布式计算框架,由Apache...理解这些基础知识对于管理和优化Hadoop集群至关重要,特别是在大数据处理和分析的场景中,一个稳定、高效的Hadoop集群能提供强大的计算能力。

    两台 Ubuntu 机器实现 Hadoop 集群

    在构建Hadoop集群的过程中,Ubuntu操作系统因其开源、稳定和丰富的软件包支持,成为了许多开发者和数据中心的首选。本文将深入探讨如何在两台Ubuntu机器上搭建一个简单的Hadoop单节点集群,以便理解Hadoop的基本原理...

    Hadoop伪分布式集群环境搭建

    1. **下载Hadoop**:访问Apache官方网站,下载最新稳定版的Hadoop二进制包,将其解压到一个合适的目录,例如`/usr/local/hadoop`。 2. **配置环境变量**:编辑`~/.bashrc`或`~/.bash_profile`文件,添加Hadoop的...

    关于Hadoop集群作业调度算法的探讨.pdf

    该算法旨在保证长期运行的服务的稳定性和响应时间,同时允许短时的突发任务快速获取资源。计算能力调度器通过预定义的资源配额,确保了服务级别的协议(SLAs)得以满足。 对于异构集群环境,由于节点的硬件配置可能...

    基于Hadoop 集群的日志分析系统的设计与实现.docx

    8. 持续集成与持续部署(CI/CD):通过自动化工具实现代码版本控制、测试、部署,确保系统的稳定性和可维护性。 在实施过程中,可能面临如数据量巨大、日志格式各异、实时性要求高等挑战,因此需要不断优化算法、...

    hadoop集群搭建——JDK的安装

    2. **网络稳定性**:在网络连接不稳定的情况下,可能会出现下载中断或文件不完整的情况,因此应确保网络稳定。 3. **权限管理**:在执行解压和配置操作时,可能需要使用管理员权限,注意权限的切换。 通过本次实验...

    Hadoop2.X集群安装与配置

    Hadoop 2.x 是Hadoop发展的一个重要阶段,引入了许多关键改进,增强了系统的稳定性和可扩展性。本文将详细介绍如何在三节点环境下安装和配置Hadoop 2.x 集群。 一、环境准备 在开始Hadoop的安装前,你需要确保你的...

    Hadoop集群搭建,hive数据仓文档.docx

    在本文档中,我们将详细介绍如何在虚拟机上搭建一个Hadoop集群,并配置Hive数据仓库。 首先,我们需要在本地计算机上安装虚拟机软件,如VMware Workstation Pro。这个软件可以从官方网站或者通过清华大学的镜像源...

    2)BIGDATA搭建-Hadoop集群坏境CentOS安装.docx

    ### Hadoop集群环境下CentOS安装详解 #### 一、前言 随着大数据技术的发展,Hadoop作为处理海量数据的重要工具之一,受到了广泛的关注。本文旨在详细介绍如何在虚拟机环境中搭建Hadoop集群,并重点介绍CentOS操作...

Global site tag (gtag.js) - Google Analytics