Hadoop的高可用集群部署

Hadoop的高可用集群部署

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章


2.1、IP地址和主机名称更改

Hadoop部署



提示:以下是本篇文章正文内容,下面案例可供参考

前言

Hadoop HA原理:
   在一典型的HA集群中,每个NameNode是一台独立的服务器。在任一时刻,只有一个NameNode处于active状态,另一个处于standby状态。其中,active状态的NameNode负责所有的客户端操作,standby状态的NameNode处于从属地位,维护着数据状态,随时准备切换(两种切换方式,选择手动切换和自动切换)。手动切换是通过命令实现主备之间的切换,可以用HDFS升级等场合,自动切换方案基于Zookeeper。两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。
   
   Hadoop 高可用集群的搭建依赖于 Zookeeper,所以选取三台当做 Zookeeper 集群 ,这里总共准备了三台主机(可按实际规划),分别是 Hadoop01、Hadoop02、Hadoop03。其中 Hadoop01 和 Hadoop02 做 NameNode 的主备切换,Hadoop03 和 Hadoop04 做 ResourceManager 的主备切换。

将三台主机Hadoop01、Hadoop02、Hadoop03、Hadoop04,按如下HA安装方案图进行集群规划:

HA安装方案图NameNodeDataNodeResourceManagerZookeeperZKFCJournalNodeNodeManager
Hadoop01
Hadoop02
Hadoop03
Hadoop04

一、准备:Hadoop、Hbase、Hive和zookeeper版本兼容关系

Hadoop平台中各个组件的版本匹配是非常重要的!不是所有组件下载最新版本就好,版本不匹配容易引发各种问题。

1、Hadoop
Hadoop下载地址:
http://archive.apache.org/dist/hadoop/core/
2、Hadoop和Hbase版本关系
Hadoop和Hbase的匹配关系:Hadoop和Hbase的匹配关系可以查看Hbase官方文档:
http://hbase.apache.org/book.html#hadoop打开网页Ctrl+F键搜索‘Hadoop version support matrix’
Hbase下载地址:
http://archive.apache.org/dist/hbase/2.2.3/

Hadoop和Hbase的匹配关系图:

HBase与Hadoop的版本匹配情况
3、Hadoop和Hive

Hadoop和Hive的匹配关系查看Hive的下载页面:http://hive.apache.org/downloads.html

Hadoop和Hive的匹配关系查看Hive的下载页面:
http://hive.apache.org/downloads.html
Hive下载地址:
https://mirrors.bfsu.edu.cn/apache/hive/

Hadoop和Hive的匹配关系:

Hive第3.x.y版Hive第2.x.y版Hive第1.x.y版、第0.14.0版Hive第0.x.y版
适用于Hadoop 3.x.y适用于Hadoop2.x.y适用于Hadoop1.x.y,2.x.y.适用于Hadoop 0.20.x、0.23.x.y、1.x.y、2.x.y
4、Hbase和Hive的匹配关系
Hbase和Hive的匹配关系可以查看下面网页中的介绍,说的不是很清楚,可以结合Hadoop和Hive的版本匹配关系理解:
https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration
5、Hbase与Zookeeper的匹配关系
Zookeeper版本一般来讲越新越好,也就是我们安装Hbase的时候,可以使用新版本,可参照官方文档:
http://hbase.apache.org/book.html#zookeeper
Zookeeper下载地址:
http://archive.apache.org/dist/zookeeper/?C=M;O=A
官网解释:
What version of ZooKeeper should I use? The newer version, the better. ZooKeeper 3.4.x is required as of HBase 1.0.0

二、安装配置模板机Hadoop01

1.在VMware安装CentOS 7系统

提示:我这里使用的是CentOS-7.5-x86_64-DVD-1804.iso

下面是CentOS 7系统的安装步骤图例:

  • 图1:新建虚拟机
新建虚拟机
  • 图2:新建虚拟机向导:自定义(高级)
自定义(高级)
  • 图3:选择虚拟机硬件兼容性
选择虚拟机硬件兼容性
  • 图4:稍后安装操作系统
稍后安装客户机操作系统
  • 图5:选择客户机操作系统
选择客户机操作系统版本
  • 图6:命名虚拟机
命名虚拟机
  • 图7:处理器配置
处理器配置
  • 图7附图:电脑配置查看
电脑配置查看
  • 图8:分配虚拟机内存
分配虚拟机内存
  • 图9:网络类型
网络类型
  • 图10:选择I/O控制器类型
选择I/O控制器类型
  • 图11:选择磁盘类型
选择磁盘类型
  • 图12:创建新虚拟磁盘
创建新虚拟磁盘
  • 图13:指定磁盘容量
指定磁盘容量
  • 图14:指定磁盘文件
指定磁盘文件
  • 图15:选择ISO映像文件
选择ISO映像文件
  • 图16:开启此虚拟机
开启此虚拟机
  • 图17:Install CentOS 7
Install CentOS 7
  • 图18:选择安装语言
选择安装语言
  • 图19:网络和主机名设置
网络和主机名
网络和主机名
  • 图20:日期和时间设置
日期和时间设置
日期和时间设置
  • 图21:软件选择安装
软件选择
软件选择
  • 图22:配置安装位置分区
配置安装位置分区
配置安装位置分区
配置安装位置分区
配置安装位置分区
配置安装位置分区
配置安装位置分区
配置安装位置分区
配置安装位置分区
  • 图23:配置用户设置
配置用户设置
配置用户设置
配置用户设置
  • 图24:重启
重启
  • 图25:接受许可
接受许可
  • 图26:登录
登录
欢迎使用

2.Hadoop模板机IP地址和主机名称配置

  • 图27:虚拟网络编辑器
虚拟网络编辑器
虚拟网络编辑器
虚拟网络编辑器
  • 图28:选择Windows 10 更改适配器选项
选择Windows 10 更改适配器选项
选择Windows 10 更改适配器选项
选择Windows 10 更改适配器选项
选择Windows 10 更改适配器选项
2.1、IP地址和主机名称更改
  • 图29:接下来回到虚拟机的CentOS 7系统,打开终端,切换到root账户
su root
打开终端
切换到root账户
  • 图30:编辑ifcfg-ens33文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33

打开后更改下面:

#BOOTPROTO="dhcp" 默认为动态获取IP地址,改为静态获取IP地址
BOOTPROTO="static"
#在此文档添加以下命令
#IP地址
IPADDR=192.168.10.101
#网关
GATEWAY=192.168.10.2
#域名解析器
DNS1=192.168.10.2
编辑ifcfg-ens33文件
  • 图31:更改主机名称
vim /etc/hostname

改为下面名称:

hadoop01
更改主机名称
2.2、配置 Linux 克隆机主机名称映射 hosts 文件
  • 图32:配置 Linux 克隆机主机名称映射 hosts 文件
vim /etc/hosts

并添加以下内容:

192.168.10.101 hadoop01
192.168.10.102 hadoop02
192.168.10.103 hadoop03
192.168.10.104 hadoop04
192.168.10.105 hadoop05
192.168.10.106 hadoop06
192.168.10.107 hadoop07
192.168.10.108 hadoop08
配置 Linux 克隆机主机名称映射 hosts 文件
  • 图33:重启
reboot

3.安装hadoop

3.1、使用Xshell 链接CentOS 7
  • 图34:查看虚拟机IP地址

在终端输入以下命令查看IP地址

ifconfig
查看虚拟机IP地址
  • 图35:打开Xshell
打开Xshell
  • 图36:新建连接
新建连接
新建连接
-
  • 图37:链接CentOS 7
链接CentOS 7
3.2、测试网络链接
  • 图38:测试网络链接

在Xshelll界面输入以下命令

ping wwww.baidu.com -c 2
测试网络链接
3.3、安装 epel-release

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

  • 图39:安装 epel-release

切换到root用户

su root

执行以下代码

yum install -y epel-release
安装 epel-release

注意:如果 Linux 安装的是最小系统版,还需要安装如下工具;如果安装的是 Linux
桌面标准版,不需要执行如下操作:

➢ net-tool:工具包集合,包含 ifconfig 等命令
yum install -y net-tools
➢ vim:编辑器
yum install -y vim
3.4、关闭防火墙,关闭防火墙开机自启
  • 图40:关闭防火墙,关闭防火墙开机自启
