hadoop安装

简介        

        Hadoop是一个开源的分布式存储和计算框架,最初由Apache软件基金会开发。它的发展背景可以追溯到Google的MapReduce和Google File System(GFS)的论文,这两篇论文启发了Hadoop的设计。Hadoop的主要应用场景包括大数据存储、处理和分析,特别是在需要处理海量数据的互联网和企业环境中。它被广泛用于日志分析、数据挖掘、机器学习、图像处理等领域。 Hadoop的生态系统还包括许多相关项目,如Hive、HBase、Spark等,为大数据处理提供了丰富的工具和技术。

        虽然当前提出hadoop的缺点以及弊端,但是当前hadoop的全功能性还是能解决大型项目的大多数问题。学习hadoop变较为必要。

安装以及环境配置

hostname:ipaddr应用属性
vm02:10.0.0.102hadoop+jdk+zookeeper主节点(DataNode+主NameNode+ResourceManager)
vm03:10.0.0.103hadoop+jdk+zookeeper从节点(Datanode+备用Namenode+备ResourceManager)
vm04:10.0.0.104hadoop+jdk+zookeeper从节点(Datanode)

        下载JDK、zookeeper以往文章中已经做了解释本文不再累述 

        hadoop进入官网选择最新版本下载。

wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

解压压缩包

[hadoop@vm03 ~]$ tar -zxf hadoop-3.3.6.tar.gz 
[hadoop@vm03 ~]$ ln -s hadoop-3.3.6 hadoop 
[hadoop@vm03 ~]$ rm -rf hadoop-3.3.6.tar.gz 

设置软连接,方便后期hadoop升级,做替换

hadoop-env.sh配置

        hadoop-env.sh文件主要配置与Hadoop环境相关的变量,文件放置在hadoop/etc/hadoop/目录下,主要配置jdk的目录。

[hadoop@vm03 hadoop]$ echo $JAVA_HOME
/jdk/jdk1.8.0_144/
[hadoop@vm03 hadoop]$ vim hadoop-env.sh 

core-site.xml配置

         core-site.xml文件主要配置Hadoop的公有属性,用于配置Hadoop核心功能的参数。它包含了Hadoop集群中各个节点共享的核心配置信息,如Hadoop文件系统(HDFS)的默认块大小、默认副本数量、以及其他与文件系统相关的参数。同样位于hadoop/etc/hadoop路径下
<!-- core-site.xml -->
<configuration>
	<!-- 指定Hadoop文件系统的默认块大小 -->
    <property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>
    <!-- 指定Hadoop文件系统的默认副本数量 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>	
    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/data</value>
    </property>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
	 <!-- 配置zookeeper管理hdfs -->
     <property>
        <name>ha.zookeeper.quorum</name>
        <value>vm02:2181,vm03:2181,vm04:2181</value>
    </property>	
</configuration>

hdfs-site.xml配置

         hdfs-site.xml文件主要配置和HDFS相关的属性, 同样位于hadoop/etc/hadoop路径下
<!--hdfs-site.xml配置-->
<configuration>
<!-- NameNode数据存储目录 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file://${hadoop.tmp.dir}/name</value>
  </property>

  <!-- DataNode数据存储目录 -->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file://${hadoop.tmp.dir}/data</value>
  </property>

  <!-- JournalNode数据存储目录 -->
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>${hadoop.tmp.dir}/jn</value>
  </property>

  <!-- 完全分布式集群名称 -->
  <property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
  </property>

  <!-- 集群中NameNode节点都有哪些 -->
  <property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
  </property>

  <!-- NameNode的RPC通信地址 -->
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>vm02:8020</value>
  </property>

<property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>vm03:8020</value>
  </property>


  <!-- NameNode的http通信地址 -->
  <property>
    <name>dfs.namenode.http-address.mycluster.nn1</name>
    <value>vm02:9870</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>vm03:9870</value>
  </property>


  <!-- 指定NameNode元数据在JournalNode上的存放位置 -->
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://vm02:8485;vm03:8485/mycluster</value>
  </property>

  <!-- 访问代理类:client用于确定哪个NameNode为Active -->
  <property>
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  </property>

