大数据学习文档

本地源介绍

本次比赛提供相应的软件压缩包以及相关的xml配置文件、数据集,其地址为

内网地址:http://172.16.47.240/bigdata/(用于实验中下载对应软件,以下源地址使用内网IP)

外网地址:http://39.101.211.115/bigdata/(供浏览器访问查看具体路径及内容)

相关安装软件、xml配置文件Bigdata_Conf.tar.gz的路径在bigdata_tar/下。

注意:配置文件需要自己修改。

MySQL Server的yum源路径为http://172.16.47.240/bigdata/repofile,这里直接提供repo文件为bigdata.repo,直接将其下载至/etc/yum/repos.d/即可,然后就可以下载MySQL Server。

基础部分

1、基础搭建

本次集群搭建共有三个节点,包括一个主节点master,和两个从节点slave1和slave2。具体操作如下:

1.1更改本地源

1.使用本地Windows操作机提供的Xshell或MobaXterm连接比赛平台所提供的master,slave1,slave2三台机器,并按照比赛平台提供的linux用户和密码进行登录,登录成功后开始进行接下来的比赛。

注意连接工具没有在桌面上,点击(或者键入)左下角“windows”,即可看到连接工具。

  1. 修改主机名:hostnamectl set-hostname master(在master执行)
  2. 立即生效:bash

同理修改slave1和slave2的主机名。

  1. hostnamectl set-hostname slave1(在slave1执行)
  2. hostnamectl set-hostname slave2(在slave2执行)

2.配置本地源。通过比赛平台提供源文件下载路径,将本地源文件下载到/etc/yum.repos.d/目录下(三台机器都执行)。

  1. 发信号给yum进程:pkill -9 yum
  2. 进入yum源配置文件:cd /etc/yum.repos.d
  3. 删除所有文件:rm -rf  *
  4. 下载yum源:wget http://172.16.47.240/bigdata/repofile/bigdata.repo
  5. 清除YUM缓存:yum clean all

1.2 配置hosts文件

可以通过ifconfig命令进行查看机器的ip地址或者直接输入比赛平台提供的ip地址。

查看节点地址之后将三个节点的ip地址以及其对应的名称写进hosts文件。这里我们设置为master、slave1、slave2。注意保存退出。

vim /etc/hosts(三台机器都执行)

172.18.38.122 master

172.18.38.123 slave1

172.18.38.124 slave2

1.3 关闭防火墙

  1. 关闭防火墙:systemctl stop firewalld
  2. 查看状态:systemctl status firewalld

注意:当环境重置之后,防火墙会自动开启。

1.4 时间同步

  1. 选择时区:tzselect

给出相应的提示之后,将时间设置写入环境变量。

  1. echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile

1.5下载ntp

  1. yum install -y ntp

master作为ntp服务器:

修改ntp配置文件。屏蔽掉默认的server,设置master作为局域网内时钟源,设置时间服务器的层级为10,为集群主机提供时间服务。

  1. vim /etc/ntp.conf

#注释掉server 0 ~ n

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

server 127.127.1.0               # local clock

fudge 127.127.1.0 stratum 10   #stratum设置为其它值也是可以的,其范围为0~15

修改后注意保存退出。

重启ntp服务(master上执行)

  1. /bin/systemctl restart ntpd.service

其他机器进行同步(在slave1,slave2中执行)

  1. ntpdate master 

1.6 制作定时任务

确保crontab服务开启:

service crond status

/sbin/service crond start

要求:从节点(slave1、slave2)在早八晚五时间段每隔半个小时同步一次时间

  1. crontab -e
  2. 输入i
  3. 添加定时任务:*/30 8-17 * * * /usr/sbin/ntpdate master
  4. 查看定时任务列表:crontab –l

1.5 配置ssh免密

1.在master上执行如下命令生成公私密钥(注意master上执行)

  1. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

2.然后将公钥文件内容添加到授权文件。

  1. cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys

可以将master授权文件复制到slave1、slave2信任授权设置。

  1. scp ~/.ssh/authorized_keys  root@slave1:~/.ssh/
  2. scp ~/.ssh/authorized_keys  root@slave2:~/.ssh/

注意:SSH只需要namenode和datanode之间通信,datanode之间并没有交互,所以SSH公钥只需要namenode和datanode之间交换。

2、安装JDK

以下操作为先在master上操作,然后远程复制到slave1和slave2。参赛选手仅供参考。

