运行Cygwin64

时间:2017-12-17 01:51:38

标签: windows hadoop cygwin

我按照这里的说明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>

一些注意事项:

  • window 64bit,hadoop 2.7.1
  • java -versionhadoop version都已成功执行。所以,我猜环境设置没问题。
  • sshd服务正在运行,端口22已打开。 ssh localhosttelnet localhost 22都成功。
  • 我在Windows上禁用IPv6,但结果是一样的。
  • 在hadoop-env.sh中,我将"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。但我被困在这里。请帮我。

1 个答案:

答案 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 ...."

========EDIT2:换行问题==========

如果您在 windows 中编辑文件并通过 WinSCP 等寡妇应用程序将它们复制到 linux 中,则有一个额外的 \r 字符会导致如上所述的主机名问题。