文章目录
前言
hadoop的启动模式有三种,一个是本地模式,一个是伪分布式模式,还有一个是集群模式。为了学习hadoop,这里需要搭建一个完全分布式的集群。希望你先把准备工作给看一下,因为我们的配置都是前后一致的。本文因为想让大家学习一下集群分发脚本,所以在模板虚拟机里面少放了很多东西,以后会写一个快速搭建集群的教程。我在文末会分享我做的一个集群,可能你需要把网络给修改一下应该就能用了。
一、准备工作
首先我们需要多台虚拟机,需要做的工作请看下面这篇博文。
配置hadoop模板虚拟机
二、克隆三台虚拟机并进行网络配置
克隆
找到我们上面配置好的模板虚拟机,打开它,然后右键——》管理——》克隆
虚拟机克隆引导
在引导的时候,我只说两件事
第一,要选择创建完整克隆
第二,在命名的时候,建议命名成hadoop102,hadoop103,hadoop104
原因有两点:一般hadoop101是用来做伪分布式安装的
第二点,我们的hosts已经修改成了hadoop101~hadoop108
所以,我建议三台虚拟机命名成hadoop102,hadoop103,hadoop104
修改网络配置
让我们开机hadoop102,hadoop103,hadoop104
以管理员的身份登录
首先要强调一点,我们的配置都是前后一致的,一一对应的。
hadoop102 对应的ip地址末尾是102 hostname也是hadoop102
hadoop103 对应的ip地址末尾是103 hostname也是hadoop103
hadoop104 对应的ip地址末尾是104 hostname也是hadoop104
看明白了吗?这些在准备工作里面都配置过,下面的修改也不过是进行了一致性修改。
首先,修改ip地址
输入下面的命令
vim /etc/sysconfig/network-scripts/ifcfg-ens33
把 ip地址与名字对应(hadoop102的ip末尾修改成102就行,hadoop103同理)保存退出就行了,毕竟之前我们已经配置了模板虚拟机。
修改hostname
vim /etc/hostname
hadoop102的hostname修改成hadoop102
hadoop103同理
保存退出。输入“ :wq”
验证
验证方式一
让我们
ping www.baidu.com
验证方式二
打开我们的xshell,
连接这三台虚拟机。(这里不再演示了)
三、安装jdk和hadoop
注:这里在hadoop102安装就行了
(这里主要是为了学习一下分发脚本,不然直接在模板机直接把这些配置好岂不是妙哉?)
四、ssh免密登录配置
概述
在下一大点,我们用了一个分发脚本。
在使用分发脚本传输文件时,必不可少的一项流程是登录到目标机器,也就是要输入密码(可以先试一试第五点的集群分发脚本来体会为什么要设置ssh免密登录),
并且每次传文件都要输密码,所以配置了ssh免密登录,集群之间的机器再传输文件就不需要密码了。
本节使用的是手动配置ssh免密登录(学习一下,知道ssh免密登录怎么配置),
后续可以使用shell脚本来快速配置集群的免密登录
(假设你有n台机器,你要配置n*n次的免密登录,非常的麻烦)
生成公钥和私钥
首先,来到hadoop102,使用tom登录(ssh免密登录是分用户的,假设你使用了root管理员来进行免密登录配置,那你只能使用root来免密登录其他的已经配置过免密登录的机器,而本机器上的其他用户是无法进行免密登录的,登录到其他机器还是要输入密码的)
在tom的家目录(/home/tom)输入ls -lah,你会看到.ssh
如果你没有这个.ssh,也没有关系,可以输入
ssh localhost
然后输入密码就行了,再输入上面的命令,你就会看到这个.ssh的目录了。
进入.ssh目录
输入
ssh-keygen -t rsa
然后回车三次,生成了公钥和私钥
id_rsa 是私钥,id_rsa.pub是公钥
把公钥拷贝到三台虚拟机上面去
依次输入(每次输入的命令需要对应机器的密码)
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
验证
上面的做完了,开始验证是否配置成功
现在我们在hadoop102这台机器上面,我们输入
ssh hadoop102
看看需不需要输密码,如果不需要输密码,就说明我们已经配置成功了
把hadoop103 和 hadoop104的免密登录配置安装上面的操作再做一遍
建议把hadoop102 root 到hadoop102 103 104 的免密登录也配置一下,试了一下集群分发脚本,文件或目录好多因为没有权限而无法创建。
五、集群分发脚本
我们还是使用tom登录hadoop102
我们已经在模板虚拟机的时候就已经安装了rsync(因为每个模板虚拟机都需要这个)
如果你的虚拟机没有rsync
sudo yum install rsync
请在用户的家目录下创建一个bin目录,然后输入
vim xsync
下面就是集群分发脚本
(记得先输入 i 进入编辑的模式再复制粘贴脚本代码)
#!/bin/bash
# 1.判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!<