在重新安装JVM后,在hadoop启动脚本中调用sed语法

前端之家收集整理的这篇文章主要介绍了在重新安装JVM后,在hadoop启动脚本中调用sed语法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在 Windows Azure云上运行3个节点Hadoop集群.我已经通过配置,并测试发布.一切看起来都很好,但是,由于我以前使用OpedJDK,根据我所读取的不推荐用于Hadoop的VM,我决定将其替换为Oracle Server JVM.删除了旧的java安装与Yum,以及/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的使用不正确,它似乎试图将部分代码作为Hostname传递:

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?我该怎么解决

解决方法

所以我找到了一个这个问题的答案:我的猜测是错误的,一切与sed是好的.然而问题在于如何使用Oracle JVM与外部库进行比较,与OpenJDK相比.它没有抛出异常,脚本不期望它,并且它破坏整个sed输入. 您可以通过添加以下系统变量来修复它: HADOOP_COMMON_LIB_NATIVE_DIR应该指向您的Hadoop安装的/ lib / native文件夹,并将-Djava.library.path = / opt / hadoop / lib添加到HADOOP_OPTS变量中已有的任何选项(注意/ opt / hadoop是我的安装文件夹,您可能需要更改它以使东西正常工作). 我个人将导出命令添加到hadoop-env.sh脚本,但将其添加到.bash文件或start-all.sh应该也可以.
原文链接:https://www.f2er.com/jvm/121263.html

猜你在找的JVM相关文章