我正在尝试在 Windows Azure 云上运行 3 节点 Hadoop 集群。我已经完成了配置和测试启动。一切看起来都很好,但是,因为我曾经使用 OpedJDK,根据我的阅读,不推荐将其用作 Hadoop 的 VM,因此我决定将其替换为 Oracle Server JVM。使用 Yum 删除了旧的 java 安装,以及 /usr/lib 中的所有 java 文件夹,安装了最新版本的 Oracle JVM,更新了 PATH 和 JAVA_HOME 变量;但是,现在在发布时,我得到了以下按摩:
sed: -e expression #1, char 6: unknown option to `s'
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
Server: ssh: Could not resolve hostname Server: Name or service not known
VM: ssh: Could not resolve hostname VM: Name or service not known
等(总共大约 20-30 个字符串,其中包含与主机名没有任何共同点的单词)
对我来说,由于启动脚本中 sed 的使用不正确,它似乎正试图将部分代码作为主机名传递:
if [ "$HADOOP_SLAVE_NAMES" != '' ] ; then
SLAVE_NAMES=$HADOOP_SLAVE_NAMES
else
SLAVE_FILE=${HADOOP_SLAVES:-${HADOOP_CONF_DIR}/slaves}
SLAVE_NAMES=$(cat "$SLAVE_FILE" | sed 's/#.*$//;/^$/d')
fi
# 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
哪个看起来没有变化,所以问题是:JVM 的变化如何影响 sed?我该如何解决?