在重新安装JVM后,在hadoop启动脚本中调用sed语法
发布时间:2020-12-14 05:48:32 所属栏目:Java 来源:网络整理
导读:我试图在 Windows Azure云上运行3个节点Hadoop集群.我已经通过配置,并测试发布.一切看起来都很好,但是,由于我以前使用OpedJDK,根据我所读取的不推荐用于Hadoop的VM,我决定将其替换为Oracle Server JVM.删除了旧的java安装与Yum,以及/usr/lib中的所有java文件
我试图在
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应该也可以.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |