Hadoop完全分布式 小bug -no.1 为啥我的集群只显示一个datanode!

本文记录了作者在搭建Hadoop集群过程中遇到的datanode数量显示异常问题,通过删除datanode的VERSION文件并重启集群,成功解决了datanode数量不正确的问题。

问题如标题,先说一下我的搭建步骤1.在主节点主机下,配置好hadoop,yarn,mapred三个env文件以及site文件和salves文件2.确保tmp文件清空的情况下,格式化namenode3.将配置好的Hadoop软件包分发给另外两个克隆机4.用start-dfs.sh命令启动集群。用jps命令确认所需进程是否启动.访问主节点主机Ip:50070网站,把网页tab切换至datanodes,然后发生了一件神奇的事情,图如下

在这里插入图片描述

what? 为什么只有一个datanode,而且刷新后发现,三个主机来回切换占用一个datanode。然后从各网站上面搜寻各种答案。。。。。。当查到datanode在tmp/dfs/data/current/VERSION里面有自己的Id的时候,我就想到可能是三台机器的datanode占用一个datanode的Id所致,毕竟,namenode和datanode的id是在format namenode的时候生成的,于是我删掉了文件夹下的VERSION(存储datanodeId)的文件,杀掉所有namenode,datanode进程重新用start-hdfs.sh命令启动,然后…
在这里插入图片描述

suprised! 大功告成!

### Hadoop 1.1.5 集群模式下 DataNode 仅启动一个节点的原因及解决方案 Hadoop 1.1.5 版本的集群模式下,DataNode 只启动一个节点的问题可能由多种原因引起。以下是一些常见的原因及解决方案: #### 1. **配置文件问题** - 在 `core-site.xml` 文件中,`fs.defaultFS` 的值需要正确配置为 NameNode 的地址[^3]。如果此值错误或未正确指向 NameNode,则 DataNode 无法正常注册到 NameNode。 - 确保 `hdfs-site.xml` 中的 `dfs.replication` 参数设置合理。例如,如果该参数设置为 3,但集群只有两个 DataNode 节点可用,则可能会导致部分 DataNode 无法正常启动或注册。 ```xml <property> <name>dfs.replication</name> <value>2</value> </property> ``` #### 2. **主机名解析问题** - 如果集群中的节点无法通过主机名互相解析,则可能导致 DataNode 无法与 NameNode 建立连接。确保所有节点的 `/etc/hosts` 文件正确配置了所有节点的 IP 地址和主机名映射[^2]。 #### 3. **防火墙或端口限制** - 检查是否有防火墙阻止了 DataNode 和 NameNode 之间的通信。默认情况下,NameNode 使用 9000 端口,DataNode 使用 50010、50075 等端口。确保这些端口在所有节点上开放。 - 如果使用了 SELinux 或其他安全机制,请确保其不会干扰 Hadoop 的正常运行。 #### 4. **SSH 免密登录配置** - 集群中的每个节点都需要配置 SSH 免密登录。如果某个节点未正确配置免密登录,则 Hadoop 的分布式命令(如 `start-dfs.sh`)可能无法成功启动该节点上的 DataNode 服务[^2]。 #### 5. **磁盘空间或权限问题** - DataNode 需要足够的磁盘空间来存储数据。如果某个节点的磁盘空间不足或目录权限不正确,则该节点上的 DataNode 服务可能无法正常启动。 - 确保 `hadoop.tmp.dir` 配置的路径存在且具有正确的权限。 #### 6. **日志分析** - 检查 DataNode 的日志文件(通常位于 `$HADOOP_LOG_DIR` 目录下),查找具体的错误信息。日志中可能会提供关于 DataNode 无法启动的具体原因。 #### 7. **版本兼容性问题** - Hadoop 1.1.5 是一个较老的版本,可能存在一些已知的 Bug 或兼容性问题。建议参考官方文档或社区资源,确认是否存在针对该版本的补丁或更新[^1]。 --- ### 示例:检查和修改配置文件 以下是 `core-site.xml` 和 `hdfs-site.xml` 的示例配置: ```xml <!-- core-site.xml --> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://namenode-host:9000</value> </property> </configuration> <!-- hdfs-site.xml --> <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration> ``` --- ### 示例:检查 DataNode 日志 可以通过以下命令查看 DataNode 的日志文件: ```bash tail -f /path/to/hadoop/logs/hadoop-hdfs-datanode-*.log ``` ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值