Hadoop学习(1)Hadoop2.9.1完全分布式环境搭建和测试

2024-05-12 17:32

本文主要是介绍Hadoop学习(1)Hadoop2.9.1完全分布式环境搭建和测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

参考:

1. 安装前节点环境准备

1.1修改主机名(所有节点,以master节点为例):

1.2关闭防火墙和selinux(所有节点,以master节点为例):

2. 安装前系统环境准备

2.1 安装jdk(所有节点,以master节点为例)

2.2 创建hadoop用户(所有节点,以master节点为例)

2.3 hosts文件设置(所有节点,以master节点为例)

2.4 配置SSH免密码登录(所有节点,以master节点为例)

3. 安装Hadoop和配置Hadoop

3.1 下载安装包hadoop-2.9.1.tar.gz(master节点)

3.2 解压安装包hadoop-2.9.1.tar.gz(master节点)

3.3 master节点配置(master节点)

3.3.1 环境变量配置

3.3.2 配置core-site.xml

3.3.3 配置hdfs-site.xml

3.3.4 配置mapred-site.xml

3.3.5 配置yarn-site.xml

3.3.6 配置slaves

3.4 slave节点配置(在所有slave节点,以slave1为例)

3.5 Hadoop环境变量配置(所有节点,以master节点为例)

4. 初始化Hadoop(master节点)

5. 启动Hadoop

5.1 启动HDFS(HDFS集群的任何节点都可以)

5.2 启动YARN(在YARN主节点ResourceManager上执行)

6. 查看4台服务器的进程

7. 查看HDFS和YARN的Web管理界面

8. Hadoop的简单测试及使用

8.1 HDFS的简单使用测试

8.2 运行第一个Map Reduce的例子程序:wordcount

8.3 运行例子程序:求圆周率


参考:

https://www.cnblogs.com/qingyunzong/p/8496127.html#_label3_2

https://www.cnblogs.com/pcxie/p/7747317.html

https://blog.csdn.net/fanxin_i/article/details/80425461

1. 安装前节点环境准备

4节点均为virt-manager创建的CentOS7(英文版)的虚拟机,如下将每个节点yum源均更新为最新:

[root@localhost ~]# yum update -y[root@localhost ~]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)

节点IP

主机名

配置

10.10.129.210

master

OS:CentOS Linux release

7.5.1804 (Core)

CPU:3核

内存:4G

磁盘:30G

 

10.10.129.211

slave1

10.10.129.212

slave2

10.10.129.213

slave3

Hadoop集群中各个角色的名称:

服务

主节点

从节点

HDFS

NameNode

DataNode

YARN

ResourceManager

NodeManager

HDFS角色分配:

节点IP

主机名

HDFS角色

10.10.129.210

master

 datanode;namenode

10.10.129.211

slave1

 datanode;

10.10.129.212

slave2

datanode;secondarynamenode

10.10.129.213

slave3

 datanode;

YARN角色分配:

节点IP

主机名

YARN角色

10.10.129.210

master

 nodemanager;

10.10.129.211

slave1

 nodemanager;

10.10.129.212

slave2

nodemanager

10.10.129.213

slave3

 nodemanager;resourcemanager

1.1修改主机名(所有节点,以master节点为例):

在centos7特地添加了hostnamectl命令查看,修改主机名使用hostnamectl set-hostname 命令修改主机名,可永久生效,新连接主机即可看到主机名发生了改变

[root@localhost~]# hostnamectl set-hostname master

断开重连:

其他节点也分别更名为:slave1,slave2,slave3

1.2关闭防火墙和selinux(所有节点,以master节点为例):

[root@master~]# systemctl disable firewalld[root@master~]# systemctl stop firewalld

关闭selinux,永久生效是修改/etc/sysconfig/selinux或者/etc/selinux/config配置文件然后需要重启机器:

[root@master~]# vim /etc/sysconfig/selinux

然后重启机器使其永久生效reboot -h

重启后检查selinux状态是否真的关闭:

[root@master ~]# sestatus