首先在根目录下建立工作路径/usr/java。

  1. mkdir -p /usr/java

进入创建的java工作路径。

  1. cd /usr/java

下载java安装包(master上执行)。

  1. wget http://172.16.47.240/bigdata/bigdata_tar/jdk-8u171-linux-x64.tar.gz
  2. tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
  3. rm -rf /usr/java/jdk-8u171-linux-x64.tar.gz
  4. 修改环境变量:vim /etc/profile

添加内容如下:

export JAVA_HOME=/usr/java/jdk1.8.0_171

export CLASSPATH=$JAVA_HOME/lib/

export PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME CLASSPATH

  1. 生效环境变量:source /etc/profile
  2. 查看java版本:java -version

在master中将JDK复制到slave1和slave2中。(在master执行)

  1. scp -r /usr/java root@slave1:/usr/
  2. scp -r /usr/java root@slave2:/usr/

注意:此时需要去slave1和slave2上配置java的环境变量,并使环境变量生效。

3、安装zookeeper

3.1 下载软件

创建工作路径/usr/zookeeper,下载相应软件,解压至工作路径。

mkdir -p /usr/zookeeper && cd /usr/zookeeper

wget http://172.16.47.240/bigdata/bigdata_tar/zookeeper-3.4.10.tar.gz

tar -zxvf /usr/zookeeper/zookeeper-3.4.10.tar.gz -C /usr/zookeeper/

rm -rf  /usr/zookeeper/zookeeper-3.4.10.tar.gz

3.2 配置zookeeper环境变量

  1. vi /etc/profile

#zookeeper

export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10

PATH=$PATH:$ZOOKEEPER_HOME/bin  

  1. 生效环境变量:source /etc/profile

3.3 配置文件zoo.cfg

1.进入zookeeper配置文件夹conf,将zoo_sample.cfg文件拷贝一份命名为zoo.cfg,Zookeeper 在启动时会找这个文件作为默认配置文件。

  1. cd /usr/zookeeper/zookeeper-3.4.10/conf/  &&  mv zoo_sample.cfg zoo.cfg  && vim zoo.cfg

2.对zoo.cfg文件配置如下: 

  1. vim zoo.cfg

修改如下:

tickTime=2000    

initLimit=10

syncLimit=5

dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata

clientPort=2181

dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog

server.1=master:2888:3888

server.2=slave1:2888:3888

server.3=slave2:2888:3888

3.在zookeeper的目录中,创建配置中所需的zkdata和zkdatalog两个文件夹。(在master执行)

  1. cd /usr/zookeeper/zookeeper-3.4.10 && mkdir zkdata  zkdatalog

4.进入zkdata文件夹,创建文件myid,用于表示是几号服务器,用来标识当前主机。master主机中,设置服务器id为1。(集群中设置master为1号服务器,slave1为2号服务器,slave2为3号服务器)

  1. cd /usr/zookeeper/zookeeper-3.4.10/zkdata
  2. echo 1 >> myid

3.4启动ZooKeeper集群

在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本。注意在zookeeper目录下:(三台机器都执行)

  1. 开启服务:zkServer.sh start
  1. 查看状态:zkServer.sh status

通过上面状态查询结果可见,一个节点是Leader,其余的结点是Follower。

至此,zookeeper安装成功。

4、安装hadoop

以下步骤逻辑仅供选手参考:即hadoop安装同样在主节点master上进行配置操作,然后将文件复制到到子节点slave1和slave2。

4.1 解压安装包,配置环境变量

1. 创建工作路径/usr/hadoop,下载相应软件,解压至工作路径。

  1. mkdir -p /usr/hadoop  &&  cd /usr/hadoop
  2. wget http://172.16.47.240/bigdata/bigdata_tar/hadoop-2.7.3.tar.gz
  3. tar -zxvf /usr/hadoop/hadoop-2.7.3.tar.gz -C /usr/hadoop/
  4. rm -rf /usr/hadoop/hadoop-2.7.3.tar.gz

2.添加hadoop环境变量(三台机器执行)

  1. vim /etc/profile

添加如下内容:

#hadoop

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使用以下命令使profile生效:

  1. source /etc/profile

4.2 配置hadoop各组件

hadoop的各个组件的都是使用XML进行配置,这些文件存放在hadoop的etc/hadoop目录下。

配置文件

配置对象

主要内容

hadoop-env.sh

hadoop运行环境

用来定义Hadoop运行环境相关的配置信息;

core-site.xml

集群全局参数

定义系统级别的参数,包括HDFS URL、Hadoop临时目录等;

hdfs-site.xml

HDFS参数

定义名称节点、数据节点的存放位置、文本副本的个数、文件读取权限等;

mapred-site.xml

MapReduce参数

包括JobHistory Server 和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等;

yarn-site.xml

集群资源管理系统参数

配置ResourceManager ,nodeManager的通信端口,web监控端口等;

1. hadoop-env.sh运行环境

  1. cd $HADOOP_HOME/etc/hadoop
  2. vim hadoop-env.sh

输入以下内容,修改java环境变量:

export JAVA_HOME=/usr/java/jdk1.8.0_171

  1. 也可以直接输入命令:echo "export JAVA_HOME=/usr/java/jdk1.8.0_171" >> hadoop-env.sh

键入“Esc”,退出编辑模式,使用命令“:wq”进行保存退出。

2. core-site.xml全局参数 

  1. vim core-site.xml

<configuration>

<property>

  <name>fs.default.name</name>

   <value>hdfs://master:9000</value>

</property>

<property>

  <name>hadoop.tmp.dir</name>

   <value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>

</property>

<property>

  <name>io.file.buffer.size</name>

   <value>131072</value>

</property>

<property>

  <name>fs.checkpoint.period</name>

   <value>60</value>

</property>

<property>

  <name>fs.checkpoint.size</name>

   <value>67108864</value>

</property></configuration>

master:在主节点的ip或者映射名。

9000:主节点和从节点配置的端口都是9000。

3. hdfs-site.xml配置文件

dfs.replication:因为hadoop是具有可靠性的,它会备份多个文本,这里value就是指备份的数量(小于等于从节点的数量)。

在<configuration></configuration>中加入以下代码

<property>

 <name>dfs.replication</name>

   <value>2</value>

 </property>

 <property>

   <name>dfs.namenode.name.dir</name>

   <value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>

 </property>

 <property>

   <name>dfs.datanode.data.dir</name>

   <value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>

 </property>

4. YARN框架运行环境

找到JAVA_HOME参数位置,将前面的#去掉,将其值修改为本机安装的JDK的实际位置。

vim yarn-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_171

也可以直接输入命令:

echo "export JAVA_HOME=/usr/java/jdk1.8.0_171" >> yarn-env.sh

5. YARN框架的核心配置

YARN 框架的核心配置文件,用于配置 YARN 进程及 YARN 的相关属性。

首先需要指定 ResourceManager 守护进程所在主机,默认为 0.0.0.0,即当前设备,所以这里指定为master,端口为18141;

其次需要设置 NodeManager 上运行的辅助服务,需配置成 mapreduce_shuffle 才可运行 MapReduce 程序。

在<configuration></configuration>中加入以下代码

<!-- 指定ResourceManager的地址-->

<property>

 <name>yarn.resourcemanager.address</name>

   <value>master:18040</value>

 </property>

 <property>

   <name>yarn.resourcemanager.scheduler.address</name>

   <value>master:18030</value>

 </property>

 <property>

   <name>yarn.resourcemanager.webapp.address</name>

   <value>master:18088</value>

 </property>

 <property>

   <name>yarn.resourcemanager.resource-tracker.address</name>

   <value>master:18025</value>

 </property>

<property>

 <name>yarn.resourcemanager.admin.address</name>

   <value>master:18141</value>

 </property>

<!-- 指定reducer获取数据的方式-->

 <property>

  <name>yarn.nodemanager.aux-services</name>

  <value>mapreduce_shuffle</value>

 </property>

 <property>

  <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>

  <value>org.apache.hadoop.mapred.ShuffleHandler</value>

 </property>

6. 编辑配置计算框架

该文件是MapReduce的核心配置文件,用于指定MapReduce运行时框架。

  1. cp mapred-site.xml.template mapred-site.xml && vim mapred-site.xml

在<configuration></configuration>中加入以下代码

<property>

<!--指定Mapreduce运行在yarn上-->

   <name>mapreduce.framework.name</name>

   <value>yarn</value>

 </property>

注意保存退出。

7. 编写slaves和master文件

编写slaves文件,添加子节点slave1和slave2;

编写master文件,添加主节点master。

  1. echo master > master && echo slave1 > slaves  && echo slave2 >> slaves

8. 格式化hadoop

  1. 格式化namenode:hadoop namenode -format (仅在master中进行操作)

当出现“Storage directory /usr/hadoop/hadoop-2.7.3/hdfs/name has been successfully formatted.”的时候,表明格式化成功。