<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
  <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
  </property>

  <!-- 使用隔离机制时需要ssh秘钥登录-->
  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/hadoop/.ssh/id_rsa</value>
  </property>

  <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
</configuration>

mapred-site.xml配置

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

yarn-site.xml配置

<configuration>
    <!-- ResourceManager连接的最大等待时间(毫秒) -->
    <property>
        <name>yarn.resourcemanager.connect.max-wait.ms</name>
        <value>2000</value> <!-- 设置ResourceManager连接的最大等待时间为2000毫秒 -->
    </property>
    <!-- 启用ResourceManager的高可用性 -->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value> <!-- 启用ResourceManager的高可用性 -->
    </property>
    <!-- 启动故障自动恢复 -->
    <property>
        <name>yarn.resourcemanager.ha.automatic-failover.enable</name>
        <value>true</value> <!-- 启动故障自动恢复 -->
    </property>
    <!-- 启用内嵌式的故障自动恢复 -->
    <property>
        <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
        <value>true</value> <!-- 启用内嵌式的故障自动恢复 -->
    </property>
    <!-- 设置ResourceManager所属的集群ID -->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yarn-rm-cluster</value> <!-- 设置ResourceManager所属的集群ID为 yarn-rm-cluster -->
    </property>
    <!-- 设置ResourceManager的ID列表 -->
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value> <!-- 设置ResourceManager的ID列表为 rm1,rm2 -->
    </property>
    <!-- 设置ResourceManager节点rm1的主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>vm02</value> <!-- 设置ResourceManager节点rm1的主机名为 vm02 -->
    </property>
    <!-- 设置ResourceManager节点rm2的主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>vm03</value> <!-- 设置ResourceManager节点rm2的主机名为 vm03 -->
    </property>
    <!-- 启用ResourceManager的状态恢复 -->
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value> <!-- 启用ResourceManager的状态恢复 -->
    </property>
    <!-- 设置存储ResourceManager状态信息的ZooKeeper地址 -->
    <property>
        <name>yarn.resourcemanager.zk.state-store.address</name>
        <value>vm02:2181,vm03:2181,vm04:2181</value> <!-- 设置存储ResourceManager状态信息的ZooKeeper地址为 vm02:2181,vm03:2181,vm04:2181 -->
    </property>
    <!-- 设置ResourceManager节点rm1的地址 -->
    <property>
        <name>yarn.resourcemanager.address.rm1</name>
        <value>vm02:8032</value> <!-- 设置ResourceManager节点rm1的地址为 vm02:8032 -->
    </property>
    <!-- 设置ResourceManager节点rm1的调度器地址 -->
    <property>
        <name>yarn.resourcemanager.scheduler.address.rm1</name>
        <value>vm02:8034</value> <!-- 设置ResourceManager节点rm1的调度器地址为 vm02:8034 -->
    </property>
    <!-- 设置ResourceManager节点rm1的Web应用地址 -->
    <property>
        <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>vm02:8088</value> <!-- 设置ResourceManager节点rm1的Web应用地址为 vm02:8088 -->
    </property>
    <!-- 设置ResourceManager节点rm2的地址 -->
    <property>
        <name>yarn.resourcemanager.address.rm2</name>
        <value>vm03:8032</value> <!-- 设置ResourceManager节点rm2的地址为 vm03:8032 -->
    </property>
    <!-- 设置ResourceManager节点rm2的调度器地址 -->
    <property>
        <name>yarn.resourcemanager.scheduler.address.rm2</name>
        <value>vm03:8034</value> <!-- 设置ResourceManager节点rm2的调度器地址为 vm03:8034 -->
    </property>
    <!-- 设置ResourceManager节点rm2的Web应用地址 -->
    <property>
        <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>vm03:8088</value> <!-- 设置ResourceManager节点rm2的Web应用地址为 vm03:8088 -->
    </property>
    <!-- 设置ZooKeeper的地址,用于协调ResourceManager的高可用性和故障自动恢复 -->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>vm02:2181,vm03:2181,vm04:2181</value> <!-- 设置ZooKeeper的地址,用于协调ResourceManager的高可用性和故障自动恢复为 vm02:2181,vm03:2181,vm04:2181 -->
    </property>
    <!-- 启用日志聚合 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value> <!-- 启用日志聚合 -->
    </property>
    <!-- 设置Hadoop使用的ZooKeeper地址 -->
    <property>
        <name>hadoop.zk.address</name>
        <value>vm02:2181,vm02:2181,vm02:2181</value> <!-- 设置Hadoop使用的ZooKeeper地址为 vm02:2181,vm02:2181,vm02:2181 -->
    </property>
    <!-- 设置NodeManager的辅助服务 -->
    <property>
        <name>yarn.nodemanager.aux-sevices</name>
        <value>mapreduce_shuffle</value> <!-- 设置NodeManager的辅助服务为 mapreduce_shuffle -->
    </property>
    <!-- 设置MapReduce Shuffle服务的类 -->
    <property>
        <name>yarn.nodemanager.aux-sevices.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandle</value> <!-- 设置MapReduce Shuffle服务的类为 org.apache.hadoop.mapred.ShuffleHandle -->
    </property>		
