【教程】集群搭建准备工作全流程

news2025/1/31 2:55:04

基于VMware创建虚拟机进行集群搭建,适用于hadoop/GreenPlum等集群

之前已经创建了三台虚拟机hadoop102,hadoop103,hadoop104来搭建hadoop集群,因为目前学习到了greemplum,因此新建三台虚拟机hadoop105,hadoop106,hadoop107来搭建greenplum集群,整体思路流程大致如下

(仅包括虚拟机创建以及环境配置内容,不包括hadoop、greenplum的具体安装使用)

1.VMware安装(Windows)

1.1下载(Workstation 17 Pro)

VMware官网下载:下载 VMware Workstation Pro | CN

可以看到当前最新的版本是VMware 17;

向下拖动页面可以看到下载链接,这里我们选择下载Workstation 17 Pro for Windows,点击即可启动下载

下载完成:


如果想要下载其他版本的VMware WorkStation,可以到以下链接下载:

https://customerconnect.vmware.com/cn/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/17_0

1.2安装

双击安装包进行安装,安装之前会弹出:

需要等待准备完成;


1.2.1开始安装

点击下一步

1.2.2 同意许可协议

同意许可协议,点击下一步

1.2.3 自定义安装

点击下一步

1.2.4 用户体验设置

建议不勾选,否则每次打开VMware时,如果有更新都会进行提示;

点击下一步

1.2.5 创建快捷方式

建议都勾选,方便使用

点击下一步

1.2.6 开始安装/升级

由于电脑上已经安装过VMware,因此这里会提示【准备升级】,点击【升级】即可

如果之前没有安装过,下方的提示按钮应该是【安装】,点击即可

1.2.7 正在安装

(安装过程中建议不要进行任何操作)

等待安装完成即可

1.2.8 安装完成

点击完成

1.2.9 重新启动系统

如果有这个提示的话:

点击【是】重新启动即可,或者点击【否】,然后手动重启电脑

1.2.10 输入许可证密钥

VMware安装完成后双击打开

如果在安装过程中没有输入【许可证密钥】的话会提示输入(由于我在之前的版本中已经输入过,所以没有跳出提示)

如果没有提示的话可以在【帮助】——【输入许可证密钥】中打开页面:

输入之后如果错误的话会提示密钥无效:

如果正确的话则【输入许可证密钥】的窗口会直接关闭,此时我们就可以使用了;

2.自定义模板虚拟机

模板虚拟机配置:每台4核、8G内存、50G硬盘

2.1 新建虚拟机

2.1.1 创建新的虚拟机

在【主页】选择【创建新的虚拟机】

2.1.2 自定义虚拟机配置

选择【自定义】,点击下一步

2.1.3 选择硬件兼容性

保持默认配置即可,点击下一步;

2.1.4 选择虚拟机操作系统

如果之前创建过虚拟机,在【程序光盘映像文件】这里会有选择好的iso文件,可以直接选择;

如上,可以检测到操作系统类型;

如果是第一次安装建议选择【稍后安装操作系统】,然后点击下一步;

2.1.5 选择虚拟机将要安装的操作系统

因为上一步中没有安装操作系统,因此我们需要选择将来要安装的操作系统类型:

这里选择Linux操作系统,版本为CentOS 7,点击下一步;

2.1.6命名虚拟机并选择安装位置

虚拟机名称可以自定义,这里我们首选创建的是【模板虚拟机】,将来会基于该虚拟机来创建集群中的机器,因此起名为【hadoopBase】;

然后点击下一步

2.1.7 选择CPU个数

CPU个数不能超过物理机的CPU个数;原则是可以选满,也就是物理机CPU个数是几个,虚拟机CPU个数就选几个;

查看物理机CPU个数

【ctrl+shift+esc】打开【任务管理器】,选择【性能】:

打开【资源监视器】:

可以看到CPU从0-7,因此物理机CPU个数为8;

其实从【性能】中也能确定CPU的个数:

这里显示有4个内核,8个逻辑处理器,4核代表了物理机时机的处理器个数,而逻辑上可以将一个核分为两个处理器,有多少个逻辑处理器就能开多少个线程;

设置虚拟机CPU个数

原则上可以设置8个CPU,这里统一设置为4核即可:

2.1.8 设置虚拟机内存

内存设置为【8G】

2.1.9 选择虚拟机网络类型

选择NAT的方式,比较安全;

2.1.10 选择文件系统对应的I/O控制器类型

默认按照推荐的选择即可;

BusLogic(U):是VMware提供的并行SCSI控制器,推荐用于支持原生准虚拟化I/O功能的主机

LSI Logic(L):是由LSI Logic公司生产的并行SCSI控制器。

LSI Logic SAS(S):是由LSI Logic公司生产的SAS(Serial Attached SCSI)控制器,SAS是一种高速数据传输技术,可以提供比传统并行SCSI更高的性能。

准虚拟化 SCSI(P):是一种由VMware提供的虚拟SCSI控制器,它可以提高虚拟机访问其映射的物理SCSI设备的性能

2.1.11 选择磁盘类型

默认按照推荐的选择即可;

IDE(I):是一种基于软件的虚拟磁盘技术,它通过在主机上创建一个或多个虚拟磁盘来模拟物理磁盘;这种类型的虚拟磁盘通常用于测试和开发环境,因为它可以提供与物理磁盘相同的性能和功能。

SCSI(S):是一种高速数据传输协议,它允许多个设备共享同一总线;SCSI虚拟磁盘通常用于服务器和大型存储系统,因为它们需要大量的存储空间和高性能

SATA(A):是一种基于串行连接技术的存储接口,它提供了比传统的并行连接技术更快的数据传输速度;SATA虚拟磁盘通常用于个人计算机和笔记本电脑,因为它们需要较小的存储空间和较低的成本

NVMe(V):是一种新兴的非易失性存储器介质,它提供了比传统的硬盘驱动器更快的读写速度和更低的能耗;NVMe虚拟磁盘通常用于高端服务器和数据中心,因为它们需要更高的性能和可靠性

2.1.12 选择磁盘

选择【创建新虚拟磁盘】,方便后续使用

2.1.13 选择磁盘容量

磁盘容量设置为50GB,方便安装大量软件来搭建集群;

选择【将虚拟磁盘拆分成多个文件】,方便虚拟机的移动;

2.1.14 选择磁盘文件的存放位置

找到之前设置的虚拟机安装路径,并存放进去;

2.1.15 虚拟机配置完毕

点击【完成】即可,如果有需要修改的可以上一步返回,或选择【自定义硬件】:

2.2 安装操作系统

在在安装系统之前需要检查虚拟机的【bios虚拟化】是否打开:

【性能】中显示【虚拟化:已启用】说明已经打开,如果没有打开的话启动虚拟机会报错:

2.2.1 以CD/DVD的方式安装

选择【使用ISO映像文件】:

点击【确定】即可:

有关ISO文件的下载可以去官网找到对应的版本,进入其中的isos文件夹下载:Index of /

2.2.2 开始安装操作系统

点击【开启此虚拟机】开始安装操作系统:

上下移动选择【Install CentOS 7】:

enter键开始安装;

注意:需要将鼠标光标定位到计算机中,按下【ctrl+alt】;需要定位到虚拟机中,按下【ctrl+G】;

然后等待完成即可:

2.2.3 选择使用的语言

这里选择简体中文;点击【继续】

2.2.4 配置日期和时间

点击【日期和时间】:

进入以下页面,调整时间差:

2.2.5 配置软件信息

进入以下界面,选择【最小安装】:

2.2.6 配置磁盘分区

进入以下界面:

选择【我要配置分区】,点击【完成】;然后进入【手动分区】界面:

选择【标准分区】,点击【+】进行分区配置:

分别添加boot区、swap交换分区以及根目录,最终配置如下:

/boot分区和根目录的文件系统都需要修改为ext4