2. 安装前系统环境准备

2.1 安装jdk(所有节点,以master点为例

一般linux自带的jdk或者是通过yum安装的jdk都是openjdk,但是最好是使用oracle/sun jdk,前者是开源的,缺失部分功能,后者是官方的。但是如果直接安装oracle的jdk,第三方的依赖包不会安装,所以最有效的额方式是通过yum安装openjdk,并同时安装了第三方依赖包,然后卸载openjdk,通过自己来安装oracle的jdk,就能解决依赖问题。 

[root@master~]# yum install -y java[root@master~]# rpm -qa|grep java

[root@master ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64[root@master ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_64

安装解压版JDK,先到oracle sun官网下载jdk-8u181-linux-x64.rpm ,再执行下面命令安装:

[root@master ~]# rpm -ivh jdk-8u181-linux-x64.rpm

检查是否安装成功:

[root@master ~]# java -version

java默认安装目录为:/usr/java/jdk1.8.0_181-amd64(后面配置JAVA_HOME用得着)

2.2 创建hadoop用户(所有节点,以master节点为例

[root@master ~]# useradd -m hadoop

为hadoop用户添加密码:

[root@master ~]# passwd hadoopChanging password for user hadoop.New password:BAD PASSWORD: The password is shorter than 8 charactersRetype new password:passwd: all authentication tokens updated successfully.

为hadoop用户添加root权限:

[root@master ~]# vim /etc/sudoers

在root ALL=(ALL) ALL行下面添加:

hadoop ALL=(ALL) ALL,保存退出

2.3 hosts文件设置(所有节点,以master节点为例

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

检查是否识别域名:

 

2.4 配置SSH免密码登录所有节点,以master点为例

master节点为例:

使用hadoop用户

[root@master ~]# su hadoop[hadoop@master root]$ cd ~[hadoop@master ~]$ pwd/home/hadoop

[hadoop@master~]# ssh-keygen(执行以下命令然后一路回车):

[hadoop@master~]# ssh-keygen

复制key到各节点,注意不要漏掉自身节点:

[hadoop@master ~]# ssh-copy-id 10.10.129.200[hadoop@master ~]# ssh-copy-id 10.10.129.201[hadoop@master ~]# ssh-copy-id 10.10.129.202[hadoop@master ~]# ssh-copy-id 10.10.129.203

检查是否实现了无密码登录(此步骤不要省略,否则后面在执行start-dfs.sh和start-yarn.sh脚本时会出现无法认证的错误,因为正常免密登陆后所有的ssh第一次都需要密码,此后都不需要密码):

[hadoop@master ~]$ ssh master
按提示输入yes
[hadoop@master ~]$ exit
logout
Connection to master closed.[hadoop@master ~]$ ssh slave1
按提示输入yes
[hadoop@slave1 ~]$ exit
logout
Connection to slave1 closed.[hadoop@master ~]$ ssh slave2
按提示输入yes
[hadoop@slave2 ~]$ exit
logout
Connection to slave2 closed.[hadoop@master ~]$ ssh slave3
按提示输入yes
[hadoop@slave3 ~]$ exit
logout
Connection to slave3 closed.[hadoop@master ~]$

slave1节点为例:

使用hadoop用户

[root@slave1~]# su hadoop[hadoop@slave1root]$ cd ~[hadoop@slave1~]$ pwd/home/hadoop

[hadoop@slave1~]# ssh-keygen(执行以下命令然后一路回车):

[hadoop@slave1~]# ssh-keygen

复制key到各节点,注意不要漏掉自身节点:

[hadoop@slave1 ~]# ssh-copy-id 10.10.129.200[hadoop@slave1 ~]# ssh-copy-id 10.10.129.201[hadoop@slave1 ~]# ssh-copy-id 10.10.129.202[hadoop@slave1 ~]# ssh-copy-id 10.10.129.203

检查是否实现了无密码登录(此步骤不要省略,否则后面在执行start-dfs.sh和start-yarn.sh脚本时会出现无法认证的错误,因为正常免密登陆后所有的ssh第一次都需要密码,此后都不需要密码):

[hadoop@slave1 ~]$ ssh master
按提示输入yes
[hadoop@master ~]$ exit
logout
Connection to master closed.[hadoop@slave1 ~]$ ssh slave1
按提示输入yes
[hadoop@slave1 ~]$ exit
logout
Connection to slave1 closed.[hadoop@slave1 ~]$ ssh slave2
按提示输入yes
[hadoop@slave2 ~]$ exit
logout
Connection to slave2 closed.[hadoop@slave1 ~]$ ssh slave3
按提示输入yes
[hadoop@slave3 ~]$ exit
logout
Connection to slave3 closed.[hadoop@slave1 ~]$

slave2和slave3节点同slave1节点操作

3. 安装Hadoop和配置Hadoop

最好从这里开始就以hadoop用户操作,我实验时没有这样做,但发现后来反正都要把安装包改为hadoop权限(使用chown命令),因为我是以hadoop用户进行安装的

3.1 下载安装包hadoop-2.9.1.tar.gz(master节点

在官网https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gz处下载:

这个链接下载起来会更快:http://www-us.apache.org/dist/hadoop/common/hadoop-2.9.1/hadoop-2.9.1.tar.gz

[hadoop@master ~]$ ll
total 352892
-rw-r--r-- 1 hadoop hadoop 361355307 Sep 25 00:55 hadoop-2.9.1.tar.gz

注意这里安装包所属用户:-rw-r--r-- 1 hadoop hadoop

3.2 解压安装包hadoop-2.9.1.tar.gz(master节点

使用hadoop用户,创建安装目录:/home/hadoop/apps,创建数据目录:/home/hadoop/data:

[hadoop@master ~]$ pwd/home/hadoop[hadoop@master hadoop]# mkdir apps[hadoop@master hadoop]# mkdir data[hadoop@master ~]$ lsapps  data  hadoop-2.9.1.tar.gz

 

在apps文件夹下解压安装包:

[hadoop@master ~]$ cd apps/[hadoop@master apps]$ tar -zxvf ../hadoop-2.9.1.tar.gz
[hadoop@master apps]$ lshadoop-2.9.1

3.3 master节点配置(master节点

进入配置文件目录:/home/hadoop/apps/hadoop-2.9.1/etc/hadoop

3.3.1 环境变量配置

[hadoop@master hadoop]$ vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64

3.3.2 配置core-site.xml

fs.defaultFS : 这个属性用来指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口,也可以指定为一个namenode服务(这个服务内部可以有多台namenode实现ha的namenode服务。

hadoop.tmp.dir : hadoop集群在工作的时候存储的一些临时文件的目录。

[hadoop@master hadoop]$ vim core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/data/hadoopdata</value></property>
</configuration>

3.3.3 配置hdfs-site.xml

dfs.namenode.name.dir:namenode数据的存放地点。也就是namenode元数据存放的地方,记录了hdfs系统中文件的元数据。

dfs.datanode.data.dir: datanode数据的存放地点。也就是block块存放的目录了。

dfs.replication:hdfs的副本数设置。也就是上传一个文件,其分割为block块后,每个block的冗余副本个数,默认配置是3。

dfs.secondary.http.address:secondarynamenode 运行节点的信息,和 namenode 不同节点

HDFS角色分配:

节点IP

主机名

HDFS角色

10.10.129.210

master

 datanode;namenode

10.10.129.211

slave1

 datanode;

10.10.129.212

slave2

datanode;secondarynamenode

10.10.129.213

slave3

 datanode;

[hadoop@master hadoop]$ vim hdfs-site.xml
<configuration><property><name>dfs.namenode.name.dir</name><value>/home/hadoop/data/hadoopdata/name</value><description>为了保证元数据的安全一般配置多个不同目录</description></property><property><name>dfs.datanode.data.dir</name><value>/home/hadoop/data/hadoopdata/data</value><description>datanode 的数据存储目录</description></property><property>  <name>dfs.replication</name><value>2</value><description>HDFS 的数据块的副本存储个数, 默认是3</description></property><property><name>dfs.secondary.http.address</name><value>slave2:50090</value><description>secondarynamenode 运行节点的信息,和 namenode 不同节点</description></property>
</configuration>

3.3.4 配置mapred-site.xml

mapreduce.framework.name:指定mr框架为yarn方式,Hadoop二代MP也基于资源管理系统Yarn来运行 。

[hadoop@master hadoop]$ cp mapred-site.xml.template mapred-site.xml[hadoop@master hadoop]$ vim mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value>   </property>
</configuration>

3.3.5 配置yarn-site.xml

yarn.resourcemanager.hostname:yarn总管理器的IPC通讯地址

yarn.nodemanager.aux-services:YARN 集群为 MapReduce 程序提供的服务(常指定为 shuffle )

YARN角色分配:

节点IP

主机名

YARN角色

10.10.129.210

master

 nodemanager;

10.10.129.211

slave1

 nodemanager;

10.10.129.212

slave2

nodemanager

10.10.129.213

slave3

 nodemanager;resourcemanager

[hadoop@master hadoop]$ vim yarn-site.xml
<configuration><!-- Site specific YARN configuration properties --><property><name>yarn.resourcemanager.hostname</name><value>slave3</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>YARN 集群为 MapReduce 程序提供的 shuffle 服务</description></property>
</configuration>

3.3.6 配置slaves

[hadoop@master hadoop]$ vim slaves

把原本的localhost删掉,增加如下内容:

master
slave1
slave2
slave3

3.4 slave节点配置(在所有slave节点,以slave1为例

重点强调: 每台服务器中的hadoop安装包的目录必须一致, 安装包的配置信息还必须保持一致

在slave1节点上,同样使用hadoop用户:

[root@slave1 ~]# su hadoop[hadoop@slave1 root]$ cd ~[hadoop@slave1 ~]$ pwd/home/hadoop[hadoop@slave1 ~]$ mkdir apps

在master节点上:

[hadoop@master hadoop]$ scp -r ~/apps/hadoop-2.9.1/ hadoop@slave1:~/apps/hadoop-2.9.1/

slave2和slave3节点同slave1节点操作

3.5 Hadoop环境变量配置(所有节点,以master节点为例

千万注意:

1、如果你使用root用户进行安装。 vi /etc/profile 即可 系统变量

2、如果你使用普通用户进行安装。 vi ~/.bashrc 用户变量(我是使用hadoop用户安装的)

[hadoop@master ~]$ pwd/home/hadoop[hadoop@master ~]$ vim .bashrc
# User specific aliases and functionsexport HADOOP_HOME=/home/hadoop/apps/hadoop-2.9.1export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

使环境变量生效:

[hadoop@master ~]$ source ~/.bashrc
[hadoop@master ~]$ echo $HADOOP_HOME/home/hadoop/apps/hadoop-2.9.1

验证环境变量是否生效,查看hadoop版本:

[hadoop@master ~]$ hadoop version

注意:slave节点要以hadoop用户去执行以上操作

[hadoop@slave1 ~]$ vim .bashrc
# User specific aliases and functionsexport HADOOP_HOME=/home/hadoop/apps/hadoop-2.9.1export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

使环境变量生效:

[hadoop@slave1 ~]$ source ~/.bashrc
[hadoop@slave1 ~]$ echo $HADOOP_HOME/home/hadoop/apps/hadoop-2.9.1

验证环境变量是否生效,查看hadoop版本:

[hadoop@slave1 ~]$ hadoop version

slave2和slave3节点同slave1节点操作

4. 初始化Hadoop(master节点

注意:HDFS初始化只能在HDFS集群的主节点namenode上进行,本实验中即为master节点

[hadoop@master ~]$ hadoop namenode -format

5. 启动Hadoop

5.1 启动HDFS(HDFS集群的任何节点都可以

注意:不管在集群中的哪个节点都可以。

[hadoop@master ~]$ start-dfs.sh

 

5.2 启动YARN(在YARN主节点ResourceManager上执行

注意:只能在YARN的主节点resourcemanager中进行启动,也就是本集群的slave3。

[hadoop@slave3 ~]$ start-yarn.sh

(补充:启动方式2:直接在master上执行start-all.sh而不是像前面这样分开执行HDFS和YARN(未验证过))

6. 查看4台服务器的进程

master节点

slave1节点

slave2节点

slave3节点

7. 查看HDFS和YARN的Web管理界面

7.1 查看HDFS的Web管理界面

浏览器输入:http://10.10.129.200:50070

点击Datanodes可查看集群4个节点

从上图中的Http Address中可以看到访问其他节点的URL链接(图中是用的域名,我试了不行,要用IP,至于为什么域名不行以后再解决)

http://10.10.129.201:50075

http://10.10.129.202:50075

http://10.10.129.203:50075

7.2 查看YARN的Web管理界面

浏览器输入http://10.10.129.203:8088

点击Nodes可以查看集群4个节点

8. Hadoop的简单测试及使用

8.1 HDFS的简单使用测试

  • 创建文件夹

在HDFS上创建一个文件夹/test/input

[hadoop@master ~]$ hadoop fs -mkdir -p /test/input
  • 查看创建的文件夹
[hadoop@master ~]$ hadoop fs -ls /Found 1 itemsdrwxr-xr-x - hadoop supergroup 0 2018-09-25 06:21 /test
[hadoop@master ~]$ hadoop fs -ls /testFound 1 itemsdrwxr-xr-x - hadoop supergroup 0 2018-09-25 06:21 /test/input
  • 向HDFS上传文件

创建一个文本文件words.txt

[hadoop@master ~]$ vim words.txt
hello zhangsan
hello lisi
hello wangwu

将words.txt文件上传至HDFS:

[hadoop@master ~]$ hadoop fs -put ~/words.txt /test/input

查看是否上传成功

[hadoop@master ~]$ hadoop fs -ls /test/inputFound 1 items-rw-r--r-- 2 hadoop supergroup 39 2018-09-25 06:24 /test/input/words.txt
  • 从HDFS下载文件

将刚刚上传的文件下载到~/data文件夹中

[hadoop@master ~]$ hadoop fs -get /test/input/words.txt ~/data

查看是否下载成功

[hadoop@master ~]$ ls data/hadoopdata  words.txt

8.2 运行第一个Map Reduce的例子程序:wordcount

用自带的demo--wordcount来测试hadoop集群能不能正常跑任务:

执行wordcount程序,并将结果放入/test/output/文件夹:

[hadoop@master ~]$ hadoop jar ~/apps/hadoop-2.9.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar wordcount /test/input /test/output

(注意事项:/output文件夹必须是没有创建过的文件夹?(没验证过))

在YARN Web管理界面查看:

查看执行结果:

[hadoop@master ~]$ hadoop fs -ls /test/outputFound 2 items-rw-r--r-- 2 hadoop supergroup 0 2018-09-25 06:32 /test/output/_SUCCESS-rw-r--r-- 2 hadoop supergroup 35 2018-09-25 06:32 /test/output/part-r-00000

在output/part-r-00000可以看到程序执行结果:

[hadoop@master ~]$ hadoop fs -cat /test/output/part-r-00000hello 3lisi 1wangwu 1zhangsan 1

8.3 运行例子程序:求圆周率

用自带的demo--pi来测试hadoop集群能不能正常跑任务:

执行pi程序:

[hadoop@master ~]$ hadoop jar ~/apps/hadoop-2.9.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar pi 10 10

用来求圆周率,pi是类名,第一个10表示Map次数,第二个10表示随机生成点的次数(与计算原理有关) (参考:https://blog.csdn.net/fanxin_i/article/details/80425461

在YARN Web管理界面查看:

最后出现结果:

至此,hadoop集群搭建成功!

这篇关于Hadoop学习(1)Hadoop2.9.1完全分布式环境搭建和测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983277

相关文章

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11