Linux 无法解决连接超时问题-Hadoop-1.2.1 NameNode&;数据节点启动失败;SecondaryNameNode端口22连接超时

Linux 无法解决连接超时问题-Hadoop-1.2.1 NameNode&;数据节点启动失败;SecondaryNameNode端口22连接超时,linux,node.js,hadoop,amazon-ec2,ubuntu-12.04,Linux,Node.js,Hadoop,Amazon Ec2,Ubuntu 12.04,我无法在多节点集群的namenode上启动jsp服务。我尝试了其他SO线程中针对类似(但不完全相同)问题建议的几种解决方案。但是,namenodejsp服务仍然没有启动。非常感谢您对解决此问题的任何帮助 无论如何,我都不是Hadoop和云计算复杂性方面的专家(不过,我是一个感兴趣但有些天真的用户)。我正在寻求更好地理解这些复杂性,并欣赏这一领域专家所拥有的知识深度。为此,我一直在学习由Hardik Panday在DZone.Com上描述的伪分布式多节点集群教程- 本教程本身是Michael N

我无法在多节点集群的namenode上启动jsp服务。我尝试了其他SO线程中针对类似(但不完全相同)问题建议的几种解决方案。但是,namenodejsp服务仍然没有启动。非常感谢您对解决此问题的任何帮助

无论如何,我都不是Hadoop和云计算复杂性方面的专家(不过,我是一个感兴趣但有些天真的用户)。我正在寻求更好地理解这些复杂性,并欣赏这一领域专家所拥有的知识深度。为此,我一直在学习由Hardik Panday在DZone.Com上描述的伪分布式多节点集群教程-

本教程本身是Michael Noll的流行教程的更新,该教程在AWS EC2上设置了单节点集群[注a,如下]和多节点集群[注B,如下]。Panday教程与Noll的前身一样,适用于4节点集群(主集群、第二集群、2个从属集群);为了保持AWS自由层限制,我将集群修改为只有3个节点(主节点、第二节点和从节点)

在接下来的教程中,在启动hadoop之前,我没有遇到任何问题、错误或意外警告,遵循namenode的无错误格式:

~/home/ubuntu/hadoop/conf$ hadoop start-all.sh

starting namenode, logging to /home/ubuntu/hadoop/libexec/../logs/hadoop-ubuntu-namenode-<SNN Public DNS>.out  
<Slave Public DNS>: starting datanode, logging to /home/ubuntu/hadoop/libexec/../logs/hadoop-ubuntu-datanode-<Slave Public DNS>.out  
<SNN Public DNS>: starting secondarynamenode, logging to /home/ubuntu/hadoop/libexec/../logs/hadoop-ubuntu-secondarynamenode-<SNN Public DNS>.out  
<SNN Public DNS>: ssh: connect to host <NN Public DNS> port 22: Connection timed out  
starting jobtracker,  logging to /home/ubuntu/hadoop/libexec/../logs/hadoop-ubuntu-jobtracker-<SNN Public DNS>.out  
<Slave Public DNS>: starting tasktracker, logging to /home/ubuntu/hadoop/libexec/../logs/hadoop-ubuntu-tasktracker-<Slave Public DNS>.out  
根据之前针对连接超时(和Java I/O错误)的SO解决方案,在采取进一步行动之前,我停止了所有进程(stop all.sh)。在某些情况下,只需start-all.sh(来自bin/或conf/)就可以为人们工作。我的情况不是这样

因此,我在So解决方案和$rm-Rf中尝试了进一步的建议,即启动进程之前创建的hadoop/tmp/(不起作用-相同错误),或者格式化namenode和启动进程(不起作用-相同错误)

根据涉及hadoop-1.2.1的SO解决方案,我检查了core-site.xml文件,以确保正确指定了fs.default.name。重新运行进程启动;但是,同样的错误

根据其他SO解决方案,我增加了core-site.xml和mapred-site.xml的端口号(分别从:8020增加到:9050和:8021增加到:9051)。重新运行进程启动;但是,同样的错误

