先看下效果
mac上用vbox 6.0搭建基于Ubuntu 18.04的3台虚拟机,并在虚拟机上安装jdk,设置静态ip,各个虚拟机之间配置ssh免密登录等,windows大同小异。
网上下载,一步一步安装就行,很简单,不多说
下载最新的Ubuntu Server长期支持镜像ubuntu-18.04.3-live-server-amd64.iso。
新建虚拟机,选择镜像,一步一步默认就行了,我输入的虚拟机名为Ubuntu0,用户名为hadoop,虚拟机的服务名为hadoop0,大家可以任意,只要符合命名规则就好,设置网络方式为桥接方式,虚拟机通过宿主机器上网,宿主机器也能在网络中识别虚拟机:
启动用hadoop用户进入系统。
可以直接在虚拟机里面下载,但是网速慢,我在外面通过迅雷等工具下载好,然后共享到虚拟机来安装。
在本地新建一个目录vmshare,在vbox里面映射到虚拟机。点击设置–>共享文件夹,点击最右边的加号图标,路径为刚建立的目录vmshare,如下:
不要自动挂载,我们手动挂载。
配置好了共享目录,还需要安装增强功能才能实现共享,启动虚拟机,点击如下菜单安装:
如果没有任何报错,那就成功安装了,我出现了如下报错:
Could not mount the media/drive ‘/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso’ (VERR_PDM_MEDIA_LOCKED)
解决方案:进入虚拟机,执行以下命令:
sudo apt-get install virtualbox-guest-utils
一样的效果。
进入虚拟机,新建一个映射目录:/media/cdrom,我们将共享目录映射到这个目录:
sudo mount -t vboxsf vmshare /media/cdrom
我们在共享目录里面放的东西,就可以在看到了:
我在共享目录放了一个jdk8,在虚拟机可以看到了,后面我们直接把该jdk给安装。
我们安装集群,ip老变不行,我们给虚拟机设置静态ip,执行下面的命令:
sudo vim /etc/netplan/50-cloud-init.yaml
修改成如下:
network:
ethernets:
enp0s3:
dhcp4: false
addresses: [192.168.1.102/24]
gateway4: 192.168.1.1
nameservers:
addresses: [192.168.1.1]
version: 2
启用配置文件:
sudo netplan apply
或是是重新启动,我们ping一下,应该可以了。
这个很简单,做过java开发的,应该都配置过
sudo tar xvf ~/Downloads/jdk-8u221-linux-x64.tar.gz -C /usr/local/java
sudo vim ~/.bashrc
在末尾添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_221
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
重新登录下,或者新开一个窗口,用java -version看下效果。
配置好了一个,没必要每个都这样配置,我们可以使用vbox的clone或者复制功能,需要先关闭虚拟机,右击复制,输入名字,mac地址设定:为所有网卡重新生成MAC地址,其他根据需要选择,使用默认也可以。
这样clone的主机名都一样,我们修改下:
sudo vim /etc/hostname
分别为:hadoop1,hadoop2
设置静态ip,只需要将上面第一台机器的ip最后一位修改为103,104即可。
设置主机名跟ip的映射:
sudo vim /etc/hosts
添加:
192.168.1.104 hadoop2
192.168.1.103 hadoop1
192.168.1.102 hadoop0
127.0.0.1也改成相应的服务名,另外一台机器执行同样的操作。切记,只保留这几个,其他不相关的删掉,不然后面会有问题。
进入用户目录/home/hadoop/.ssh,执行
ssh-keygen -t rsa
一路回车下去,直至完成。
每台机器都执行相同的操作,下面把这三台虚拟机相互交换相互交换。
现在我们让hadoop0上的密钥复制到其他两台机器上去:
scp ~/.ssh/id_rsa.pub hadoop@hadoop1:/home/hadoop/.ssh/id_rsa.pub.UB01
scp ~/.ssh/id_rsa.pub hadoop@hadoop2:/home/hadoop/.ssh/id_rsa.pub.UB01
另外两台机器执行类似的操作,注意后面的文件名:
hadoop01
scp ~/.ssh/id_rsa.pub hadoop@hadoop0:/home/hadoop/.ssh/id_rsa.pub.UB02
scp ~/.ssh/id_rsa.pub hadoop@hadoop2:/home/hadoop/.ssh/id_rsa.pub.UB02
hadoop01
scp ~/.ssh/id_rsa.pub hadoop@hadoop1:/home/hadoop/.ssh/id_rsa.pub.UB03
scp ~/.ssh/id_rsa.pub hadoop@hadoop0:/home/hadoop/.ssh/id_rsa.pub.UB03
把自己的密钥连同别人的两个密钥加到授权密钥中:
cat id_rsa.pub >> authorized_keys;
cat id_rsa.pub.UB01 >> authorized_keys;
cat id_rsa.pub.UB02 >> authorized_keys;
另外两台机器执行类似的操作,注意后面的文件名。
这样三台机器互相就配好了,通过ssh hadoop1可以连过去。
伪分布式集群已经建好,相关的基础软件也装好,还是有很多点要注意,像共享目录和静态ip的配置,都找了不少资料,花了不少时间,下一步,安装hadoop集群。