各文件系统简单介绍:

  1. xfs:XFS是一种高性能的日志文件系统,适用于大型文件和高并发访问场景。它具有良好的可扩展性、高速读写性能和较低的延迟。
  2. ext4:ext4是Linux系统中最常用的文件系统之一,它是ext3的升级版,具有更高的性能和更多的功能。ext4支持更大的文件系统大小、更快的文件删除速度、更好的日志管理等。
  3. ext3:ext3是Linux系统中另一种常用的文件系统,它是ext2的升级版,引入了日志功能,提高了数据完整性和容错能力。但相较于ext4,ext3的性能和功能有所限制。
  4. ext2:ext2是Linux系统中最早的日志文件系统,它具有简单、稳定和兼容性好的特点。但由于其设计年代较早,性能和功能上已经无法满足现代需求,逐渐被ext3和ext4取代。
  5. vfat:vfat(虚拟文件分配表)是一种Windows和Linux都兼容的文件系统,主要用于FAT文件系统的兼容性。它支持长文件名、大文件和小文件存储,但性能和安全性相对较低。
  6. swap:swap(交换分区)是Linux系统中用于内存交换的空间,当物理内存不足时,系统会将部分不常用的内存数据暂时存储到swap分区中,以释放物理内存供其他进程使用。swap分区通常使用swap文件或swap设备来实现。

配置完成后点击左上角【完成】:

点击【接受更改】:

2.2.7 配置KDUMP

点击进入以下界面:

选择禁用KDUMP,节省内存(如果内存充足的话完全可以选择启用)

2.2.8 配置网络和主机名

点击进入以下界面:

主机名根据自己的喜好以及集群功能来定义;

2.2.9 开始安装

安装过程中可以进行root密码设置/用户创建等操作

设置root密码(必需)

进入以下界面:

输入密码,如果太弱的话点击两次【完成】即可

之后等待操作系统安装完成即可;

2.2.10 安装完成

安装完成后重启虚拟机,就可以开始使用了;

重启需要一段时间,耐心等待即可

如上,用户名为root,密码为上面设置的root密码,输入之后即可使用虚拟机

2.3 网络配置

操作系统安装完成后进入网络配置环节,关闭正在运行的虚拟机【hadoopBase】

2.3.1 VMware网络配置

点击【编辑】—【虚拟网络编辑器】:

点击【更改设置】

选中【VMnet8】

(VMnet8是虚拟机使用NAT模式上网的网卡)

将【子网IP】和【子网编码】修改为如图所示:

然后点击【NAT设置】:

修改【网关ip】为如图所示;

之后点击确认即可,VMware网络配置完成;

2.3.2 Windows网络配置

以windows10系统为例:

右键单击:

打开“网络和Internet设置”:

选择【更改适配器选项】:

双击打开【VMnet8】:

选择【属性】:

双击修改【IPv4】:

设置ip地址如图所示,修改子网掩码和默认网关与VMware网络配置一致;

2.4 虚拟机IP修改

启动虚拟机【hadoopBase】,然后修改网络IP地址为静态IP地址,避免IP地址经常变化,从而方便节点服务器间的互相通信;

(1)执行指令:vi /etc/sysconfig/network-scripts/ifcfg-ens33(默认没有安装vim,如想要使用可以通过yum install vim -y安装)

初始内容如下:

(2)首先修改BOOTPROTO="dhcp"BOOTPROTO="static",将网络IP修改为静态地址

BOOTPROTO可选项:[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)

(3)在最下方新增:

#IP地址
IPADDR=192.168.10.100  
#网关  
GATEWAY=192.168.10.2    
#域名解析器
DNS1=192.168.10.2

修改后内容如下:

(4)执行systemctl restart network命令,重启网络服务

(5)执行ifconfig指令,查看当前IP(如果报错-bash:ifconfig:command not found,则执行yum install net-tools -y安装即可)

可以看到IP修改成功:

至此可以在通过远程终端连接虚拟机了;接下来安装远程终端Xshell以及文件传输工具Xftp

3.Xshell和Xftp的安装配置

3.1安装

安装流程以及常见问题参考:

解决Xshell安装时错误代码-1603的问题_安装xshell报错1603-CSDN博客

3.2 简单使用

3.2.1 创建远程连接

填写名称和主机IP:

填写用户名和密码:

点击【连接】,第一次连接时会出现安全警告:

选择【接受并保存】即可连接成功;

3.2.2 文件传输系统

单击即可打开文件传输系统:

4.模板虚拟机环境配置

(1)确保可以上网(yum安装需要联网):ping www.baidu.com

(2)安装epel-release:yum install -y epel-release

Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)

(3)安装其他工具(因为虚拟机的操作系统配置时软件信息选择的是【最小安装】,如果不是的话跳过该步骤):yum install -y vim net-tools psmisc nc rsync lrzsz ntp libzstd openssl-static tree iotop git

(4)关闭防火墙:systemctl stop firewalldsystemctl disable firewalld.service

(5)创建组及用户gpadmin(以greemplum集群为例,hadoop集群同理):

创建组:groupadd gpadmin

创建用户:useradd gpadmin -r -m -g gpadmin(指定组)

参考:https://www.runoob.com/linux/linux-comm-useradd.html

创建密码:passwd gpadmin

(6)给用户添加root权限:vim /etc/sudoers

添加:gpadmin ALL=(ALL) NOPASSWD:ALL

(7)在/opt目录下创建文件夹,并修改所属主和所属组

module目录:安装软件——mkdir /opt/module

software目录:存放安装包——mkdir /opt/software

修改所属主和所属组:chown gpadmin:gpadmin /opt/modulechown gpadmin:gpadmin /opt/software

(8)卸载虚拟机自带的JDK(如果是【最小安装】可省略该步骤):rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

rpm -qa:查询所安装的所有rpm软件包

grep -i:忽略大小写

xargs -n1:表示每次只传递一个参数

rpm -e –nodeps:强制卸载软件

(9)设置模板虚拟机主机映射:vim /etc/hosts,输入以下内容:

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

(10)修改windows的主机映射文件:

进入C:\Windows\System32\drivers\etc,拷贝hosts文件到桌面,打开之后添加以下内容:

192.168.10.100 hadoop100
192.168.10.101 hadoop101
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104
192.168.10.105 hadoop105
192.168.10.106 hadoop106
192.168.10.107 hadoop107
192.168.10.108 hadoop108

然后将桌面上的hosts文件覆盖C:\Windows\System32\drivers\etc路径下的hosts文件即可;

这样我们在浏览器中就能识别hadoop102代表的IP为192.168.10.102

(11)reboot重启虚拟机

5.克隆虚拟机

5.1 虚拟机克隆流程

按照需要克隆虚拟机,这里我们克隆三台虚拟机(每台4核、8G内存、50G存储):hadoop105,hadoop106,hadoop107

首先需要关闭虚拟机hadoop100;

在VMware中右键单击虚拟机【hadoop100】,然后选择【克隆】:

进入克隆流程:

点击下一页:

选择克隆自【虚拟机中当前状态】,点击下一页:

选择【创建完整克隆】,点击下一页:

填写虚拟机名称并选择位置,点击【完成】开始克隆:

等待克隆完成即可:

点击【关闭】,完成克隆

重复操作以上步骤,完成hadoop105、106、107的创建

5.2 虚拟机环境配置

对克隆出的虚拟机hadoop105、106、107进行环境配置

以下均以hadoop105为例

5.2.1 修改静态IP

执行指令:vim /etc/sysconfig/network-scripts/ifcfg-ens33

192.168.10.100修改为192.168.10.105即可

对hadoop106,hadoop107执行相同的操作

5.2.2 修改主机名

执行指令:sudo vim /etc/hostname

分别将主机名修改为hadoop105,hadoop106,hadoop107

然后保存并重启虚拟机即可

5.2.3 配置SSH免密登录

以hadoop105为例

(1)ssh-keygen -t rsa生成密钥文件和私钥文件:

连续点击三次enter,密钥生成完毕:

(2)ssh-copy-id 目标机器:将公钥复制到目标机器的授权文件(authorized_keys)中