</configuration>

workers文件配置

        workers文件的名称是在hadoop-env.sh 文件中指定的。在 hadoop-env.sh 文件中,可以找到一个环境变量 HADOOP_WORKERS,它指定了workers 文件的路径。通常情况下,HADOOP_WORKERS 的默认值是 ${HADOOP_CONF_DIR}/workers ,其中 ${HADOOP_CONF_DIR} 是指向 Hadoop 配置文件目录的环境变量。

注意:旧版本这里使用的是slaves

[hadoop@vm02 ~]$ cd hadoop/etc/hadoop/
[hadoop@vm02 hadoop]$ vim workers 

vm02
vm03
vm04  

        此文件配置集群中的所有hostname。

注:所有节点配置内容保持一致

试运行

启动Zookeeper集群

        所有节点都需启动

[hadoop@vm03 ~]$ zkServer.sh restart 
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@vm03 ~]$ zkServer.sh  status 
ZooKeeper JMX enabled by default
Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

启动JournalNode集群

        在Hadoop中,JournalNode集群用于存储NameNode的编辑日志。它们帮助确保在NameNode发生故障时不会丢失数据,并支持NameNode的高可用性和故障转移。 JournalNode集群是Hadoop分布式文件系统(HDFS)的关键组件,用于维护持久化的NameNode编辑日志,以便在发生故障时进行恢复。
        在集群所有节点分别启动JournalNode服务

hadoop/sbin/hadoop-daemon.sh  start journalnode
[hadoop@vm03 ~]$ hadoop/sbin/hadoop-daemon.sh  start journalnode
WARNING: Use of this script to start HDFS daemons is deprecated.
WARNING: Attempting to execute replacement "hdfs --daemon start" instead.
WARNING: /home/hadoop/hadoop-3.3.6/logs does not exist. Creating.
[hadoop@vm03 ~]$ jps 
7936 JournalNode
7780 QuorumPeerMain
7975 Jps

格式化主节点NameNode​​​​​​​

##  在vm02节点(NameNode主节点)上,使用以下命令对 NameNode进行格式化
hadoop/bin/hdfs namenode -format  
hadoop/bin/hdfs zkfc -formatZK
hadoop/bin/hdfs namenode
##在备用节点vm03进行同步主节点的元数据
 hadoop/bin/hadoop namenode -bootstrapStandby 
##所有节点关闭zookeeper集群
zkServer.sh stop 

##所有节点关闭 journalnode集群
hadoop/sbin/hadoop-daemon.sh stop journalnode

##所有节点启动zookeeper集群
zkServer.sh start 
#主节点vm02启动集群
 hadoop/sbin/start-all.sh 

        格式化ZooKeeper中与故障转移控制器(Failover Controller)相关的数据。这个命令通常在设置故障转移控制器时使用,以确保ZooKeeper中的相关数据处于正确的状态。

