2017年2月2日木曜日

HDPでYARN ATS(Application Timeline Server)のみのJavaを変更する

現在のHDP 2.4.2.0ではhadoop-env.shがyarn-env.shから読み込まれるため、JAVA_HOMEを下記のように変更してもコマンドラインからスタートしようとするとうまく行きません。(Ambariだけの運用の場合は大丈夫そう)

/etc/hadoop/conf/yarn-env.sh
      export HADOOP_LIBEXEC_DIR={{hadoop_libexec_dir}}
if [ "$command" == "timelineserver" ]; then
    export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
else
    export JAVA_HOME={{java64_home}}
fi

Ambariは、下記のコマンドを実行するので、hadoop-env.shを変更すれば大丈夫そうです。(今後新しいAmbariかHDPバージョンでうまくいかなくなる可能性はあります)
/usr/hdp/current/hadoop-yarn-timelineserver/sbin/yarn-daemon.sh --config /usr/hdp/current/hadoop-client/conf start timelineserver

/etc/hadoop/conf/hadoop-env.sh
# The java implementation to use.  Required.
if [ "$1" == "timelineserver" -o "$2" == "timelineserver" ]; then
    export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
else
    export JAVA_HOME={{java_home}}
fi

もしくは、yarn-env.shを最初のように変更し、JAVA_HOMEが設定されてないときだけ変更でも大丈夫かと。ただ、この場合はどこかでJAVA_HOMEが設定されている場合は予測できないJavaが使われる場合があります。(例えばユーザのprofileとか)
/etc/hadoop/conf/hadoop-env.sh
# The java implementation to use.  Required.
if [ -z "$JAVA_HOME" ]; then
    export JAVA_HOME=/usr/jdk64/jdk1.8.0_60
fi


0 件のコメント:

コメントを投稿