systemctl stop firewalld
systemctl disable firewalld.service

注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安
全的防火墙

关闭防火墙
3.5、配置Hadoop用户具有 root 权限,方便后期加 sudo 执行 root 权限的命令
  • 图41:配置Hadoop用户具有 root 权限
vim /etc/sudoers

添加以下代码:

hadoop ALL=(ALL) NOPASSWD:ALL
配置Hadoop用户具有 root 权限
3.6、在/opt 目录下创建 module、software 文件夹
  • 图42:使用hadoop用户在/opt 目录下创建 module、software 文件夹
cd opt

删除rh文件夹

sudo rm -rf rh/

在/opt 目录下创建 module、software 文件夹

sudo mkdir module/ software/
在/opt 目录下创建 module、software 文件夹
3.7、修改 module、software 文件夹的所有者和所属组均为hadoop用户
  • 图43:修改文件夹的所有者和所属组
sudo chown hadoop:hadoop module/ software/
修改文件夹的所有者和所属组
3.8、卸载虚拟机自带的 JDK
  • 图44:查询虚拟机自带的 JDK

使用下面代码查询:

rpm -qa | grep -i java
查询虚拟机自带的 JDK
  • 图45:切换至root用户卸载虚拟机自带的 JDK

注意:如果你的虚拟机是最小化安装不需要执行这一步。

切换至root用户
su root
卸载虚拟机自带的 JDK
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
查询是否删除
rpm -qa | grep -i java
卸载JDK

➢ rpm -qa:查询所安装的所有 rpm 软件包
➢ grep -i:忽略大小写
➢ xargs -n1:表示每次只传递一个参数
➢ rpm -e –nodeps:强制卸载软件

卸载之后重启

reboot
3.9、配置JDK环境变量和Hadoop环境变量
3.9.1、上传JDK和Hadoop
  • 图46:切换到/opt/software/目录,打开Xshell,找到新建文件传输
cd /opt/software/
新建文件传输
  • 图47:查看是否上传成功
查看是否上传成功
3.9.2、解压jdk-8u212-linux-x64.tar.gz和hadoop-3.1.3.tar.gz

使用下方命令解压jdk-8u212-linux-x64.tar.gz到/opt/module/目录

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

使用下方命令解压hadoop-3.1.3.tar.gz到/opt/module/目录

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
3.9.3、配置JDK环境变量和Hadoop环境变量
  • 图48:进入到jdk1.8.0_212/目录

进入到jdk1.8.0_212/目录

cd /opt/module/jdk1.8.0_212/
进入到jdk1.8.0_212/目录

进入到/etc/profile.d/

cd /etc/profile.d/

创建my_env.sh脚本

sudo vim my_env.sh

写入以下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
  • 图49:进入到/etc/profile.d/创建my_env.sh脚本
编写环境配置脚本
3.9.4、重新加载profile

重新加载profile

source /etc/profile

4.集群配置

4.1、切换到hadoop配置文件目录
cd /opt/module/hadoop-3.1.3/etc/hadoop/
  • 图50:hadoop配置文件目录
配置文件目录
4.2、配置 hadoop-env.sh文件
vim hadoop-env.sh

在文件结尾处添加:

export JAVA_HOME=/opt/module/jdk1.8.0_212
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
4.3、配置 core-site.xml文件
vim core-site.xml

按O插入以下内容

<!-- 指定 NameNode 的地址 -->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://ns</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<property>
	<name>ha.zookeeper.quorum</name>
	<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<property>
	<name>hadoop.http.staticuser.user</name>
	<value>root</value>
</property>

ns是集群的名称,hadoop.tmp.dir是存储临时数据的目录,ha.zookeeper.quorum下要配置zookeeper集群:主机名:2181,2181是zookeeper的默认端口,不要改。

  • 图51:配置 core-site.xml文件
配置 core-site.xml文件
4.3、配置 hdfs-site.xml文件
vim hdfs-site.xml

按O插入以下内容

<!-- 与前面配置的匹配-->
<property>
	<name>dfs.nameservices</name>
	<value>ns</value>
</property>
<!--给两个namenode起别名nn1,nn2名字不固定,可以自定义 -->
<property>
	<name>dfs.ha.namenodes.ns</name>
	<value>nn1,nn2</value>
