上篇文章中说到我在Hadoop的50070的web页面增加了每个node的xceiver count,这个问题也是通过这个指标发现的。
由于我的客户端从始至终都是一个Filesystem实例,因此在put完文件时java实例并不会销毁,客户端在运行较长时间后,发现每个Node的xceiver count值很高,当初以为是节点读写量比较大,但通过stack分析来看,却是写的线程比较多,难道又是当初的老毛病
http://dongyajun.iteye.com/blog/628028 ?
除非数据无法flush到datanode,会造成客户端无法关闭流外(DFSClient#flushInternal方法中的长久wait),其他情况都会关闭流并关闭socket,昨天在阅读代码时,偶然想到了,对于一个超过block大小的文件,客户端会申请多个block,并会向datanode建立多次连接,然而都是用的同一个Socket引用(DFSOutputStream#s:Socket),在给这个socket重赋值时,并未关闭这个socket,长期以来,客户端会积累大量对datanode的连接,当你销毁客户端实例时,你会看到datanode的Xceiver Count也随之下降了
发现这个问题之后的第一件事是阅读最新的hadoop源码,发现仍然未有close socket的迹象,在确定确实存在这个问题后,在createBlockOutputStream方法中,当socket重新赋值时,关闭socket.
IOUtils.closeSocket(s);
s = socketFactory.createSocket();
该问题也向@luoli523 询问过,他们也曾在hbase中遇到这样的问题,如果大家也遇到此问题,不防试试,不过… Hadoop的开发者们难道会出这样的低级错误?
分享到:
相关推荐
Hadoop-0.21.0是Hadoop的一个早期版本,尽管现在已经有了更先进的版本,但对于理解Hadoop的基础概念和分布式集群配置,这个版本仍然是一个很好的起点。 在配置Hadoop-0.21.0分布式集群时,首先要考虑的是硬件环境。...
这个模式允许你在单个节点上运行Hadoop,模拟多节点集群的行为,无需物理扩展硬件资源。以下是对配置过程的详细解释: 首先,你需要确保系统已经安装了Java开发套件(JDK),并且配置了环境变量。通常,这包括将JDK...
- **Hadoop版本**:教程使用的是Hadoop 0.21.0版本。需要注意的是,随着Hadoop的发展,不同版本之间可能存在较大的差异,因此选择合适的版本十分重要。 #### 四、集群角色分配 - **Namenode**:负责管理HDFS的命名...
为了检查 Hadoop 是否正确启动,可以运行 `jps` 命令,查看是否有 NameNode、TaskTracker、Jps、JobTracker、SecondaryNameNode 和 DataNode 等进程正在运行。 最后,你可以通过一个简单的 WordCount 示例来测试 ...
安装好Linux系统后,安装JDK 1.8.0_05,这是运行Hadoop所必需的Java环境。你可以通过Linux的包管理器或手动下载并安装JDK。 接下来,安装VMware Tools以优化虚拟机性能,包括共享文件夹功能。这允许你从主机系统向...
然而,为了启动和运行Hadoop集群,还需要进行格式化NameNode、启动Hadoop服务(如DataNode、NameNode、ResourceManager、NodeManager等)等额外步骤。一旦所有服务都启动并运行,你就可以通过Hadoop的命令行工具或者...
【大数据云计算技术系列...这个过程不仅帮助初学者理解Hadoop的基本架构和操作流程,也为后续的分布式环境部署打下了坚实的基础。随着Hadoop版本的不断更新,建议及时升级到最新稳定版本,以获得更好的性能和功能支持。
a) 新建 `/usr/local/hadoop` 文件夹,并将 `hadoop-0.21.0.tar.gz` 文件解压到该文件夹中。然后,在root用户下执行: ``` chown hadoop:hadoop hadoop ``` b) 在所有机器上的 `/etc/profile` 文件末尾添加Hadoop...
【Hadoop开发日志】详细解读 Hadoop是一个开源的分布式计算框架,由Apache基金会维护,...通过这个过程,开发者可以了解如何在Linux环境中配置和运行Hadoop,为进一步学习Hadoop的分布式计算原理和实际应用打下基础。
在这个阶段,我们需要在每台机器上安装Ubuntu、JDK和Hadoop,并进行基本配置。 2.1.1 安装Ubuntu 安装过程遵循标准的Ubuntu安装指南,此处不再赘述。 2.1.2 安装JDK - 创建Java目录并复制JDK到该目录:`sudo mkdir...
这里采用的是Hadoop的稳定版本0.21.0,可以从Hadoop的官方网站获取。 3. 下载JDK。JDK版本推荐为1.7.0_45(64位)。可以通过Oracle的官方网站下载JDK。 4. 新建用户“hadoop”。在每台虚拟机上使用useradd指令添加...
例如,对于0.20.205.0和0.21.0这两个版本,需要创建如 `/home/hadoop/hadoop_dir/tmp205` 和 `/home/hadoop/hadoop_dir/tmp21` 这样的临时目录,以及其他如 `/dfs`、`/log`、`/mapred` 和 `/pids` 目录,以便于管理...
实验中涉及的硬件配置包括Intel(R) Xeon(R) 2.40GHz的CPU,2GB内存,以及Enterprise Linux 4操作系统,Hadoop版本为0.21.0,测试环境包含3个NameNode和6个DataNode,客户端数量为6个。这些配置和测试结果为Hadoop...