根据另一个与hadoop tmp/目录相关的SO解决方案,我向hdfs-site.xml添加了两个额外的属性(请参见下面的环境)。重新运行进程启动;但是,同样的错误

根据另一个SO解决方案,我检查了50070和22处的端口活动。两个端口上都没有活动

我已经停止并终止了EC2实例,重复了整个教程,但结果相同

我在这里把头撞在墙上,真想知道

a) 我错过了导致此失败的隐藏步骤(教程有时很难遵循),和/或

b) 还有一些额外的步骤需要采取,如果不采取,将导致加载和启动hadoop进程失败

提前感谢您的时间和努力

理查德·波特 美国佛罗里达大学MBA学生(萨拉索塔海牛)

使用ubuntu 12.04 64位的公共AMI
使用hadoop-1.2.1
使用Java版本1.7.0_8

.bashrc已修改为包括:

export HADOOP_CONF=/home/ubuntu/hadoop/conf
export HADOOP_PREFIX=/home/ubuntu/hadoop

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

export PATH=$PATH"$HADOOP_PREFIX/bin
<property>
<name>dfs.data.dir</name>
<value>/home/ubuntu/hdfstmp/dfs/name/data</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/ubuntu/hdfstmp/dfs/name</value>
</property>
根据教程,hadoop tmp/在/home/ubuntu/中创建为hdfstmp,其所有者:group ubuntu:ubuntu仅在master上

hadoop集群配置文件(复制到NN、SNN和Slave,类似):

hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-7-oracle
core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://<Master Public DNS>:9050</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/ubuntu/hdfstmp</value>
</property>
</configuration>

fs.default.name
hdfs://:9050
hadoop.tmp.dir
/home/ubuntu/hdfstmp
hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

dfs.replication
1.
dfs.0权限
假的
因为只有一个从机,所以复制值为=“1”

hdfs-site.xml文件进一步修改,包括:

export HADOOP_CONF=/home/ubuntu/hadoop/conf
export HADOOP_PREFIX=/home/ubuntu/hadoop

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

export PATH=$PATH"$HADOOP_PREFIX/bin
<property>
<name>dfs.data.dir</name>
<value>/home/ubuntu/hdfstmp/dfs/name/data</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/ubuntu/hdfstmp/dfs/name</value>
</property>

dfs.data.dir
/home/ubuntu/hdfstmp/dfs/name/data
dfs.name.dir
/home/ubuntu/hdfstmp/dfs/name
mapred.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://<Master Public DNS>:9051</value>
</property>
</configuration>

mapred.job.tracker
hdfs://:9051
修改了NN、SNN和从属的主文件和从属文件,将它们从“localhost”更改为相应的URL(或留空)

注释(我目前无法包含2个以上的超链接,但我提供在线参考的可搜索标题)

[注A]:Michael Noll在Ubuntu Linux(单节点集群)上运行Hadoop
[注B]:Michael Noll在Ubuntu Linux(多节点集群)上运行Hadoop尝试以下步骤 1.在NameNode和DataNode中安装openssh服务器和客户端 2.通过运行以下命令生成ssh keygen

ssh-keygen -t rsa -P “”

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
  • 设置两个节点之间的ssh连接

    ssh名称节点

    ssh数据节点

  • 现在再次尝试运行hadoop守护进程

  • 我认为从安全组AWS控制台添加以下内容可能会有所帮助:
    键入//Protocol//Port Range//Source
    所有TCP//0-65535//Anywhere 0.0.0.0/0
    所有ICMP//ICMP//0-65535//Anywhere 0.0.0/0
    SSH//TCP//22//Anywhere 0.0.0.0.0/0这里有同样的问题。你能告诉我它是怎么工作的吗谢谢你的建议,克里希纳。我将研究如何安装openssh,然后尝试您的解决方案。我会让你知道结果如何。