hadoop集群部署方式分别是(Hadoop集群有自动备份吗)

:暂无数据 2025-08-31 13:40:01 0
各位老铁们,大家好,今天由我来为大家分享hadoop集群部署方式分别是,以及Hadoop集群有自动备份吗的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

Hadoop集群有自动备份吗

Hadoop集群有自动备份。集群配置,这里是指我们将每个服务器配置成功后,每台服务器的Hadoop并没有连接起来,需要进行配置,将Hadoop平台连接。Hadoop的配置文件分为两大类,一类是默认配置文件,一类是自定义配置文件,当用户想修改某些默认配置文件时,才需要自定义配置文件。

Hadoop部署方式的分类

Hadoop部署方式分为三种:独立模式,伪分布式模式,集群模式,其中前两种都是在单机部署。独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。

伪分布式也是在1个机器上运行HDFS的Namenode和DataNode、YARN的ResourceManager和NodeManager,但分别启动单独的java进程,主要用于调试。集群模式主要用于生产环境部署,会使用N台主机组成一个Hadoop集群,这种部署模式下,主节点和从节点会分开部署在不同的机器上

Hadoop集群可以运行的3个模式分别是什么,有哪些注意点

单机(本地)模式:这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。在单机模式(standalone)中不会存在守护进程,所有东西都运行在一个jvm上。这里同样没有dfs,使用的是本地文件系统。单机模式适用于开发过程中运行mapreduce程序,这也是最少使用的一个模式。
  伪分布式模式:也是在一台单机上运行,但用不同的java进程模仿分布式运行中的各类结点(namenode,datanode,jobtracker,tasktracker,secondarynamenode),伪分布式(pseudo)适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。
  全分布式模式:全分布模式通常被用于生产环境,使用n台主机组成一个hadoop集群,hadoop守护进程运行在每台主机之上。这里会存在namenode运行的主机,datanode运行的主机,以及tasktracker运行的主机。在分布式环境下,主节点和从节点会分开。

配置hadoop集群是怎么配置的

在过去,大数据处理主要是采用标准化的刀片式服务器和存储区域网络(SAN)来满足网格和处理密集型工作负载。然而随着数据量和用户数的大幅增长,基础设施的需求已经发生变化,硬件厂商必须建立创新体系,来满足大数据对包括存储刀片,SAS(串行连接SCSI)开关,外部SATA阵列和更大容量的机架单元的需求。即寻求一种新的方法来存储和处理复杂的数据,Hadoop正是基于这样的目的应运而生的。Hadoop的数据在集群上均衡分布,并通过复制副本来确保数据的可靠性和容错性。因为数据和对数据处理的操作都是分布在服务器上,处理指令就可以直接地发送到存储数据的机器。这样一个集群的每个服务器器上都需要存储和处理数据,因此必须对Hadoop集群的每个节点进行配置,以满足数据存储和处理要求。
Hadoop框架中最核心的设计是为海量数据提供存储的HDFS和对数据进行计算的MapReduce。MapReduce的作业主要包括从磁盘或从网络读取数据,即IO密集工作,或者是计算数据,即CPU密集工作。Hadoop集群的整体性能取决于CPU、内存、网络以及存储之间的性能平衡。因此运营团队在选择机器配置时要针对不同的工作节点选择合适硬件类型。一个基本的Hadoop集群中的节点主要有:Namenode负责协调集群中的数据存储,DataNode存储被拆分的数据块,Jobtracker协调数据计算任务,最后的节点类型是Secondarynamenode,帮助NameNode收集文件系统运行的状态信息。
在集群中,大部分的机器设备是作为Datanode和TaskTracker工作的。Datanode/TaskTracker的硬件规格可以采用以下方案:
4个磁盘驱动器(单盘1-2T),支持JBOD
2个4核CPU,至少2-2.5GHz
16-24GB内存
千兆以太网
Namenode提供整个HDFS文件系统的namespace管理,块管理等所有服务,因此需要更多的RAM,与集群中的数据块数量相对应,并且需要优化RAM的内存通道带宽,采用双通道或三通道以上内存。硬件规格可以采用以下方案:
8-12个磁盘驱动器(单盘1-2T)
2个4核/8核CPU
16-72GB内存
千兆/万兆以太网
Secondarynamenode在小型集群中可以和Namenode共用一台机器,较大的群集可以采用与Namenode相同的硬件。考虑到关键节点的容错性,建议客户购买加固的服务器来运行的Namenodes和Jobtrackers,配有冗余电源和企业级RAID磁盘。最好是有一个备用机,当 namenode或jobtracker 其中之一突然发生故障时可以替代使用。
目前市场上的硬件平台满足Datanode/TaskTracker节点配置需求的很多,,据了解深耕网络安全硬件平台多年的立华科技瞄准了Hadoop的发展前景,适时推出了专门针对NameNode的设备----双路至强处理器搭载12块硬盘的FX-3411,将计算与存储完美融合,四通道内存的最大容量可达到256GB,完全满足NameNode对于一个大的内存模型和沉重的参考数据缓存组合的需求。
同时在网络方面,FX-3411支持的2个PCI-E*8的网络扩展,网络吞吐达到80Gbps,更是远远满足节点对千兆以太网或万兆以太网的需求。此外针对Datanode/TaskTracker等节点的配置需求,立华科技不仅推出了可支持单路至强E38核处理器和4块硬盘的标准品FX-3210,还有可以全面客制化的解决方案,以满足客户的不同需求。
Hadoop集群往往需要运行几十,几百或上千个节点,构建匹配其工作负载的硬件,可以为一个运营团队节省可观的成本,因此,需要精心的策划和慎重的选择。

如何搭建50t的hadoop集群

先决条件
确保在你集群中的每个节点上都安装了所有必需软件。
获取Hadoop软件包。
安装
安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。
通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves。
我们用HADOOP_HOME指代安装的根路径。通常,集群里的所有机器的HADOOP_HOME路径相同。
配置
接下来的几节描述了如何配置Hadoop集群。
配置文件
对Hadoop的配置通过conf/目录下的两个重要配置文件完成:
hadoop-default.xml - 只读的默认配置。
hadoop-site.xml - 集群特有的配置。
要了解更多关于这些配置文件如何影响Hadoop框架的细节,请看这里。
此外,通过设置conf/hadoop-env.sh中的变量为集群特有的值,你可以对bin/目录下的Hadoop脚本进行控制。
集群配置
要配置Hadoop集群,你需要设置Hadoop守护进程的运行环境和Hadoop守护进程的运行参数。
Hadoop守护进程指NameNode/DataNode 和JobTracker/TaskTracker。
配置Hadoop守护进程的运行环境
管理员可在conf/hadoop-env.sh脚本内对Hadoop守护进程的运行环境做特别指定。
至少,你得设定J**A_HOME使之在每一远端节点上都被正确设置。
管理员可以通过配置选项HADOOP_*_OPTS来分别配置各个守护进程。 下表是可以配置的选项。

大数据 hadoop 三种运行模式的区别、及详细配置讲解

基于Hadoop进行开发时,有时候会被Hadoop的运行模式弄得晕头转向,傻傻分不清各种运行模式的区别,给日常开发带来很多困惑,不同集群配置文件也各不相不同。弄明白Hadoop的运行模式和对配置文件的作用要做到心中明了,在工作中才能得手顺心。

hadoop的配置文件均以XML文件进行配置,它有四个最常见的配置文件,分别为:

core-site.xml文件主要用于配置通用属性。

hdfs-site.xml文件用于配置Hdfs的属性。

mapred-site.xml文件用于配置Mapreduce的属性。

yarn-site.xml文件用于配置Yarn的属性。

一般来说,这四种配置文件都存储在hadoop默认的安装目录etc/hadoop子目录中。 不过我们也可以在搭建集群时根据实际需求,把etc/hadoop目录和其下的文件复制到另外一个位置。这样可以把配置文件和安装文件分离开来,方便管理。

注意:如果把etc/hadoop目录和其下的文件复制到另外一个位置。
我们需要在环境变量中将hadoop_conf_dir设置成指向新目录。

1、本地运行模式

无需任何守护进程 ,所有的程序都运行在同一个JVM上执行。在本地模式下调试MR程序非常高效方便,一般该模式主要是在学习或者开发阶段调试使用 。

2、伪分布式模式

Hadoop守护进程运行在本地机器上 ,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。

3、完全分布式模式

Hadoop守护进程运行在一个集群上 。这种运行模式也就是我们常见的各种云,主要用于大规模的生产环境中。

注意:分布式要启动守护进程 ,是指在使用分布式hadoop时,要先启动一些准备程序进程,然后才能使用。 比如start-dfs.sh start-yarn.sh,而本地模式不需要启动这些守护进程。

注意:在本地模式下,将使用本地文件系统和本地MapReduce运行器。在分布式模式下,将启动HDFS和YARN守护进程。

如何在docker中部署hadoop2.4集群

Docker提供了一种完美隔离和打包Hadoop相关的应用程序的方法。该公司也在观察Slider框架和Docker如何能够一起合作来简化此类的部署工作。目前,Hortonworks的一个客户已经在考虑他们自己的数据平台利用HDP支持Docker的方法。他们利用Cloudbreak在云中的Docker容器中部署Hadoop,并计划把他们自己的数据应用程序制作成Docker镜像以便在YARN上运行。此外,很多用户也因为这种方式的敏捷性和兼容性,利用其进行未知环境的部署。

Hadoop HA 高可用原理及部署

在Hadoop 2.0之前,只有namenode一个节点,存在单点问题,namenode单点故障,难以应用与在线场景,也不利于生产上维护集群。namenode压力过大,且内存受损,影响系统延展性。0

