【问题标题】:Adding Data Node to hadoop cluster将数据节点添加到 hadoop 集群
【发布时间】:2022-05-05 23:00:56
【问题描述】:

当我使用start-all.sh 启动hadoopnode1 时,它成功启动了master 和slave 上的服务(参见jps 命令输出slave)。但是当我尝试在管理屏幕中查看活动节点时,从节点没有出现。即使当我从 master 运行 hadoop fs -ls / 命令时,它也可以完美运行,但是从 salve 中它会显示错误消息

@hadoopnode2:~/hadoop-0.20.2/conf$ hadoop fs -ls /
12/05/28 01:14:20 INFO ipc.Client: Retrying connect to server: hadoopnode1/192.168.1.120:8020. Already tried 0 time(s).
12/05/28 01:14:21 INFO ipc.Client: Retrying connect to server: hadoopnode1/192.168.1.120:8020. Already tried 1 time(s).
12/05/28 01:14:22 INFO ipc.Client: Retrying connect to server: hadoopnode1/192.168.1.120:8020. Already tried 2 time(s).
12/05/28 01:14:23 INFO ipc.Client: Retrying connect to server: hadoopnode1/192.168.1.120:8020. Already tried 3 time(s).
.
.
.
12/05/28 01:14:29 INFO ipc.Client: Retrying connect to server: hadoopnode1/192.168.1.120:8020. Already tried 10 time(s).

看起来从属节点(hadoopnode2)无法找到/连接主节点(hadoopnode1)

请指出我缺少什么?

以下是主节点和从节点的设置 - 附言- 运行相同版本的 Linux 和 Hadoop 和 SSH 的主从运行完美, 因为我可以从主节点启动从节点

master(hadoopnode1) 和 slave (hadoopnode2) 上的 core-site.xml、hdfs-site.xml 和 mapred-site.xml 的设置也相同

操作系统 - Ubuntu 10 Hadoop 版本 -

oop@hadoopnode1:~/hadoop-0.20.2/conf$ hadoop version
Hadoop 0.20.2
Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707
Compiled by chrisdo on Fri Feb 19 08:07:34 UTC 2010

-- 主节点(hadoopnode1)

hadoop@hadoopnode1:~/hadoop-0.20.2/conf$ uname -a
Linux hadoopnode1 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:35:26 UTC 2012 i686 GNU/Linux

hadoop@hadoopnode1:~/hadoop-0.20.2/conf$ jps
9923 Jps
7555 NameNode
8133 TaskTracker
7897 SecondaryNameNode
7728 DataNode
7971 JobTracker

masters -> hadoopnode1
slaves -> hadoopnode1
hadoopnode2

--Slave (hadoopnode2)

hadoop@hadoopnode2:~/hadoop-0.20.2/conf$ uname -a
Linux hadoopnode2 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:35:26 UTC 2012 i686 GNU/Linux

hadoop@hadoopnode2:~/hadoop-0.20.2/conf$ jps
1959 DataNode
2631 Jps
2108 TaskTracker

masters - hadoopnode1

core-site.xml
hadoop@hadoopnode2:~/hadoop-0.20.2/conf$ cat core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/var/tmp/hadoop/hadoop-${user.name}</value>
                <description>A base for other temp directories</description>
        </property>

        <property>
                <name>fs.default.name</name>
                <value>hdfs://hadoopnode1:8020</value>
                <description>The name of the default file system</description>
        </property>

</configuration>

hadoop@hadoopnode2:~/hadoop-0.20.2/conf$ cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <value>hadoopnode1:8021</value>
                <description>The host and port that the MapReduce job tracker runs at.If "local", then jobs are run in process as a single map</description>
        </property>
</configuration>

hadoop@hadoopnode2:~/hadoop-0.20.2/conf$ cat hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>2</value>
                <description>Default block replication</description>
        </property>
</configuration>

【问题讨论】:

    标签: hadoop


    【解决方案1】:

    通过 sudo jps 检查您的服务 主人不应该显示你需要做什么

    Restart Hadoop
    Go to /app/hadoop/tmp/dfs/name/current
    Open VERSION (i.e. by vim VERSION)
    Record namespaceID
    Go to /app/hadoop/tmp/dfs/data/current
    Open VERSION (i.e. by vim VERSION)
    Replace the namespaceID with the namespaceID you recorded in step 4.
    

    这应该可行。祝你好运

    【讨论】:

      【解决方案2】:

      在 Web GUI 上,您可以查看集群拥有的节点数。如果您看到的少于您的预期,请确保 master 上的 /etc/hosts 文件仅作为主机(对于 2 节点集群)。

      192.168.0.1 master
      192.168.0.2 slave
      

      如果你看到任何 127.0.1.1.... ip 然后注释掉,因为 Hadoop 会首先将它们视为主机。

      【讨论】:

        【解决方案3】:

        检查名称节点和数据节点日志。 (应该在$HADOOP_HOME/logs/)。最可能的问题可能是名称节点和数据节点 ID 不匹配。从所有节点中删除hadoop.tmp.dir并再次格式化namenode($HADOOP_HOME/bin/hadoop namenode -format),然后再试一次。

        【讨论】:

        • 看起来问题出在名称解析上,请查看我的 cmets。谢谢
        【解决方案4】:

        我认为在从站 2 中。从站 2 应该侦听同一个端口 8020,而不是侦听 8021。

        【讨论】:

        • 我已按照某些安装指南中的说明配置了服务器。端口 8020 用于 hdfs,8021 用于 JobTracker
        【解决方案5】:

        将新节点主机名添加到从属文件并在新节点上启动数据节点和任务跟踪器。

        【讨论】:

          【解决方案6】:

          你的情况确实有两个错误。

          can't connect to hadoop master node from slave
          

          那是网络问题。测试它: curl 192.168.1.120:8020 。

          正常响应:curl: (52) 来自服务器的空回复

          在我的情况下,我得到主机未找到错误。所以看看防火墙设置吧

          data node down:
          

          这是 hadoop 的问题。 Raze2dust 的方法很好。如果您在日志中看到 Incompatible namespaceIDs 错误,这是另一种方式:

          停止hadoop并编辑/current/VERSION中namespaceID的值以匹配当前namenode的值,然后启动hadoop。

          您始终可以使用以下方式检查可用的数据节点:hadoop fsck /

          【讨论】:

          • 看起来问题出在名称解析上,请查看我的 cmets。谢谢
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-04
          • 1970-01-01
          • 2010-11-16
          • 1970-01-01
          • 1970-01-01
          • 2020-09-13
          相关资源
          最近更新 更多