</property>
<!--nn1的rpc通信端口 -->
<property>
	<name>dfs.namenode.rpc-address.ns.nn1</name>
	<value>hadoop01:8020</value>
</property>
<!-- nn1的http通信地址-->
<property>
	<name>dfs.namenode.http-address.ns.nn1</name>
	<value>hadoop01:9870</value>
</property>
<!--nn2的rpc通信地址 -->
<property>
	<name>dfs.namenode.rpc-address.ns.nn2</name>
	<value>hadoop02:8020</value>
</property>
<!--nn2的http通信地址 -->
<property>
	<name>dfs.namenode.http-address.ns.nn2</name>
	<value>hadoop02:9870</value>
</property>
<!--设置共享edits文件夹:告诉集群哪些机器要启动journalNode -->
<property>
	<name>dfs.namenode.shared.edits.dir</name>
	<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/wen</value>
</property>
<!-- journalnode的edits文件存储目录-->
<property>
	<name>dfs.journalnode.edits.dir</name>
	<value>/opt/module/hadoop-3.1.3/data/journalnode</value>
</property>
<!--该配置开启高可用自动切换功能 -->
<property>
	<name>dfs.ha.automatic-failover.enabled</name>
	<value>true</value>
</property>
<!--配置切换的实现方式 -->
<property>
	<name>dfs.client.failover.proxy.provider.ns</name>
	<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--配置隔离机制 -->
<property>
	<name>dfs.ha.fencing.methods</name>
	<value>sshfence</value>
</property>
<!--生成的秘钥所存储的目录 -->
<property>
	<name>dfs.ha.fencing.ssh.private-key-files</name>
	<value>/root/.ssh/id_rsa</value>
</property>
<!-- 配置namenode存储元数据的目录-->
<property>
	<name>dfs.namenode.name.dir</name>
	<value>file:///opt/module/hadoop-3.1.3/data/namenode </value>
</property>
<!-- 配置datanode存储数据块的目录-->
<property>
	<name>dfs.datanode.data.dir</name>
	<value>file:///opt/module/hadoop-3.1.3/data/datanode </value>
</property>
<!--指定block副本数为3,该数字不能超过主机数。 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
<!--设置hdfs的操作权限,设置为false表示任何用户都可以在hdfs上操作并且可以使用插件 -->
<property>
	<name>dfs.permissions</name>
	<value>false</value>
</property>
  • 图52:配置 hdfs-site.xml文件
4.4、配置 yarn-site.xml文件
vim yarn-site.xml

按O插入以下内容

<!-- 指定 MR 走 shuffle -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
	<name>yarn.nodemanager.env-whitelist</name>
	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
  • 图53:配置 yarn-site.xml文件
配置 yarn-site.xml文件
4.5、配置 mapred-site.xml文件
vim mapred-site.xml

按O插入以下内容

<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
  • 图54:配置 mapred-site.xml文件
配置 mapred-site.xml文件

5.编写xsync分发脚本

5.1、在/home/hadoop/bin 目录下创建 xsync 文件
cd /home/hadoop
mkdir bin
cd bin
vim xsync

插入以下内容:

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
   echo Not Enough Arguement!
   exit;
fi
#2. 遍历集群所有机器
for host in hadoop01 hadoop02 hadoop03 hadoop04
do
   echo ==================== $host ====================
   #3. 遍历所有目录,挨个发送
   for file in $@
   do
       #4. 判断文件是否存在
       if [ -e $file ]
           then
               #5. 获取父目录
               pdir=$(cd -P $(dirname $file); pwd)
               #6. 获取当前文件的名称
               fname=$(basename $file)
               ssh $host "mkdir -p $pdir"
               rsync -av $pdir/$fname $host:$pdir
           else
               echo $file does not exists!
       fi
   done
done
  • 图55:编写xsync分发脚本
编写xsync分发脚本
5.2、设置xsync权限
chmod 777 xsync
  • 图55:设置xsync权限
设置xsync权限

三、克隆三台虚拟机:Hadoop02,Hadoop03,Hadoop04

1、克隆虚拟机

  • 图56:克隆虚拟机
克隆虚拟机
克隆虚拟机
-
克隆虚拟机
-
克隆虚拟机
-