hadoop/bin/hdfs zkfc -formatZK

所有节点启动zookeeper集群     

 vm02启动HDFS集群

验证

       通过jps查看namenode进程所在节点,通过web进行访问

[hadoop@vm03 ~]$ jps 
1666 QuorumPeerMain
2727 DFSZKFailoverController
2315 DataNode
1820 JournalNode
2125 NameNode
3294 Jps
[hadoop@vm03 ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:f1:d6:3e brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.103/24 brd 10.0.0.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef1:d63e/64 scope link 
       valid_lft forever preferred_lft forever

打开网页输入以下namenode的ip地址

http://10.0.0.103:9870
http://10.0.0.102:9870

此时namenode节点都是可以通过web节点上线的,vm03作为备用节点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rabbitmq-server-3.11.10.exe

rabbitmq需要erlang环境 otp_win64_25.1.exe erlang-CSDN博客 https://www.rabbitmq.com/download.htmlhttps://www.rabbitmq.com/install-windows.htmlhttps://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.10/rabbitmq-server-3.11.10.exe C:\Users\Admi…

使用MechanicalSoup库的爬虫程序

1. 首先&#xff0c;我们需要导入MechanicalSoup库和requests库&#xff0c;这两个库都是Python中爬虫常用的库。 2. 接着&#xff0c;我们要设置一个代理服务器&#xff0c;使用proxy_host和proxy_port参数来指定。 3. 使用requests.get方法来获取网页的HTML代码。 4. 使用Bea…

添加通信作者标记、共同作者标记

1 添加通信作者的小信封 添加包&#xff0c;2个小信息长得不太一样选一个用 % \usepackage[misc]{ifsym} \usepackage{marvosym} % 通信小信封 然后在名字后面添加\Letter Ming Li\Letter\textsuperscript{\rm 1}\

WordPress 粘贴图片上传插件

找了很久&#xff0c;发现一款不错的插件&#xff0c;允许我们直接粘贴图片文件并且上传到媒体库。以前的插件上传后媒体库不会显示&#xff0c;这个要显示。 启用后编辑器会有一个图标&#xff0c;如果开启&#xff0c;那么久可以截图后直接粘贴了。 学习资料源代码&#xf…

硬核实力,闪耀羊城!第23届广州车展完美收官,大运乘用车尽显品牌魅力

11月26日&#xff0c;第23届广州国际车展在广州圆满闭幕。作为各大车展的老朋友&#xff0c;本届广交会大运乘用车携旗下潮玩纯电越野小钢炮悦虎及大7座智能豪华纯电MPV远志M1两大明星车型闪耀全场&#xff0c;再次揽收空前关注。 当下以85、90、00后为主的年轻群体看中新能源汽…

去水印软件有哪些?亲测四款好用去水印神器

去水印软件有哪些&#xff1f;随着图片的普及和应用范围不断扩大&#xff0c;我们有时需要对图片进行编辑或修改。然而&#xff0c;有些图片可能会带有水印&#xff0c;这会降低图片的美观度和应用效果。作为一名自媒体打工人&#xff0c;经过多番对比&#xff0c;整理了四款好…

计算机视觉的应用20-图像生成模型(Stable Diffusion)的原理详解与相关项目介绍

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用20-图像生成模型&#xff1a;Stable Diffusion模型的原理详解与相关项目介绍。大家知道现在各个平台发的各种漂亮的女生&#xff0c;这些漂亮的图片是怎么生成的吗&#xff0c;其实它们底层原理就是…

JoySSL证书从申请到安装

为了保护网站和用户数据的安全&#xff0c;使用SSL证书是至关重要的一步。JoySSL是一种可靠的SSL证书提供商&#xff0c;它提供了简单易用的证书申请和安装流程。本文将详细介绍如何从申请到安装JoySSL证书的步骤。 一、申请JoySSL证书 1&#xff0c;访问JoySSL官方网站&#…

1120:最值交换

题目描述 有一个长度为n的整数序列。请写一个程序&#xff0c;先把序列中的最小值与第一个数交换&#xff0c;再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。 int MinIndex(int a[], int n); //函数返…

医院室内导航解决方案:智慧医疗的重要组成部分

医院作为人们生活中不可或缺的一部分&#xff0c;面临着巨大的挑战。每天都有大量的患者前来就医&#xff0c;而医院内部的复杂结构和科室众多&#xff0c;常常让患者感到困惑和迷失。为了解决这个问题&#xff0c;医院室内导航解决方案应运而生&#xff0c;以其创新的技术和卓…

如何使用录屏软件在电脑录制PDF文件

我有一个PDF文件&#xff0c;想用录屏软件将它录制下来并添加上详细的注释&#xff0c;然后发给客户看&#xff0c;请问应该如何录制呢&#xff1f;有没有推荐的录屏软件呢&#xff1f; 不用担心&#xff0c;本文将会详细的为您讲解如何使用录屏软件在电脑端录制PDF文件&#…

C# 将bin文件转成hex文件

背景 由于项目应用(服务器-APP-下位机)中&#xff0c; 1&#xff09;服务器限制只能上传hex文件 2&#xff09;APP中通过应用读取的数据为bin文件 所以需要APP中将bin文件转成hex文件&#xff0c;&#xff0c;正好做个bin转hex的功能 注&#xff1a;应用读取的bin文件实际是MC…

selenium+python

selenium 八大查找元素 from selenium import webdriver from selenium.webdriver.common.by import By# 创建一个 WebDriver 实例 driver webdriver.Chrome()# 打开网页 driver.get("https://www.baidu.com/")# 使用 find_element 方法查找元素 element driver.…

vue3-在自定义hooks使用useRouter 报错问题

文章目录 前言一、报错分析报错的Vue warn截图&#xff1a;查看文档 二、那么在hook要怎么引入路由呢&#xff1f; 前言 记录在vue3项目中&#xff0c;hook使用useRouter 报错问题 一、报错分析 报错的Vue warn截图&#xff1a; 警告 inject() can only be used inside setup…

vue+less+style-resources-loader 配置全局颜色变量

全局统一样式后&#xff0c;可配置vue.config.js实现全局颜色变量&#xff0c;方便在编写时使用统一风格的色彩 一、新建global.less 二、下载安装style-resources-loader npm i style-resources-loader --save-dev三、在vue.config.js中进行配置 module.exports {pluginOpt…

手把手教你在AutoML上部署Qwen-7B-hat Transformers 部署调用

手把手带你在AutoDL上部署Qwen-7B-hat Transformers 调用 项目地址&#xff1a;https://github.com/datawhalechina/self-llm.git 如果大家有其他模型想要部署教程&#xff0c;可以来仓库提交issue哦~ 也可以自己提交PR&#xff01; 如果觉得仓库不错的话欢迎star&#xff01;&…

linux系统下的nginx服务安装

一. 环境 在安装nginx前&#xff0c;需要提前配置的环境包括 pcre&#xff1a;rewrite正则相关pcre:URL重写软件&#xff0c;实现伪静态\URL跳转等、SEO优化。 openssl&#xff1a;https加密访问用它 zlib&#xff1a;提供数据压缩用1.安装pcre 1.1 检查版本 执行&#xff…

如何测试接口?首先你得知道如何开发接口。

接口测试&#xff1a;接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。&#xff08;来自某百科&a…

什么是线程安全问题?如何确保线程安全?进来看看就明白了!!

&#x1f308;&#x1f308;&#x1f308;今天给大家分享的是:什么是线程安全&#xff0c;在程序中多线程并发执行的时候&#xff0c;是否会产生线程不安全问题&#xff0c;以及如何解决线程不安全问题。 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的…

HarmonyOS 后台任务管理开发指南上线!

为什么要使用后台任务&#xff1f;开发过程中如何选择合适的后台任务&#xff1f;后台任务申请时存在哪些约束与限制&#xff1f; 针对开发者使用后台任务中的疑问&#xff0c;我们上线了概念更明确、逻辑结构更清晰的后台任务开发指南&#xff0c;包含具体的使用场景、详细的开…