我按照这里的说明http://saphanatutorial.com/hadoop-installation-on-windows-7-using-cygwin/与Cygwin(64位)一起运行Hadoop。在我运行./start-dfs.sh
之前,一切都很好。错误是
$ ./start-dfs.sh
]tarting namenodes on [localhost
: Name or service not knownstname localhost
localhost: starting datanode, logging to /cygdrive/c/Cygwin64/usr/local/hadoop/logs/hadoop-KennyT-datanode-DESKTOP-6I19F66.out
]tarting secondary namenodes [0.0.0.0
: Name or service not knownstname 0.0.0.0
我配置了以下内容:
环境变量:
HADOOP_HOME: C:\cygwin64\usr\local\hadoop
JAVA_HOME: C:\Java\bin
Path: C:\cygwin64\usr\local\hadoop\bin;C:\cygwin64\bin; C:\Java\bin
hadoop-env.sh:
export JAVA_HOME="/cygdrive/c/Java/"
核心-site.xml中:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
HDFS-site.xml中
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/c:/cygwin64/usr/local/hadoop/hadoop-dir/namedir</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/c:/cygwin64/usr/local/hadoop/hadoop-dir/datadir</value>
</property>
</configuration>
mapred-site.xml中
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
纱-site.xml中
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
一些注意事项:
java -version
和hadoop version
都已成功执行。所以,我猜环境设置没问题。ssh localhost
和telnet localhost 22
都成功。"export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
替换为"export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"
,但没有运气。hadoop namenode -format
已成功。每当我更改文件的内容时,我都会dos2unix.exe file
在没有使用上述设置的cygwin的情况下成功运行hadoop。所以,我猜这些文件中的设置没有问题(核心站点,hdfs-site,mapred-site,yarn-site)
我正在尝试在一台机器上运行带有cygwin的Hadoop。然后扩展它以在不同的机器中将Cygwin作为集群运行Hadoop。但我被困在这里。请帮我。
答案 0 :(得分:1)
我在尝试启动 Hadoop 时遇到同样的问题,但仅针对数据节点。 几天后我通过跟踪Hadoop脚本发现了问题,发现你需要在slaves文件的每一行后面设置一个空格 .
hadoop-deamons.sh 调用 slaves.h 一个个运行 slaves
exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_PREFIX" \; "$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "$@"
并且 slaves.sh 尝试在每个从站中连接并通过以下方式在该服务器上运行 stop datanode
命令:
# start the daemons
for slave in $SLAVE_NAMES ; do
ssh $HADOOP_SSH_OPTS $slave $"${@// /\\ }" \
2>&1 | sed "s/^/$slave: /" &
if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then
sleep $HADOOP_SLAVE_SLEEP
fi
done
如果你错过了空间,你会发生这样的事情:
ssh server4"cd /home/xxx/hadoop-2.10.0 ...."
遇到未知主机名的你。正确的是:
ssh server4 "cd /home/xxx/hadoop-2.10.0 ...."
如果您在 windows 中编辑文件并通过 WinSCP 等寡妇应用程序将它们复制到 linux 中,则有一个额外的 \r
字符会导致如上所述的主机名问题。