虚拟机搭建Hadoop集群
安装包准备
操作系统:ubuntu-16.04.3-desktop-amd64.iso
软件包:VirtualBox
安装包:hadoop-3.0.0.tar.gz,jdk-8u161-linux-x64.tar.gz
1. 环境准备
使用VirtualBox和下载的ubuntu镜像文件新建三个Ubuntu操作环境,具体配置如下:
用户 | 内存(G) | 磁盘空间(G) |
---|---|---|
hadoop01 | 1.5 | 10 |
hadoop02 | 1.5 | 10 |
hadoop03 | 1.5 | 10 |
2. 网络环境准备
点击VirtualBox右侧“全局工具->主机网络管理器”,点击新建,并且勾选DHCP服务器中的启用服务器,其余的按照默认配置点击应用即可,这个过程相当于在VirtualBox中创建了一个名称为vboxnet0的路由器:
关闭创建的每一台虚拟机,然后分别选中每一台虚拟机,点击“设置->网络->网卡2”,启用网络连接,并且选择连接方式为“仅主机(Host-Only)网络”,界面名称为刚刚创建的vboxnet0。
这里需要注意一定要在关闭虚拟机的状态下配置网卡2,因为在运行过程中的虚拟机是不允许配置网卡的。另外,这里网卡1和网卡2的区别在于网卡1用于供给虚拟机连接外部网络的,虚拟机通过网卡1连接VirtualBox,再通过VirtualBox连接外网;网卡2则相当于提供了一个路由器,供给三台虚拟机相互之间以及与主机之间进行连接的。
打开一台虚拟机,执行以下命令安装vim(默认情况下,Ubuntu是不带vim的):
sudo apt-get install -y vim
执行以下命令查看当前网络地址:
ifconfig
将如下配置添加到/etc/network/interfaces
文件中,为当前虚拟机配置静态ip:
auto enp0s8
iface enp0s8 inet static
address 192.168.56.4
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 202.120.111.3
如此按照上述方式对另外两台虚拟机配置网络环境即可。
这里三台虚拟机的用户与ip分别配置如下:
用户 | ip |
---|---|
hadoop01 | 192.168.56.4 |
hadoop02 | 192.168.56.3 |
hadoop03 | 192.168.56.8 |
3. SSH免密登录
由于Ubuntu没有ssh客户端,可以执行如下命令为每台虚拟机安装ssh客户端:
sudo apt-get install -y openssh-server
安装完成后执行如下命令生成ssh公钥:
ssh-keygen -t rsa
该命令执行期间一直按回车即可。公钥生成后会在用户目录~
下生成一个.ssh文件夹,里面包含id_rsa
和id_rsa.pub
两个文件。
将三台虚拟机生成的id_rsa.pub
文件中的内容都复制到同一个文件中,命名为authorized_keys,并且将该文件在每台虚拟机的.ssh文件夹下都创建一份,该文件相当于为其中的每个公钥所指代的机器提供ssh登录的权限,由于三台虚拟机的authorized_keys都有各自的公钥,因而其相互之间可以通过ssh免密登录。示例authorized_keys文件如下:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFez1asGIktruVI53uJHT3s8UZHoIi3X98G5mFV/7+MAs8xXeXV7HbHfi2FfJnMl/qTY/W4VZWdoFLizDBrtUDHTtigVxs5uK4re8qlvSApmqy9Xi0c+qpLKHSeFBpCSqKgngrwE/+DOFnkkTSH/hv6bIpGPTYArpOXdY203vyt6/MM/HKed0WeAcDbCdfKjke4Q2IHi6APghwjML3oD1N0rNGU28SRc8iGdg+vGp6Ajkr034VZCx7fY/BmjYhxPvJ6c5hnVSwqik05xdw2Dh+6eLkiOOnO1LknFw7KdFqa1435sOxxHhar8+ELiKu/mYzVcZMizN0AiPQGxjP96fl hadoop01@hadoop01
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDCXKskhH0VFzh8KrJt3PmbR/Yxbgv5le4iEdvIPWWXAC7XDuPGrz1XH/ZYlZWauyV/LsMN3qjbeHzyfeuuNuV6Skpy/lofsIO88/XH0NFYcAxQtIQfSLwbOGVWziibOPY+gI8Bnzeb7hAYk10V2cI26hKWMpEHxOu/lCxcNuM5Y+CBs2kx2KzzvwgUjF12P6Jz4+SguCERi+Cz1JQ0YuXHBRLXGgwXMRyYUlC3KxIvyeZzI0+Gpew4nTFFXBoDIEaWn9Ma8+AcHNm9ejnO9ChSCN3zXJf7nnaXKUmi5jyQu88e+qmhDt2Pzj0E/kaKRkxso7e+sgHMBp8eXpJu/eT hadoop02@hadoop02
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCm4yk0TVpfhU0jSf4PMH60fOhMYrxCI9DeG/tcs0LTAUHGatuY3XRd6X3B5tShUlCvr9M1DVRgszk0Nz9VOzgqFsIXUxJLAir4dQIj+nVY0QcyTwzwbqm93YDZfaoYrO9xgEriZ6XVK78bWc8bMWpc9z35Kp4U6ytTQUufVwnsVXgAcBN6rQ/ZZFiJvCwnsZDtNsT/zVNWdrnVMKFbm+0rQHzt+jQEgfunwQeEkj8G21iPMpG9MxuHLmzOx+7XaxNLl/P2oHto8lQJgm0DYLJy6JLPa3rkd+NuBxYoqRxr1A1eC/7f3480bz+HHym5e0dSh8HuG3XJihIoR1SLm1Sd hadoop03@hadoop03
按照上述配置完成之后,可使用如下命令在一台虚拟机上登录另外两台虚拟机(这里hadoop02和hadoop03为目标机器的用户,@符号后的内容为目标机器的ip地址):
ssh hadoop02@192.168.56.3
ssh haddop03@192.168.56.8
这里需要注意,如此配置之后即可按照上述方式使用ssh登录免密登录其他机器,但是这种配置还不完全够,因为在后续使用hive和hbase的过程中,其集群内部是使用如下方式登录的:
ssh hadoop02
ssh hadoop03
Host hadoop02
hostname 192.168.56.3
user hadoop02
Host hadoop03
hostname 192.168.56.8
user hadoop03
4. jdk和Hadoop安装
需要说明的是如下jdk和hadoop安装只是一台虚拟机上的配置,其余两台虚拟机的配置方式与其类似。
将下载的jdk和Hadoop安装包使用tar命令解压,如:
tar -zxvf jdk-8u161-linux-x64.tar.gz