我已经在我的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。
你可能想要 :
使用hadoop系统用户的ssh-keygen生成密钥对,并将其复制到authorized_keys文件中cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
请确保文件chown 600 $HOME/.ssh/authorized_keys
上的所有权是正确的
最后在网上跟随文档,不要忘了你的hadoop-env.shconfiguration。