注意:Hadoop03和Hadoop04也是同样的操作,这里我就只演示了Hadoop02的克隆操作

2、修改修改IP地址和主机名称

参考:二、2.1、IP地址和主机名称更改

修改修改IP地址和主机名称
修改修改IP地址和主机名称
-
修改修改IP地址和主机名称
-

重启

reboot

3、使用Xshell链接

参考:二、3.1、使用Xshell 链接CentOS 7

4、重新加载profile

参考:二、3.9.4、重新加载profile

四、群起集群

1、SSH免密登录配置

1.1、生成公钥和私钥

切换到家目录

cd /home/hadoop/

输入以下代码

ssh-keygen -t rsa

注:需敲三个回车,就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)

注:Hadoop102、Hadoop103和Hadoop104也是同样操作

生成公钥和私钥
1.2、拷贝公钥到目标机器上

切换到家目录后输入以下代码

ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
ssh-copy-id hadoop04

注意:
还需要在 hadoop02 上采用 hadoop 账号配置一下无密登录到 hadoop01、hadoop02、hadoop03、
hadoop04 服务器上。
还需要在 hadoop03 上采用 hadoop 账号配置一下无密登录到 hadoop01、hadoop02、hadoop03、
hadoop04 服务器上。
还需要在 hadoop04 上采用 hadoop 账号配置一下无密登录到 hadoop01、hadoop02、hadoop03、
hadoop04 服务器上。
还需要在 hadoop01 上采用 root 账号,配置一下无密登录到 hadoop01、hadoop02、hadoop03、
hadoop104;

2、配置 workers(在Hadoop01上操作)

cd /opt/module/hadoop-3.1.3/etc/hadoop/

编辑workers

vim workers

默认为localhost,删除localhost,插入以下内容:

hadoop01
hadoop02
hadoop03

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

  • 图55:配置 workers
配置 workers

3、格式化 NameNode

hdfs namenode -format

如果集群是第一次启动,需要在 hadoop 节点格式化 NameNode(注意:格式
化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找
不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停
止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式
化。)

格式化 NameNode

4、启动 HDFS

/opt/module/hadoop-3.1.3/

sbin/start-dfs.sh

||-

.安装zookeeper

3.1、下载zookeeper

进入要下载的版本的目录,选择.tar.gz文件下载
下载链接:http://archive.apache.org/dist/zookeeper/
注意:点击进入之后,会显示zookeeper文件的下载目录,如图所示,显示了多个版本可以下载。alpha版本是内测,功能不是很完全的,能够满足一定的需要;beta是公测版本,基本上可以满足要求,可以适当的根据需要选择;如果是对稳定性要求非常高的话,最好是选择正式发布的版本。对于zookeeper版本一般来讲越新越好,也就是我们安装hbase的时候,可以使用新版本。这里我选择选择是版本是apache-zookeeper-3.6.3

在这里插入图片描述
3.2、上传zookeeper到Hadoop

打开Xshell,找到新建文件传输
找到已经下载的apache-zookeeper-3.6.3.tar.gz,并拖动到Hadoop窗口,完成之后关闭,并查看是否传输成功

上传zookeeper

使用下方命令解压apache-zookeeper-3.6.3.tar.gz到/opt/module/目录

tar -zxvf apache-zookeeper-3.6.3.tar.gz -C /opt/module/
解压zookeeper
3.3、配置修改
3.3.1、将/opt/module/zookeeper-3.5.7/conf这个路径下的zoo_sample.cfg修改为zoo.cfg;
cd opt/module/apache-zookeeper-3.6.3/conf/

mv zoo_sample.cfg zoo.cfg
修改名称
3.3.2、打开zoo.cfg文件,修改dataDir路径:

打开zoo.cfg文件

vim zoo.cfg

修改如下内容:

dataDir=/opt/module/apache-zookeeper-3.6.3/zkData
修改zoo.cfg
3.3.3、在/opt/module/zookeeper-3.5.7/这个目录上创建zkData文件夹
mkdir zkData
创建zkData
3.4、操作Zookeeper
3.4.1、启动Zookeeper
bin/zkServer.sh start

总结

提示:这里对文章进行总结:

**

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知趣乄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值