9. 开启hadoop集群

仅在master主机上开启操作命令。它会带起从节点的启动。(仅在master中进行操作)

  1. 主节点开启服务:start-all.sh

使用hadoop命令“hadoop fs”进行相关操作。

5、安装hive

实验中我们选用hive的远程模式,slave2安装mysql server用于存放元数据,slave1作为hive server作为thrift 服务器,master作为client客户端进行操作。

5.1slave2上安装MySQL server

1.配置过本地源了,安装MySQL Server

  1. 安装MySQL:yum -y install mysql-community-server

2.启动服务

  1. 重载所有修改过的配置文件:systemctl daemon-reload
  2. 开启服务:systemctl start mysqld
  3. 开机自启:systemctl enable mysqld

3.登陆MySQL

安装完毕后,MySQL会在/var/log/mysqld.log这个文件中会自动生成一个随机的密码,获取得这个随机密码,以用于登录MySQL数据库:

  1. 获取初密码: grep "temporary password" /var/log/mysqld.log
  2. 登陆MySQL:mysql -uroot -p(注意中英文)

4.MySQL密码安全策略设置

  1. 设置密码强度为低级:set global validate_password_policy=0;
  2. 设置密码长度:set global validate_password_length=4;
  3. 修改本地密码:alter user 'root'@'localhost' identified by '123456';
  4. 退出:\q

密码强度分级如下:

  1. 0为low级别,只检查长度;
  2. 1为medium级别(默认),符合长度为8,且必须含有数字,大小写,特殊字符;
  3. 2为strong级别,密码难度更大一些,需要包括字典文件。
  4. 密码长度最低长为4,当设置长度为1、2、3时,其长度依然为4。

5. 设置远程登录

  1. 以新密码登陆MySQL:mysql -uroot -p123456
  2. 创建用户:create user 'root'@'%' identified by '123456';
  3. 允许远程连接:grant all privileges on *.* to 'root'@'%' with grant option;
  4. 刷新权限:flush privileges;

6.创建数据库hongyaa;

5.2数据仓库下载安装

1. 下载解压

同样slave1上建立文件夹/usr/hive,然后master中将安装包远程复制到slave1。

  1. mkdir -p /usr/hive  && cd /usr/hive
  2. wget http://172.16.47.240/bigdata/bigdata_tar/apache-hive-2.1.1-bin.tar.gz
  3. tar -zxvf /usr/hive/apache-hive-2.1.1-bin.tar.gz -C /usr/hive/
  4. rm -rf /usr/hive/apache-hive-2.1.1-bin.tar.gz

也可以使用如下命令:

  1. mkdir -p /usr/hive && cd /usr/hive/  && wget http://172.16.47.240/bigdata/bigdata_tar/apache-hive-2.1.1-bin.tar.gz  && tar -zxvf /usr/hive/apache-hive-2.1.1-bin.tar.gz -C /usr/hive/  && rm -rf /usr/hive/apache-hive-2.1.1-bin.tar.gz

2. 设置系统变量

修改/etc/profile文件设置hive环境变量。(master和slave1都执行)

  1. vim /etc/profile

#hive

export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin

export PATH=$PATH:$HIVE_HOME/bin

  1. 生效环境变量:source /etc/profile

3. 设置HIVE运行环境

  1. cd $HIVE_HOME/conf && vim hive-env.sh

对应设置如下:

# 配置Hadoop安装路径

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3

# 配置Hive配置文件存放路径

export HIVE_CONF_DIR=/usr/hive/apache-hive-2.1.1-bin/conf

# 配置Hive运行资源库路径

export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.1.1-bin/lib

4. jline版本冲突问题

由于客户端需要和hadoop通信,所以需要更改Hadoop中jline的版本,即保留一个高版本的jline-jar包。

  1. cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/

5.3 hive元数据配置到MySQL(服务器端slave1)

1. 驱动拷贝

因为服务端需要和Mysql通信,所以服务端需要将Mysql的依赖包放在Hive的lib目录下。

mysql-connector-javaMySQLJDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包。

  1. cd $HIVE_HOME/lib && wget http://172.16.47.240/bigdata/bigdata_tar/mysql-connector-java-5.1.47-bin.jar

2. Slave1作为服务器端配置hive

  1. cd $HIVE_HOME/conf

修改hive-site.xml文件

<configuration>

<!-- Hive产生的元数据存放位置-->