ssh-copy-id hadoop105 #为了能切换回hadoop105
ssh-copy-id hadoop106
ssh-copy-id hadoop107

直接将id_rsa.pub复制到authorized_keys中也能生效

如下,可随意切换说明免密登录配置成功

hadoop106,hadoop107重复以上步骤即可


如何查看公钥私钥以及授权文件:

cd ~/.ssh:进入.ssh文件夹(必须先生成密钥才有该文件夹)

.ssh的内容:

5.2.4 时钟同步

执行命令:sudo ntpdate cn.pool.ntp.org

如上说明时钟同步成功


至此,我们通过模板虚拟机完成了集群虚拟机的创建以及环境配置,接下来可以根据自身需求搭建具体的集群了!

欢迎大家讨论交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1392410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

选择安全数据交换系统时 要考虑哪些因素?

安全数据交换系统是一种专门设计用于在不同的网络环境(如内部不同网络,内部网络和外部网络)之间安全传输数据的解决方案。它通常包括一系列的技术和流程,旨在确保数据在传输过程中的完整性、机密性和可用性。 安全数据交换系统可以…

乐意购项目前端开发 #4

一、Home页面组件结构 结构拆分 创建组件 在 views/Home 目录下创建component 目录, 然后在该目录下创建5个组件: 左侧分类(HomeCategory.vue)、Banner(HomeBanner.vue)、精选商品(HomeHot.vue)、低价商品(Homecheap.vue)、最新上架(HomeNew.vue) 引用组件 修改 views/Home…

【计算机网络】网络层——详解IP协议

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 目录 🐱一、I…

django rest_framework 部署doc文档

1.背景 在实际开发过程中,前后端分离的项目,是需要将一份完整的接口文档交付给前端开发人员,这样有利于开发速度和开发质量,以及有可能减少协同时间。 2.内容 本项目是以Pythondjangorest_framework作为技术框架,在这…

使用muduo库编写网络server端

muduo库源码编译安装和环境搭建 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 #include<iostream> #include<muduo/net/TcpServer.h> #include<muduo/net/EventLoop.h> using namespace std; using namespace muduo; using name…

【MapReduce】对员工数据按照部门分区并对每个分区排序

员工信息全部存储在emp.csv文件中&#xff0c;员工的属性有&#xff1a;员工id、名称、职位、领导id、雇佣时间、工资、奖金、部门号。 在MapReduce中想要使用员工的信息&#xff0c;需要对员工进行序列化处理。因为MapReduce是一个分布式框架数据会在不同节点之间进行传输&…

用原型实现Class的各项语法

本人之前对Class一直不够重视。平时对原型的使用&#xff0c;也仅限于在构造函数的prototype上挂属性。原型尚且用不着&#xff0c;更何况你Class只是原型的一颗语法糖&#xff1f; 直到公司开始了一个webgis项目&#xff0c;使用openlayers。看了下openlayers的代码&#xff0…

Recv设置MSG_DONTWAIT依然阻塞

服务器上有如下代码&#xff1a; bool recv_handler(connection_t &connection){int fd connection.get_fd();char temp_buffer[2048];while (true){// 清空缓冲区bzero(temp_buffer, 2048);// 设置非阻塞标志MSG_DONTWAITssize_t recv_ret recv(fd, temp_buffer, 2048, …

RabbitMQ常见问题之消息堆积

文章目录 一、介绍二、使用惰性队列1. 基于Bean2. 基于RabbitListener 一、介绍 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。最 早接收到的消息&#xff0c;可能就会成为死信&#xff0c;会被丢弃&#xff0c;这就…

CSS 超可爱的眼睛转动效果

