-1

在单节点集群上安装hadoop,知道为什么我们需要创建以下内容

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

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

  3. 为什么我应该为新用户指定密码少..?

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

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

4

4 回答 4

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 守护程序。

于 2013-07-23T09:08:27.963 回答
2

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

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

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

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

为什么我应该为新用户指定密码少..?

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

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

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

高温高压

于 2013-07-23T17:59:56.120 回答
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),而像 Hortonworks 在 Windows 上的 Hadoop 这样的发行版将使用另一种机制(即 PowerShell 和WinRM而不是ssh)。

于 2013-07-23T09:36:16.013 回答
0

使用此命令

$Sudo addgroup hadoop 如果不工作那么

$sudo adduser --ingroup hadoop hduser

于 2013-07-23T12:47:21.810 回答