当本地内存不足时,可以使用虚拟内存将一些内存数据转移到硬盘上,从而扩展计算机的内存容量。这样可以让计算机运行更复杂、更占用内存的程序,不会出现内存不足的情况。减轻物理存储器不足的压力,设置虚拟内存可以在内存不够的情况下将缓存一时放在硬盘上,解决内存不足问题。

通过虚拟内存,操作系统可以将应用程序使用的内存空间转换为虚拟地址,从而允许应用程序访问不在物理内存中的数据。这样可以避免因为内存不足而导致系统性能下降的情况。虚拟内存可以及时从物理内存中调出数据放到虚拟内存空间中,以便在高负载情况下释放内存空间,提升程序的运行速度。

设置步骤如下

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker

 

2、虚拟机在安装时CPU、内存、硬盘的参数设置

处理器核心数量:12核的处理器有12个核心,而16核的处理器有16个核心,核心数量的增加可以提高处理器的并行计算能力,从而能够更快地处理大量的数据和复杂的任务。

性能表现:由于电脑的处理器是计算任务的核心,因此处理器性能的提高可以显著提高电脑的整体性能。由于16核处理器的处理能力更强大,因此在计算密集型应用程序中,16核相比12核的处理器会有更快的速度和更好的性能表现。

计划构建3个虚拟化的集群,因此至少设置CPU的内核总数为4,此处根据自己电脑性能来自行设置,为了提高性能,我此处将设置16核

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_02

 

 

虚拟机内存设置至少8个G,可根据自己电脑配置设置,由于我电脑内存是64G,我这里给虚拟机分配设置16G内存

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_03

 

8个G的内存,建议虚拟机的磁盘空间设置为50G

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_04

 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_05

 

系统分区设置

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_06

 设置静态ip地址

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_07

虚拟机配置阿里镜像

使用wget从指定的路径下载镜像文件

[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_08

 

更新虚拟机上的软件包,更新过程中有两次输入y,总更新文件数625个,所以如果你虚拟硬盘空间不够,就先别操作了

注意:

yum update是yum命令的一个选项,用于更新系统中的所有已安装的软件包到最新版本。

当执行yum update命令时,yum会先检查可用的软件包,确定哪些软件包需要更新,并将它们的最新版本下载到系统中。这个过程中,yum会自动检查所有软件包的依赖关系,并在必要时同时更新依赖关系。更新完成后,yum还会重新配置系统中的软件包,以确保它们都能够正常工作。

yum update的底层原理是基于yum的软件包仓库的工作原理,yum会从远程的yum软件包仓库中获取软件包的信息,包括软件包的版本、依赖关系等,并与本地系统上已安装的软件包进行比较,确定需要更新哪些软件包。更新软件包的过程中,yum会在本地缓存中保存软件包,以便在需要时再次使用,以减少下载时间和网络流量。

yum update的好处是可以方便地更新所有已安装的软件包,以保证系统的安全性和稳定性。但需要注意的是,更新软件包可能会带来一些风险,例如更新后可能会出现兼容性问题,因此在更新之前最好备份系统或测试更新效果,以避免数据丢失或系统崩溃等问题。

[root@localhost ~]# yum update
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_09

 .......中间执行过程省略,625行太多了

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_10

 ......中间执行过程省略,625行太多了

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_11

 

3、安装Docker

先删除docker,执行以下脚本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_12

 docker的安装步骤参考我站内帖子的步骤,此处不在演示,链接如下:

 

4、拉取镜像

(1)搜索镜像hadoop的基础集群镜像

[root@localhost ~]# docker search hadoop-base
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_13

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_14

 

(2)拉取镜像hadoop-base镜像

[root@localhost ~]# docker pull bde2020/hadoop-base:2.0.0-hadoop3.2.1-java8
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_15

 

(3)拉取hadoop-namenode镜像

[root@localhost ~]# docker pull bde2020/hadoop-namenode:2.0.0-hadoop3.2.1-java8
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_16

 

(4)拉取hadoop-datanode镜像

[root@localhost ~]# docker pull bde2020/hadoop-datanode:2.0.0-hadoop3.2.1-java8
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_17

 

(5)拉取hadoop-resourcemanager镜像

[root@localhost ~]# docker pull bde2020/hadoop-resourcemanager:2.0.0-hadoop3.2.1-java8
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_18

 

(6)拉取hadoop-nodemanager镜像

[root@localhost ~]# docker pull bde2020/hadoop-nodemanager:2.0.0-hadoop3.2.1-java8
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_19

 

(7)拉取hadoop-historyserver镜像

[root@localhost ~]# docker pull bde2020/hadoop-historyserver:2.0.0-hadoop3.2.1-java8
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_20

 

 

5.运行容器

(1)指定docker内部网络

查看子网ip地址和网关地址

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_21

 

指定docker的桥接网络模式,docker网络是为了让容器和容器之前通信的

创建时最好指定容器端口号映射。10000端口为hiveserver端口,后面本地客户端要通过beeline连接hive使用,有其他组件要安装的话可以提前把端口都映射出来,毕竟后面容器运行后再添加端口还是有点麻烦的。

[root@localhost ~]# docker network create --driver=bridge --subnet=192.168.124.0/16  hadoop
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_22

 要删除构建的网络可以通过docker network rm 网络名称

 (2)建立Master容器

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_23

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_24

 退出容器指令:ctrl+d

进入容器:docker exec -it 容器名 bash

(3)建立Slave1容器

[root@localhost ~]# docker run -it --network hadoop -h Slave1 --name Slave1 bde2020/hadoop-base  bash
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_25

 

(4)建立Slave2容器

[root@localhost ~]# docker run -it --network hadoop -h Slave2 --name Slave2 bde2020/hadoop-base bash
  • 1.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_26

 

(5)查看所有构建的容器

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_27

 

(6)三台机器修改hosts

第一种脚本直接编辑方法:

[root@localhost ~]# vim /etc/hosts

//修改为以下格式
192.168.124.3    Master
192.168.124.4    Slave1
192.168.124.5    Slave2
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_28

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_29

 

第二种finalshell快捷工具编辑模式:

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_30

 提示:每个容器的ip都需要通过命令ifconfig查看,或者在创建的时候通过‘ --ip ’指定ip地址

 (7)查看运行中的容器

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_31

 由于容器是退出状态,没有启动,因此我们可以先启动容器

 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_32

 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_33

 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_34

 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_java_35

 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_36

 

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_docker_37

【1】基于docker搭建hadoop+hive+spark+hbase+zookeeper+scale集群_hadoop_38

 

 

(8) 启动容器