<template><view class="content"><view class="loader"></view></view> </template><script></script><style>body {background-color: #212121;/* 设置背景颜色为深灰色 */}.content {display: f…

2024中国光伏展

2024年中国光伏展预计将是一个规模庞大的展览&#xff0c;吸引了全球光伏行业的专业人士和企业参与。光伏展将为各个光伏领域的企业提供一个展示最新技术、产品和解决方案的平台。 在2024年的中国光伏展上&#xff0c;参展企业将能够展示他们的光伏组件、太阳能电池板、逆变器、…

MyBatisPlus学习笔记三-核心功能

接上篇&#xff1a; MyBatisPlus学习笔记二-CSDN博客 1、核心功能-IService开发基础业务接口 1.1、介绍 1.2、引用依赖 1.3、配置文件 1.4、用例-新增 1.5、用例-删除 1.6、用例-根据id查询 1.7、用例-根据ids查询 2、核心功能-IService开发复杂业务接口 2.1、实例-更新 3、…

寒假已开启,你的毕业论文写到哪了?

先来看1分钟的视频&#xff0c;对于要写论文的你来说&#xff0c;绝对有所值&#xff01; 还在为写论文焦虑&#xff1f;免费AI写作大师来帮你三步搞定 体验免费智元兔AI写作&#xff1a;智元兔AI 第一步&#xff1a;输入关键信息 第二步&#xff1a;生成大纲 稍等片刻后&…

还不会装箱与拆箱?!看这篇,你正在变强!!

定义 装箱与拆箱允许程序员在基本数据类型和相应的包装类之间自动转换。 装箱指的是基本类型的值包装在包装类的对象中。例如&#xff0c;将int类型的值包装在一个Integer对象中。 拆箱则是相反的过程&#xff0c;将包装类的对象转换为基本类型的值。 手动和自动的装拆箱 装…

B端产品经理学习-版本规划管理

首先我们回顾一下用户故事&#xff0c;用户故事有如下特点&#xff1a; PRD文档的特点则如下&#xff1a; B端产品中用户角色不同&#xff0c;需求侧重也不同 决策人——公司战略需求&#xff1a;转型升级、降本增效、品牌提升等 管理负责人——公司管理需求&#xff1a;提升…

❤ Uniapp使用三( 打包和发布上线)

❤ Uniapp使用三( 打包和发布上线) 一、介绍 什么是 uniapp&#xff1f; uniapp 是一种基于 Vue.js 的多平台开发框架&#xff0c;它可以同时用于开发安卓、iOS、H5 等多个平台。因此&#xff0c;只需要写一次代码就可以在多个平台上运行&#xff0c;提高了开发效率。 打包…

球幕影院气膜:未来娱乐的奇妙之旅

球幕影院气膜&#xff1a;未来娱乐的奇妙之旅 在科技日新月异的时代&#xff0c;娱乐体验的创新与演变从未停歇。气膜球幕影院&#xff0c;作为一项领航未来的前沿科技&#xff0c;正以其沉浸感和颠覆性的观影体验&#xff0c;吸引着人们驻足体验。 创新科技的巅峰之作 气膜球幕…

轻松识别Midjourney等AI生成图片,开源GenImage

AIGC时代&#xff0c;人人都可以使用Midjourney、Stable Diffusion等AI产品生成高质量图片&#xff0c;其逼真程度肉眼难以区分真假。这种虚假照片有时会对社会产生不良影响&#xff0c;例如&#xff0c;生成公众人物不雅图片用于散播谣言&#xff1b;合成虚假图片用于金融欺诈…

好消息,Linux Kernel 6.7正式发布!

据有关资料显示&#xff0c;该版本是有史以来合并数最多的版本之一&#xff0c;包含 17k 个非合并 commit&#xff0c;实际合并的超过1K个。 那么该版本主要有哪边变化呢&#xff1f;下面我来一一列举一下&#xff1a; Bcachefs文件系统已被合并到主线内核&#xff0c;这是一款…

springboot第49集:【思维导图】多线程,常用类与基础API,集合框架,泛型,数据结构源码...

多线程创建方式一&#xff1a;继承Thread类多线程创建方式二&#xff1a;实现Runnable接口jdk5.0新增两种创建多线程的方式 image.png image.png image.png image.png image.png new Thread(new Runnable() {public void run() {for (int i 1; i < 100; i) {if (i % 2 0) …