Hadoop集群安装详细步骤(4)

  在$Hadoop_HOME/conf目录中存在masters和slaves这两个文件,用来做Hadoop的主从配置。上面已经提到了Hadoop主要由NameNode/DataNode 和JobTracker/TaskTracker构成,在主从配置里我们一般将NameNode和JobTracker列为主机,其它的共为从机,于是对于此处的配置应该是:

Masters代码

192.168.1.111 192.168.1.112 192.168.1.113  

如果你对以上介绍的配置项做了正确的配置,那么你的Hadoop集群只差启动和初体念了,当然,在$HADOOP_HOME/conf目录下还包括其它的一些配置文件,但那些都不是必须设置的,如果有兴趣你可以自己去了解了解。
  值得注意的是Hadoop集群的所有机器的配置应该保持一致,一般我们在配置完master后,使用scp将配置文件同步到集群的其它服务器上。

启动
  经过以上两个步骤,Hadoop的安装和配置已经OK了,那么下面我们就来启动Hadoop集群。启动前我们需要做一些准备,因为集群的启动是从NameNode开始的,于是DataNode的运行需要NameNode的远程调用,Hadoop使用ssh命令远程运行DataNode节点,这就是为什么Hadoop需要ssh的支持。我们可以想象一下,如果集群里有100台机器,那么我们就需要输入100遍主机的访问密码,但如果配置SSH使用无密码公钥认证的方式,就解决了此问题。
  简单的说,在111上需要生成一个密钥对,即一个私钥和一个公钥。将公钥拷贝到112和113上,如此一来,当111向112发起ssh连接的时候,112上就会生成一个随机数并用111的公钥对这个随机数进行加密,并且发送给111,111收到这个加密的数以后用私钥进行解密,并将解密后的数返回112,112确认解密的数无误后就允许111进行连接了。这就完成了一次公钥认证过程。
  公钥生成的步骤如下:

[root@192.168.1.111] ssh-keygen -t rsa
[root@192.168.1.111] #以下是生成一个为id_rsa/id_rsa.pub的无密码的公/私钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
[root@192.168.1.111] ls -l ~/.ssh
[root@192.168.1.111] #这样我们会看到如下所示的结果集:
-rw------- 1 root     root      1675 Jul  5 14:01 id_rsa
-rw-r--r-- 1 root     root       394 Jul  5 14:01 id_rsa.pub

  然后将id_rsa.pub的内容复制到每个机器(也包括本机)的~/.ssh/authorized_keys文件中。如果authorized_keys不存在,则使用touch ~/.ssh/authorized_keys生成一个;如果该文件已经存在,则追加内容进去就OK了,这里我们推荐使用如下命令:

[root@192.168.1.111] cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@192.168.1.111] #因为ssh服务对文件的权限有着非常严格的限制(authorized_keys只能拥有指定用户的写权限)于是需要进行如下处理
[root@192.168.1.111] chmod 644 ~/.ssh/authorized_keys

  经过以上步骤,我们的无密码访问就配置好了,可以通过如下命令进行验证:

[root@192.168.1.111] ssh 192.168.1.112
[root@192.168.1.112] exit
[root@192.168.1.111] ssh 192.168.1.113
[root@192.168.1.113] exit

  如此一来,就可以正常启动Hadoop集群了。启动方式如下:

[root@192.168.1.111] cd $HADOOP_HOME/bin
[root@192.168.1.111] #查看一下目录下的文件
[root@192.168.1.111] ls -l
-rwxr-xr-x 1 root root 9998 Feb 19 15:55 hadoop
-rwxr-xr-x 1 root root 1966 Feb 19 15:55 hadoop-config.sh
-rwxr-xr-x 1 root root 3690 Feb 19 15:55 hadoop-daemon.sh
-rwxr-xr-x 1 root root 1227 Feb 19 15:55 hadoop-daemons.sh
-rwxr-xr-x 1 root root 2710 Feb 19 15:55 rcc
-rwxr-xr-x 1 root root 2043 Feb 19 15:55 slaves.sh
-rwxr-xr-x 1 root root 1066 Feb 19 15:55 start-all.sh
-rwxr-xr-x 1 root root  965 Feb 19 15:55 start-balancer.sh
-rwxr-xr-x 1 root root 1645 Feb 19 15:55 start-dfs.sh
-rwxr-xr-x 1 root root 1159 Feb 19 15:55 start-mapred.sh
-rwxr-xr-x 1 root root 1019 Feb 19 15:55 stop-all.sh
-rwxr-xr-x 1 root root 1016 Feb 19 15:55 stop-balancer.sh
-rwxr-xr-x 1 root root 1146 Feb 19 15:55 stop-dfs.sh
-rwxr-xr-x 1 root root 1068 Feb 19 15:55 stop-mapred.sh
[root@192.168.1.111] #启动服务之前,我们需要做一件事情,非常重要,那就是格式化命名空间
[root@192.168.1.111] ./hadoop namenode -format
[root@192.168.1.111] #启动dfs和map/reduce服务
[root@192.168.1.111] ./start-all.sh

  我们用如下命令验证一下是否启动成功:

[root@192.168.1.111] $HADOOP_HOME/bin/hadoop dfs -ls

  如果没有错误提示或者出现文件列表,那么恭喜你,Hadoop成功启动了,另外,我们可以通过访问:50070来查看hdfs的状态,访问:50030来查看map/reduce的状态。
如果出现错误,或Hadoop集群未启动,可以查看$HADOOP_HOME/logs/下的日志文件。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/43bb07b90e425a6559abfccc7e68e9df.html