HA:高可用集群(High Availability Cluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件、硬件、人为造成的故障对业务的影响降到最小。

在hadoop2.0引入了HA机制。hadoop2.0的HA机制官方介绍了有2种方式,一种是NFS(Network File System)方式,另外一种是QJM(QuorumJournal Manager)方式。

NFS(Network File System)
在QJM出现之前,为保障集群的HA,设计的是一种基于NAS的共享存储机制,即主备NameNode间通过NAS进行元数据的同步。该方案有什么缺点呢,主要有以下几点:
1. 定制化硬件设备:必须是支持NAS的设备才能满足需求
2. 复杂化部署过程:在部署好NameNode后,还必须额外配置NFS挂载、定制隔离脚本,部署易出错
3. 简陋化NFS客户端:Bug多,部署配置易出错,导致HA不可用
所以对于替代方案而言,也必须解决NAS相关**才能让HA更好服务。即设备无须定制化,普通设备即可配置HA,部署简单,相关配置集成到系统本身,无需自己定制,同时元数据的同步也必须保证完全HA,不会因client问题而同步失败。所以引出了QJM方式。

QJM全称是Quorum Journal Manager, 由JournalNode(JN)组成,一般是奇数点结点组成。每个JournalNode对外有一个简易的RPC接口,以供NameNode读写EditLog到JN本地磁盘。当写EditLog时,NameNode会同时向所有JournalNode并行写文件,只要有N/2+1结点写成功则认为此次写操作成功,遵循Paxos协议。

怎样在linux系统上搭建Hadoop集群

(1)下载jdk,在官网下载,下载rpm的包
(2)hadoop包的下载,官网上下载
   download hadoop-》release-》mirror site(镜像站)-》随便选择离自己近的(HTTP下的第一个)-》选择2.7.2-》下载.tar.gz
(3)将两个包远程传输到linux虚拟机中
(4)将主机名和ip地址进行适配,让我们的ip地址和主机名(如bigdata)相匹配:写到/etc/hosts里面
   vi /etc/hosts
   按“i”进入插入状态    将原有的地址注释掉
   在新的一行输入:ip地址 主机名(如172.17.171.42 bigdata)(注:可以双击xshell的窗口再打开一个连接窗口,可以在新的窗口查询ip地址并进行复制)
   按“Esc”退出插入状态
   输入:wq保存退出
   修改完之后可以输入hostname回车,查看是否成功
   reboot:重启,使得刚刚的修改生效
(5)将包放到opt下:cp hadoop-2.7.2.tar.gz /opt/
           cp jdk-8u111-linux-x64.rpm /opt/
   进入opt:cd /opt/
   查看opt下的文件:ll
(6)安装jdk,配置jdk的环境变量
   安装命令:rpm -ivh jdk-Bu101-linux-x64.rpm
   配置环境变量:进入profile进行:vi /etc/profile
         并按照上面的方式在最后写入并保存:J**A_HOME=/usr/java/default/(/usr/java/default/是jdk的安装目录)
   打印J**A_HOME检验是否配置好:echo $J**A_HOME结果发现打印出来的没有内容因为我们对/etc/profile的修改需要通过以下命令对它生效source /etc/profile。再次输入echo $J**A_HOME,打印结果为/usr/java/default/
(7)验证jdk安装好:java -version
(8)配置SSH(免密码登录)
   回到根目录:cd    安装SSH秘钥:ssh-keygen -t rsa会自动在/root/.shh/目录下生成
   查看目录:ll .ssh/有两个新生成的文件id_rsa(私钥),id_rsa.pub(公钥)
   进入.ssh/:cd .ssh/
   将公钥写入authorized_key中:cat id_rsa.pub 》》 authorized_keys
   修改authorized_keys文件的权限:chmod 644 authorized_keys
   修改完后退出.ssh的目录cd进入初始目录输入:ssh bigdata(bigdata为你要远程登录的主机名或者ip地址)第一次登录需要确认是否需要继续登录输入yes继续登录
   退出exit
(9)安装及配置hadoop
   解压:tar zxf hadoop-2.7.2.tar.gz
   查看/opt目录下是否已经存在解压的文件:ll(结果为出现hadoop-2.7.2)
   继续查看hadoop-2.7.2里的内容:cd hadoop-2.7.2
   配置HADOOP_HOME:修改/etc/profile
   进入hadoop的配置文件目录cd /opt/hadoop-2.7.2/etc/hadoop/,会用的的配置文件如下:
   core-site.xml
   配置hadoop的文件系统即HDFS的端口是什么。
   配置项1为default.name,值为hdfs://bigdata:9000(主机名:bigdata也可也写成ip地址,端口9000习惯用)
   配置项2为hadoop临时文件,其实就是配置一个目录,配置完后要去创建这个目录,否则会存在问题。
   配置项3分布式文件系统的垃圾箱,值为4320表示3分钟回去清理一次
《property》
《name》fs.default.name《/name》
《value》hdfs://bigdata:9000《/value》
《/property》
《property》
《name》hadoop.tmp.dir《/name》
《value》/opt/hadoop-2.7.2/current/tmp《/value》
《/property》
《property》
《name》fs.trash.interval《/name》
《value》4320《/value》
《/property》
   hdfs-site.xml
   配置项1,namenode的细节实际上就是一个目录
   配置项2,datanode的细节,真实环境中datanode的内容不需要再namenode的系统下配置,在此配置的原因是我们的系统是伪分布式系统,namenode和datanode在一台机器上
   配置项3,副本的数量,在hdfs中每个块有几个副本
   配置项4,HDFS是否启用web
   配置项5,HDFS的用户组
   配置项6,HDFS的权限,现在配置为不开启权限
《property》
《name》dfs.namenode.name.dir《/name》
《value》/opt/hadoop-2.7.2/current/dfs/name《/value》
《/property》
《property》
《name》dfs.datanode.data.dir《/name》
《value》/opt/hadoop-2.7.2/current/data《/value》
《/property》
《property》
《name》dfs.replication《/name》
《value》1《/value》
《/property》
《property》
《name》dfs.webhdfs.enabled《/name》
《value》true《/value》
《/property》
《property》
《name》dfs.permissi***.superusergroup《/name》
《value》staff《/value》
《/property》
《property》
《name》dfs.permissi***.enabled《/name》
《value》false《/value》
《/property》
   创建配置文件中不存在的目录:mkdir -p /opt/hadoop-2.7.2/current/data
                 mkdir -p /opt/hadoop-2.7.2/current/dfs/name
                 mkdir -p /opt/hadoop-2.7.2/current/tmp
   yarn-site.xml
   配置项1,resourcemanager的hostname,值为你运行的那台机器的主机名或IP地址
   配置项2,nodemanager相关的东西
   配置项3,nodemanager相关的东西
   配置项4,resourcemanager的端口,主机名+端口号(IP+端口)
   配置项5,resourcemanager调度器的端口
   配置项6,resourcemanager.resource-tracker,端口
   配置项7,端口
   配置项8,端口
   配置项9,日志是否启动
   配置项10,日志保留的时间长短(以秒为单位)
   配置项11,日志检查的时间
   配置项12,目录
   配置项13,目录的前缀
《property》
《name》yarn.resourcemanager.hostname《/name》
《value》bigdata《/value》
《/property》
《property》
《name》yarn.nodemanager.aux-services《/name》
《value》mapreduce_shuffle《/value》
《/property》
《property》
《name》yarn.nodemanager.aux-services.mapreduce.shuffle.class《/name》
《value》org.apache.hadoop.mapred.ShuffleHandler《/value》
《/property》
《property》
《name》yarn.resourcemanager.address《/name》
《value》bigdata:18040《/value》
《/property》
《property》
《name》yarn.resourcemanager.scheduler.address《/name》
《value》bigdata:18030《/value》
《/property》
《property》
《name》yarn.resourcemanager.resource-tracker.address《/name》
《value》bigdata:18025《/value》
《/property》 《property》
《name》yarn.resourcemanager.admin.address《/name》
《value》bigdata:18141《/value》
《/property》
《property》
《name》yarn.resourcemanager.webapp.address《/name》
《value》bigdata:18088《/value》
《/property》
《property》
《name》yarn.log-aggregation-enable《/name》
《value》true《/value》
《/property》
《property》
《name》yarn.log-aggregation.retain-seconds《/name》
《value》86400《/value》
《/property》
《property》
《name》yarn.log-aggregation.retain-check-interval-seconds《/name》
《value》86400《/value》
《/property》
《property》
《name》yarn.nodemanager.remote-app-log-dir《/name》
《value》/tmp/logs《/value》
《/property》
《property》
《name》yarn.nodemanager.remote-app-log-dir-suffix《/name》
《value》logs《/value》
《/property》
   mapred-site.xml
   没有mapred-site.xml,输入vi mapred-按“TAB”发现有mapred-site.xml.template,对该文件进行复制
   cp mapred-site.xml.template mapred-site.xml      配置项1,mapreduce的框架
   配置项2,mapreduce的通信端口
   配置项3,mapreduce的作业历史记录端口
   配置项4,mapreduce的作业历史记录端口
   配置项5,mapreduce的作业历史记录已完成的日志目录,在hdfs上
   配置项6,mapreduce中间完成情况日志目录
   配置项7,mapreduce的ubertask是否开启
《property》
《name》mapreduce.framework.name《/name》
《value》yarn《/value》
《/property》
《property》
***隐藏网址***
《value》bigdata:50030《/value》
《/property》
《property》
《name》mapreduce.jobhisotry.address《/name》
《value》bigdata:10020《/value》
《/property》
《property》
《name》mapreduce.jobhistory.webapp.address《/name》
《value》bigdata:19888《/value》
《/property》
《property》
《name》mapreduce.jobhistory.done-dir《/name》
《value》/jobhistory/done《/value》
《/property》
《property》
《name》mapreduce.intermediate-done-dir《/name》
《value》/jobhisotry/done_intermediate《/value》
《/property》
《property》
《name》mapreduce.job.ubertask.enable《/name》
《value》true《/value》
《/property》
   slaves
bigdata
   hadoop-env.sh
J**A_HOME=/usr/java/default/
   格式化分布式文件系统(hdfs):hdfs namenode -format
   成功的标志: INFO common.Storage: Storage directory /opt/hadoop-2.7.2/current/dfs/namehas been successfully formatted.
   启动Hadoop集群:/opt/hadoop-2.7.2/**in/start-all.sh
   验证Hadoop集群是否正常启动:
   jps,系统中运行的java进程;
   通过端口查看(关闭防火墙或者service iptables stop在防火墙的规则中开放这些端口):
***隐藏网址***
***隐藏网址***

关于hadoop集群部署方式分别是和Hadoop集群有自动备份吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
本文编辑:admin

更多文章:


slide中文(请把英语翻译成中文,谢谢)

slide中文(请把英语翻译成中文,谢谢)

大家好,slide中文相信很多的网友都不是很明白,包括请把英语翻译成中文,谢谢也是一样,不过没有关系,接下来就来为大家分享关于slide中文和请把英语翻译成中文,谢谢的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

sql表触发器创建(**L中触发器创建与调用)

sql表触发器创建(**L中触发器创建与调用)

其实sql表触发器创建的问题并不复杂,但是又很多的朋友都不太了解**L中触发器创建与调用,因此呢,今天小编就来为大家分享sql表触发器创建的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

vue框架的优势(Vue.js的特点和优势是什么)

vue框架的优势(Vue.js的特点和优势是什么)

大家好,vue框架的优势相信很多的网友都不是很明白,包括Vue.js的特点和优势是什么也是一样,不过没有关系,接下来就来为大家分享关于vue框架的优势和Vue.js的特点和优势是什么的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

shell编程是啥(linux的shell编程与用gcc实现c编程有什么不同有什么优点)

shell编程是啥(linux的shell编程与用gcc实现c编程有什么不同有什么优点)

本篇文章给大家谈谈shell编程是啥,以及linux的shell编程与用gcc实现c编程有什么不同有什么优点对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏

arraysort是什么排序(Arrays.sort使用的排序算法)

arraysort是什么排序(Arrays.sort使用的排序算法)

各位老铁们好,相信很多人对arraysort是什么排序都不是特别的了解,因此呢,今天就来为大家分享下关于arraysort是什么排序以及Arrays.sort使用的排序算法的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

float类型 自动转化为double(float型数据怎么转换成double型数据 求解)

float类型 自动转化为double(float型数据怎么转换成double型数据 求解)

各位老铁们,大家好,今天由我来为大家分享float类型 自动转化为double,以及float型数据怎么转换成double型数据 求解的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢

html在线编辑器源代码(微信编辑器中的HTML代码有什么用)

html在线编辑器源代码(微信编辑器中的HTML代码有什么用)

大家好,今天小编来为大家解答以下的问题,关于html在线编辑器源代码,微信编辑器中的HTML代码有什么用这个很多人还不知道,现在让我们一起来看看吧!

accepted是什么意思英语(接受 用英语怎么说)

accepted是什么意思英语(接受 用英语怎么说)

这篇文章给大家聊聊关于accepted是什么意思英语,以及接受 用英语怎么说对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

数控车床G代码和M代码的软件有那些?ug自动出图软件哪个好

数控车床G代码和M代码的软件有那些?ug自动出图软件哪个好

大家好,如果您还对g代码软件不太了解,没有关系,今天就由本站为大家分享g代码软件的知识,包括数控车床G代码和M代码的软件有那些的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

import os是什么库(如何通过python程序知道mssql数据库是否更新了)

import os是什么库(如何通过python程序知道mssql数据库是否更新了)

“import os是什么库”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看import os是什么库(如何通过python程序知道mssql数据库是否更新了)!

最近更新

热门文章

口语100下载(口语100电脑版怎样下载)
2025-06-27 09:00:02 浏览:10
标签列表