Hadoop initscript askes密码

我已经在我的Ubuntu 12.04单节点上安装了hadoop。我试图执行一个初始化脚本,使hadoop在启动时运行,但每次执行时都会要求input密码。

#!/bin/sh ### BEGIN INIT INFO # Provides: hadoop services # Required-Start: $network # Required-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Hadoop services # Short-Description: Enable Hadoop services including hdfs ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin HADOOP_BIN=/home/naveen/softwares/hadoop-1.0.3/bin NAME=hadoop DESC=hadoop USER=naveen ROTATE_SUFFIX= test -x $HADOOP_BIN || exit 0 RETVAL=0 set -e cd / start_hadoop () { set +e su $USER -s /bin/sh -c $HADOOP_BIN/start-all.sh > /var/log/hadoop/startup_log case "$?" in 0) echo SUCCESS RETVAL=0 ;; 1) echo TIMEOUT - check /var/log/hadoop/startup_log RETVAL=1 ;; *) echo FAILED - check /var/log/hadoop/startup_log RETVAL=1 ;; esac set -e } stop_hadoop () { set +e if [ $RETVAL = 0 ] ; then su $USER -s /bin/sh -c $HADOOP_BIN/stop-all.sh > /var/log/hadoop/shutdown_log RETVAL=$? if [ $RETVAL != 0 ] ; then echo FAILED - check /var/log/hadoop/shutdown_log fi else echo No nodes running RETVAL=0 fi set -e } restart_hadoop() { stop_hadoop start_hadoop } case "$1" in start) echo -n "Starting $DESC: " start_hadoop echo "$NAME." ;; stop) echo -n "Stopping $DESC: " stop_hadoop echo "$NAME." ;; force-reload|restart) echo -n "Restarting $DESC: " restart_hadoop echo "$NAME." ;; *) echo "Usage: $0 {start|stop|restart|force-reload}" >&2 RETVAL=1 ;; esac exit $RETVAL 

请告诉我如何在不input密码的情况下运行hadoop。

为运行hadoop的用户设置一个ssh密钥

ssh-keygen

将公钥复制到〜/ .ssh / authorized_keys中

cat ~/.ssh/public_key_name >> ~/.ssh/authorized_keys

以该用户身份运行ssh localhost来testing密钥。

如果这样工作,那么Hadoop应该使用它,而不需要进一步的configuration。

你可能想要 :

  • 检查你的sshdconfiguration(在/ etc / ssh / sshd_config中)并确保PubkeyAuthentication设置为yes
  • 使用hadoop系统用户的ssh-keygen生成密钥对,并将其复制到authorized_keys文件中cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

  • 请确保文件chown 600 $HOME/.ssh/authorized_keys上的所有权是正确的

最后在网上跟随文档,不要忘了你的hadoop-env.shconfiguration。