<property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive_remote/warehouse</value>

</property>

<!-- 数据库连接driver,即MySQL驱动-->

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

</property>

<!-- 数据库连接JDBC的URL地址-->

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>

</property>

<!-- MySQL数据库用户名-->

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</property>

<!-- MySQL数据库密码-->

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>123456</value>

</property>

</configuration>

5.4 Master作为客户端配置hive

和slave1中配置方式类似,直接进入conf,进行设置。

Hive服务和metastore在不同的进程内,可能是不同的机器,该模式需要将hive.metastore.local设置为false。

将hive.metastore.uris设置metastore服务器URL,端口设定为9083。

hive-site.xml配置如下:

<configuration>

<!-- Hive产生的元数据存放位置-->

<property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive_remote/warehouse</value>

</property>

<!--- 使用本地服务连接Hive,默认为true-->

<property>

<name>hive.metastore.local</name>

<value>false</value>

</property>

<!-- 连接服务器-->

<property>

<name>hive.metastore.uris</name>

<value>thrift://slave1:9083</value>

</property>

</configuration>

5.7成功启动Hive

1.初始化数据库

slave1上:

  1. schematool -dbType mysql -initSchema

2.启动hive server服务

设置成远程模式之后必须保证先启动metastore服务或者进程,之后才能进行开启客户端。

  1. hive --service metastore(注意空格)

3.启动hive client

  1. hive

创建数据库hongyaa

  1. hive>create database hongyaa;

8.集群节点增加与删除

8.1 添加DataNode --------------slave3

1.基础操作

配置本地源;

关闭防火墙;

临时主机名;

生效时区;

2.修改所有机器的hosts文件

添加slave3的IP及映射。(所有节点)

vim /etc/hosts

xxxxxx  master

xxxxxx  slave1

xxxxxx  slave2

xxxxxx  slave3

3.同步master时间

下载ntp:yum install -y ntp && ntpdate master

关闭提示信息:echo "unset MAILCHECK">> /etc/profile  && source /etc/profile

4.NN与DN之间免密

需要在master机器中将.ssh目录下的公钥认证列表authorized_keys发送给slave3

scp ~/.ssh/authorized_keys root@slave3:~/.ssh/

5.安装JDK和Hadoop

在新的服务器中安装好jdk环境以及hadoop,生效环境变量。

环境变量:vim /etc/profile

#Java

export JAVA_HOME=/usr/java/jdk1.8.0_171

export CLASSPATH=$JAVA_HOME/lib/

export PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME CLASSPATH

#hadoop

export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3

export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

6.修改salves文件

修改hadoop配置目录下slaves文件,添加slave3。(所有节点)

vim $HADOOP_HOME/etc/hadoop/slaves

slave1

slave2

slave3

7.启动节点进程

启动datanode进程:$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode

启动nodemanage进程:$HADOOP_HOME/sbin/yarn-daemon.sh start nodemanager

8.查看集群状态

主节点刷新:hdfs dfsadmin -refreshNodes

均衡blocksbin/start-balancer.sh

查看存活的节点:hdfs dfsadmin -report

也通过浏览器访问namenode和mapreduce,看集群中是否添加了一个节点。

8.2 删除DataNode--------------slave2

1.临时删除节点:(仅做参考)

hadoop-daemon.sh stop datanode

hadoop-daemon.sh stop tasktracker

2.永久删除:(通过此步骤执行)

master主机中hdfs-site.xml配置如下:

<property>

         <name>dfs.hosts.exclude</name>

         <value>/usr/hadoop/hadoop-2.7.3/etc/hadoop/excludes</value>

         <description>拒绝加入集群的节点列表</description>

</property>

3.然后在conf目录下创建一个excludes文件,将需要删除的节点机器名添加到文件中即可。

4.强制重新加载配置:

主节点刷新所有DataNode:hdfs dfsadmin -refreshNodes

查看存活的节点:hdfs dfsadmin -report

可以看到该datanode状态转为Decommission In Progress。(退役)

执行完毕之后显示Decommission Status : Decommissioned

5.删除节点上关闭进程:(slave2)

hadoop-daemon.sh stop datanode

yarn-daemon.sh stop nodemanager

6.(时间间隔较久,500s)再次查看节点状态:hdfs dfsadmin -report

7.最后更新集群配置

数据块重新分布:sbin/start-balancer.sh(数据均衡)

从NameNode的excludes文件及slaves文件、hosts文件中去掉已经移除的主机名

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值