新用户SSH hadoop

时间:2013-07-23 08:45:57

标签: hadoop hadoop-streaming hadoop-plugins hadoop-partitioning

在单节点集群上安装hadoop,任何想法我们为什么需要创建以下

  1. 为什么我们需要为新用户提供SSH访问权限?

  2. 为什么它能够连接到自己的用户帐户?

  3. 为什么我要为新用户指定较少的密码..?

  4. 当所有节点都在同一台机器上时,为什么它们会明确通信..?

  5. http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/

4 个答案:

答案 0 :(得分:2)

在节点或本地计算机之间设置无密码ssh并非强制要求。 Hadoop主要使用http在需要时跨节点进行数据传输。

无需密码的ssh访问(在节点之间),这样你的start-all.sh,start-dfs.sh和start-mapred.sh脚本(据我所知),可以用来开始停止分布式集群环境中的Hadoop守护程序。否则,它会变得很麻烦,进入每台机器并启动/停止Hadoop守护进程。

你也可以使用hadoop-daemons.sh或hadoop-daemon.sh来完成与你的hadoop用户登录相同的事情。

Cloudera Hadoop Distribution甚至不使用这些脚本并提供init.d脚本来启动/停止Hadoop守护进程。

答案 1 :(得分:2)

为什么我们需要为新用户提供SSH访问权限?

因为您希望与运行Hadoop守护程序的用户进行通信。请注意,ssh实际上是从用户(在一台机器上)到另一台用户(在另一台机器上),而不仅仅是机器到机器。

为什么它能够连接到自己的用户帐户?

因为您只想通过一个命令启动所有守护进程。否则,您必须通过为每个守护程序发出命令来单独启动守护程序。即使你在一台机器上,也需要ssh。

为什么我要为新用户指定较少的密码..?

因为每次启动Hadoop守护进程时都不想输入密码。那会很烦人,对吧?

当所有节点都在同一台机器上时,为什么它们会明确通信..?

你明确表达什么意思?请记住,ssh不适用于进程之间的通信。所有通信都通过TCP / IP进行。 Hadoop脚本需要ssh,这样您就可以从一台机器启动所有守护进程,而无需在每台机器上运行并在那里单独启动每个进程。

HTH

答案 2 :(得分:1)

slaves.sh用于启动远程节点:

for slave in `cat "$HOSTLIST"|sed  "s/#.*$//;/^$/d"`; do
 ssh $HADOOP_SSH_OPTS $slave $"${@// /\\ }" \
   2>&1 | sed "s/^/$slave: /" &
 if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then
   sleep $HADOOP_SLAVE_SLEEP
 fi
done

如您所见,它依赖于ssh。虽然您可以在不需要新用户和ssh配置的情况下完成整个教程,但我猜想,作为教程,当您必须部署/配置/启动/停止真正的集群时,它不会为您提供良好的开端(即远程节点)。正如@JteRocker指出像Cloudera这样的发行版使用其他脚本来启动/停止守护进程(但我猜它们仍然依赖于ssh),而像Windows上的Hortonworks的Hadoop这样的发行版将使用另一种机制(即PowerShell和{{3而不是ssh)。

答案 3 :(得分:0)

使用此commnad

$ Sudo addgroup hadoop 如果不工作那么

$ sudo adduser --ingroup hadoop hduser

相关问题