上一章讲的是单机上的配置与操作,这一次是联机版的。
用一台主机master来控制操控几台slave。
在配置好的机子上,用ssh one'ip 就可以用ssh的方式连接另一台主机,可以用命令操作这台主机上所有能用命令操作的东西。但有一缺点,就是要输入密码,试想,当你用一台master来连接几十台,甚至几百台slave的时候,每一台都要输入一次密码,而且密码还可能不同,这不是很麻烦吗?
其实我们可以用ssh为我们提供的功能来减轻工作量,以后每一次登陆其它主机时就不用再输入密码了。
只要把master的rsa公钥拷到所有slave里面的authorized_keys文件里就行了。
首先在master机子上配置一下所有的slave对应的ip:
sudo gedit /etc/hosts
把全部内容都删除了,然后加上下面几行,如下配置:
192.168.1.133 master
192.168.1.14 s14
192.168.1.19 s19
192.168.1.20 s20
……
注意,上面的IP后面对应的名字要与真正的电脑命名对应。master也要改成相应的主机名。
这样的话,就可以用s14,s19等来表示slave机的ip
接下来,我们把master的公钥拷到所有的slave中去:
(在master上操作,如果在各个slave上操作的话,把后面两个参数的顺序反一下就行了)
scp /home/hadoop/.ssh/id_rsa.pub hadoop@s14:/home/hadoop/.ssh/20_rsa.pub
然后用ssh登陆远程slave机:ssh hadoop@s14 (如果当前操作的用户名就是hadoop的话,
这个命令可以简化成:ssh s14),然后输入密码就进入s14了。
然后把master的公钥加到slave的authorized_keys里面:
cat /home/hadoop/.ssh/20_rsa.pub >> /home/hadoop/.ssh/authorized_keys
这样就行了,现在退出远程s14:exit
(这里插入一个与本文关系不大的一个小知识点,就是怎么修改主机名:
sudo gedit /etc/hostname,把里面的名字名字改成你刚才改的那个就行了。
)
现在在master上连接远程的s14就可以不用再输入密码了:ssh s14 就可以连接了。
同样的,其它slave也可以这样配置。
用master带动其它的slave来执行 dfs操作。
先在hadoop根目录下的conf/slaves文件里面,加上上面所有连接了的ip地址就行了。
然后我们运行 hadoop 根目录里的 bin/start-all.sh 就可以启动所有的机子上的相关任务(这些任务可以在slave机子上用jps来查看)。
在这里可能会有朋友会出现些问题,这很可能是不同的机子间,hadoop的安装目录不同。这时,要修正所有的与master上hadoop安装目录不同的slave。主要有几个操作:一、把hadoop根目录拷到和master一样的目录下面,然后修改 /etc/profile文件,把$HADOOP_HOME修正过来。二、source 一下刚修改的内容。三、把 新的hadoop根目录权限全部赋给hadoop用户:chown -R hadoop:hadoop myNewHadoopDir,其中myNewHadoopDir是你的新hadoop根目录。