Hadoop 再探讨

目录

Hadoop 的优化与发展

Hadoop 的不足与改进

Hadoop 的不足:

改进和进展:

HDFS 2.0 的全新特性

HDFS HA

1. HDFS 1.0 的单点故障问题

2. HDFS HA 的 Active/Standby 模式

3. HDFS HA 的工作原理

4. HDFS HA 的优势

5. HDFS HA 的应用场景

HDFS 联邦

1. HDFS 1.0 的命名空间限制

2. HDFS 联邦的优势

3. HDFS 联邦的工作原理

4. HDFS 联邦的应用场景

Erasure Coding(纠删码)

1. 传统副本机制的局限性

2. Erasure Coding 的工作原理

3. Erasure Coding 的优势

4. Erasure Coding 的应用场景

新一代资源管理调度框架 YARN

MapReduce 1.0 的缺陷

1. 缺乏灵活性:

2. 资源利用效率低:

3. 扩展性受限:

4. 容错性差:

5. 调度效率低:

YARN 的设计思路

YARN 的工作结构

1. Resource Manager(RM)

2. Node Manager(NM)

3. Container

YARN 的工作流程

1. 应用程序提交

2. 资源申请

3. 任务运行

YARN 框架与 MapReduce 1.0 的对比

Hadoop 生态系统中的功能组件

Hive

HBase

Spark

Kafka

Storm

Flume

Oozie

Zookeeper


Hadoop 的优化与发展

        Hadoop 作为大数据处理的开源框架,自诞生以来已经历了十余年的发展。虽然它极大地推动了大数据行业的发展,但也逐渐暴露出一些不足之处。为了更好地适应不断变化的数据处理需求和技术发展趋势,Hadoop 也在不断优化和发展。

Hadoop 的不足与改进

        Hadoop 彻底改变了我们处理和分析大型数据集的方式。它的分布式计算框架 MapReduce 和分布式文件系统 HDFS 使其成为大数据处理的基石。然而,随着大数据处理需求的不断发展,Hadoop 也面临着一些挑战和局限性。

Hadoop 的不足:
  1. MapReduce 编程模型:

    • 简单性: MapReduce 编程模型虽然易于理解,但对于复杂的数据分析任务可能过于简单。其两阶段方法(Map 和 Reduce)可能不适合复杂的处理流水线。

    • 实时数据处理: MapReduce 主要设计用于批量处理离线数据,因此对于实时数据处理和迭代计算效果不佳。

    • 流数据处理: MapReduce 的批处理性质使其难以处理流数据,而流数据需要在数据到达时进行连续处理。

  2. 文件系统:

    • HDFS 性能瓶颈: HDFS 的传统 NameNode/DataNode 架构可能会成为性能瓶颈,尤其是在处理大型数据集时,因为 NameNode 管理所有文件的元数据。

    • 数据结构灵活性: HDFS 主要设计用于在文件中存储非结构化数据,缺乏对结构化和半结构化数据格式的支持。

  3. 生态系统:

    • 复杂数据分析支持: Hadoop 的生态系统主要面向离线数据处理,可能不太适合机器学习和深度学习等复杂数据分析任务。

    • 安全问题: Hadoop 的生态系统容易受到安全漏洞的影响,需要持续的安全增强和防护措施。

改进和进展:

为了解决这些不足,Hadoop 社区一直在努力改进和增强平台:

  1. 计算框架:

    • 新的计算框架: 引入 Apache Spark 和 Apache Flink 等新的计算框架提供了更通用的 API,支持多种编程语言,并具有流数据处理和迭代计算的功能。

    • MapReduce 框架增强: 对 MapReduce 框架的优化提高了其性能和效率,使其更适用于某些用例。

  2. 文件系统:

    • HDFS 架构改进: 提出新的 HDFS 架构,例如 HDFS Federation 和 HDFS Erasure Coding,以提高性能、可扩展性和可靠性。

    • 替代分布式文件系统: 开发 Apache Kudu 和 Apache Ozone 等替代分布式文件系统,提供了具有不同存储特性和功能的选择。

  3. 生态系统扩展:

    • 生态系统扩展: Hadoop 的生态系统已经扩展到机器学习、深度学习和物联网 (IoT) 应用程序,拓宽了其范围。

    • 安全强化: 已解决安全漏洞,并加强了安全措施以保护 Hadoop 部署。

HDFS 2.0 的全新特性

        HDFS(Hadoop 分布式文件系统)是 Hadoop 中的核心组件之一,它提供高可用性、高可靠性和可扩展性,能够存储和管理海量数据。随着 Hadoop 的发展,HDFS 也不断进化,HDFS 2.0 版本引入了多项新特性,使它变得更加强大。

HDFS HA

        HDFS HA(高可用性)是 HDFS 2.0 中引入的关键特性,旨在解决 HDFS 1.0 中 NameNode 单点故障问题,提升 HDFS 集群的可用性和可靠性。

1. HDFS 1.0 的单点故障问题

        在 HDFS 1.0 中,每个集群只有一个 NameNode,负责管理集群的元数据,包括文件和目录的名称、位置、权限等信息。如果 NameNode 出现故障,整个集群将无法正常工作,导致数据不可访问和服务不可用。

2. HDFS HA 的 Active/Standby 模式

HDFS HA 通过引入 Active/Standby 模式解决了 NameNode 单点故障问题。在这种模式下,集群中可以同时运行多个 NameNode,其中一个处于 Active 状态,另一个或多个处于 Standby 状态。

  • Active NameNode: 负责处理所有数据读写请求,并实时将元数据更新同步到 Standby NameNode。
  • Standby NameNode: 从 Active NameNode 同步元数据,并保持与 Active NameNode 的心跳连接。当 Active NameNode 出现故障时,Standby NameNode 会迅速接管其工作,成为新的 Active NameNode。
3. HDFS HA 的工作原理

        HDFS HA 的工作原理主要体现在以下几个方面:

  • 元数据同步: Active NameNode 会定期将元数据更新同步到 Standby NameNode。同步方式可以是推模式或拉模式。
  • 心跳机制: Active NameNode 和 Standby NameNode 会保持心跳连接,以监测彼此的状态。如果 Active NameNode 出现故障,Standby NameNode 会停止收到心跳包。
  • 故障转移: 当 Active NameNode 出现故障时,Standby NameNode 会通过选举机制成为新的 Active NameNode。选举机制可以是基于 ZooKeeper 的选举,也可以是基于其他机制。
4. HDFS HA 的优势

HDFS HA 的主要优势包括:

  • 高可用性: 能够确保 HDFS 集群在 NameNode 出现故障时依然能够正常工作,避免数据不可访问和服务不可用。
  • 高可靠性: 能够通过多个 Standby NameNode 来提高 HDFS 集群的可靠性,即使多个 NameNode 出现故障,也能保证集群的可用性。
  • 易于管理: HDFS HA 提供了方便的管理工具,可以轻松配置和管理 NameNode 的故障转移。
5. HDFS HA 的应用场景

HDFS HA 适用于对数据可用性和可靠性要求较高的场景,例如:

  • 生产环境: 在生产环境中,HDFS HA 可以确保重要的业务数据始终可访问和可用。
  • 关键任务: 对于需要 24/7 运行的关键任务,HDFS HA 可以确保服务不会因 NameNode 故障而中断。
  • 大数据分析: 在大数据分析场景中,HDFS HA 可以确保海量数据的存储和分析不会因 NameNode 故障而受到影响。

HDFS 联邦

        HDFS 联邦(Federation)是 HDFS 2.0 中引入的重要特性,旨在解决 HDFS 1.0 中单一命名空间的局限性,提升 HDFS 集群的可扩展性和灵活性。

1. HDFS 1.0 的命名空间限制

        在 HDFS 1.0 中,每个集群只有一个 NameNode,负责管理整个集群的元数据,包括文件和目录的名称、位置、权限等信息。这意味着整个集群只能拥有一个单一的命名空间,所有数据都存储在这个命名空间中。这种架构存在以下两个主要限制:

  • 可扩展性受限: 单一命名空间限制了集群的可扩展性。随着数据量的增长,NameNode 可能会成为性能瓶颈,影响集群的性能和效率。
  • 管理复杂度增加: 由于所有数据都存储在一个命名空间中,数据管理和维护变得更加复杂,特别是对于大型集群而言。
2. HDFS 联邦的优势

        HDFS 联邦通过引入多个 NameNode 来解决 HDFS 1.0 中的命名空间限制,为 HDFS 集群提供了以下优势:

  • 可扩展性增强: HDFS 联邦允许多个 NameNode 共同管理集群的元数据,每个 NameNode 管理一组 DataNode,可以有效地扩展集群规模,支持海量数据的存储和管理。
  • 灵活性提高: HDFS 联邦支持将不同的数据存储在不同的 NameNode 管理下,可以根据业务需求灵活地划分和管理数据。
  • 隔离性增强: HDFS 联邦可以将不同业务的数据隔离在不同的 NameNode 管理下,避免数据之间相互影响,提高数据安全性和可靠性。
3. HDFS 联邦的工作原理

        HDFS 联邦的核心思想是将一个大的命名空间划分为多个子命名空间,每个子命名空间由一个 NameNode 管理。每个 NameNode 负责管理其子命名空间中的文件和目录,并与其他 NameNode 保持通信,以确保整个集群的元数据一致性。

        HDFS 联邦主要通过以下几个机制来实现:

  • 命名空间划分: 将大的命名空间划分为多个子命名空间,每个子命名空间由一个 NameNode 管理。
  • 元数据同步: NameNode 之间会定期同步元数据,以确保整个集群的元数据一致性。
  • 客户端访问: 客户端可以通过指定子命名空间来访问相应的数据,也可以通过全局命名空间来访问所有数据。
4. HDFS 联邦的应用场景

        HDFS 联邦适用于对可扩展性、灵活性、隔离性要求较高的场景,例如:

  • 大型数据仓库: 在大型数据仓库场景中,HDFS 联邦可以有效地扩展集群规模,支持海量数据的存储和管理。
  • 多业务场景: 在多业务场景中,HDFS 联邦可以将不同业务的数据隔离在不同的 NameNode 管理下,方便管理和维护。
  • 高安全场景: 在高安全场景中,HDFS 联邦可以提高数据安全性和可靠性,避免数据泄露和损坏。

Erasure Coding(纠删码)

        Erasure Coding(纠删码)是 HDFS 2.0 中引入的一项重要特性,旨在通过数学编码技术提升 HDFS 数据存储的效率和可靠性。

1. 传统副本机制的局限性

        HDFS 1.0 中采用传统的副本机制来确保数据可靠性,即:将数据复制多个副本,存储在不同的 DataNode 上。当其中一个副本出现故障时,可以通过其他副本读取数据。这种机制可以有效地保护数据免受单点故障的影响,但也会带来以下两个问题:

  • 存储空间占用: 由于需要存储多个副本,会占用大量的存储空间,特别是对于大规模数据集而言。
  • 维护成本高: 需要维护多个副本的一致性,增加了维护成本和复杂度。
2. Erasure Coding 的工作原理

        Erasure Coding 使用数学编码技术将数据编码成多个数据块,其中原始数据块被称为信息块,其他数据块被称为校验块。校验块的数量取决于纠删码的级别。例如,在 RS(Reed-Solomon)编码中,如果信息块的数量为 k,校验块的数量为 m,那么编码后的数据块总数为 n = k + m。

Erasure Coding 可以通过以下步骤工作:

  1. 将原始数据分割成多个信息块。
  2. 使用数学编码算法生成校验块。
  3. 将信息块和校验块存储在不同的 DataNode 上。
  4. 当需要读取数据时,从任意 n - m 个数据块中读取数据,并通过纠删码算法重建丢失的数据块。
3. Erasure Coding 的优势

        与传统的副本机制相比,Erasure Coding 具有以下优势:

  • 存储空间节省: 可以使用更少的存储空间来保护相同数量的数据,通常可以节省 20%-50% 的存储空间。
  • 维护成本降低: 不需要维护多个副本的一致性,降低了维护成本和复杂度。
  • 灵活性提高: 可以根据具体需求选择不同的纠删码级别,在存储空间和数据保护能力之间进行权衡。
4. Erasure Coding 的应用场景

        Erasure Coding 适用于对存储空间敏感、维护成本高、数据可靠性要求高的场景,例如:

  • 大型数据存储: 在大型数据存储场景中,Erasure Coding 可以有效地节省存储空间,降低存储成本。
  • 云存储: 在云存储场景中,Erasure Coding 可以降低存储成本,并提高数据的可靠性和可用性。
  • 分布式存储: 在分布式存储场景中,Erasure Coding 可以提高存储系统的效率和可靠性。

新一代资源管理调度框架 YARN

        YARN(Yet Another Resource Negotiator)是 Hadoop 中的新一代资源管理调度框架,它解决了 MapReduce 1.0 框架的一些缺陷,提供了更灵活、高效的资源管理和调度能力。

MapReduce 1.0 的缺陷

        MapReduce 1.0 作为 Hadoop 生态系统中的核心计算框架,在简化大数据处理方面发挥了重要作用。然而,随着大数据处理需求的不断发展,MapReduce 1.0 也暴露出了一些缺陷,主要体现在以下几个方面:

1. 缺乏灵活性:

        MapReduce 1.0 仅支持 MapReduce 计算模型,无法满足其他计算框架的需求。例如,对于需要迭代计算或流处理的任务,MapReduce 1.0 的两阶段模型(Map 和 Reduce)显得过于简单和低效。

2. 资源利用效率低:

        JobTracker 负责资源管理和作业调度,但它只为 MapReduce 作业分配资源,而其他类型的作业无法使用这些资源。这意味着集群资源可能存在闲置现象,导致资源利用效率低下。

3. 扩展性受限:

        JobTracker 需要处理整个集群的资源管理和作业调度,随着集群规模的扩大,JobTracker 很容易成为性能瓶颈,影响集群的整体性能和扩展性。

4. 容错性差:

        JobTracker 是 MapReduce 1.0 框架中的单点故障,如果 JobTracker 出现故障,整个集群将无法工作。

5. 调度效率低:

        MapReduce 1.0 采用静态公平调度算法,无法根据作业的实际需求动态调整资源分配,导致调度效率低下。

YARN 的设计思路

        YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 中引入的资源管理和调度框架,旨在克服 MapReduce 1.0 的局限性,为大数据处理提供更加灵活、高效和可扩展的平台。

YARN 的核心设计思路是将资源管理和作业调度分离,主要体现在以下几个方面:

  • 资源管理与作业调度分离: YARN 将资源管理和作业调度分离为两个独立的组件,分别是 Resource Manager 和 ApplicationMaster。Resource Manager 负责管理和分配集群资源,而 ApplicationMaster 负责管理和监控一个应用程序的所有任务。这种分离设计使得 YARN 能够支持多种计算框架,因为不同框架的作业可以向 Resource Manager 申请资源,并使用分配到的资源运行。
  • 层次化的资源管理: YARN 采用层次化的资源管理模型,将集群资源划分为 Container 和 Resource 两种抽象层。Container 是 YARN 中的基本资源单位,代表可以运行一个任务的计算资源;Resource 是 Container 的集合,代表一个节点上可用的总资源。这种层次化的资源管理模型使得 YARN 能够更加灵活地分配资源,并支持多种资源类型。
  • 弹性伸缩: YARN 支持弹性伸缩,可以根据应用的需求动态增加或减少资源。这使得 YARN 能够更好地适应大数据处理的动态性,提高资源利用率。
  • 高可用性: YARN 采用主备模式,确保 Resource Manager 的高可用性。如果主 Resource Manager 出现故障,备用 Resource Manager 会自动接管,确保集群的正常运行。

YARN 的主要组件包括:

  • Resource Manager(RM): 负责管理和分配集群资源,包括启动和停止 Node Manager、接收来自 ApplicationMaster 的资源申请、分配 Container 给 ApplicationMaster 等。
  • Node Manager(NM): 负责管理单个节点上的资源,包括启动和停止 Container、监控节点资源使用情况、向 RM 汇报节点状态等。
  • ApplicationMaster(AM): 负责管理和监控一个应用程序的所有任务,包括向 RM 申请资源、接收 RM 分配的 Container、启动和监控任务等。

YARN 的设计优势:

  • 灵活性: 支持多种计算框架,例如 MapReduce、Spark、Flink 等。
  • 效率: 采用层次化的资源管理模型和弹性伸缩机制,提高资源利用率。
  • 可扩展性: 支持大规模集群,能够满足大数据处理的需求。
  • 高可用性: 采用主备模式,确保 Resource Manager 的高可用性。

YARN 的工作结构

        YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 中引入的资源管理和调度框架,旨在克服 MapReduce 1.0 的局限性,为大数据处理提供更加灵活、高效和可扩展的平台。

YARN 的工作结构主要包括以下三个组件:

1. Resource Manager(RM)

        Resource Manager 负责管理和分配集群资源,是 YARN 的核心组件。RM 的主要职责包括:

  • 接收来自 ApplicationMaster 的资源申请。
  • 根据集群资源情况进行资源分配。
  • 监控集群资源使用情况。
  • 维护集群节点状态。
  • 协调 Node Manager 的工作。

        RM 采用主备模式,确保高可用性。如果主 RM 出现故障,备用 RM 会自动接管,确保集群的正常运行。

2. Node Manager(NM)

        Node Manager 负责管理和监控单个节点上的资源,是 YARN 的代理节点。NM 的主要职责包括:

  • 启动和停止 Container。
  • 监控节点资源使用情况。
  • 向 RM 汇报节点状态。
  • 执行 RM 的指令。

NM 运行在每个集群节点上,负责管理该节点上的资源。

3. Container

        Container 是 YARN 中资源分配和隔离的基本单位,它封装了 CPU、内存、磁盘等资源,应用程序可以在 Container 中运行任务。Container 的主要特点包括:

  • 隔离性: Container 之间相互隔离,可以防止应用程序之间相互影响。
  • 轻量级: Container 的启动和停止速度快,可以提高资源利用率。
  • 可移植性: Container 可以跨节点迁移,方便应用程序的容错处理。

YARN 的工作流程

        YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 中引入的资源管理和调度框架,旨在克服 MapReduce 1.0 的局限性,为大数据处理提供更加灵活、高效和可扩展的平台。

YARN 的工作流程可以概括为以下三个步骤:

1. 应用程序提交

        用户或应用程序提交一个作业到 YARN 集群。作业可以是 MapReduce 作业、Spark 作业、Flink 作业等。作业提交可以通过客户端程序或 YARN Web UI 进行。

2. 资源申请

        作业提交后,YARN 会启动 ApplicationMaster(AM)。AM 负责管理和监控该作业的所有任务。AM 会向 Resource Manager(RM)申请资源,以运行作业所需的 Task。

        RM 负责管理集群资源,包括跟踪集群中所有节点的可用资源,以及接受来自 AM 的资源申请。RM 会根据资源调度策略,为 AM 分配 Container。

        Container 是 YARN 中资源分配和隔离的基本单位,它封装了 CPU、内存、磁盘等资源。AM 可以将 Container 分配给各个 Task。

3. 任务运行

        AM 将 RM 分配的 Container 分配给各个 Task。Task 在 Container 中运行,完成数据处理工作。

        Task 完成后,AM 会将 Container 释放给 RM。当所有 Task 完成后,AM 会向 RM 汇报作业状态。

YARN 框架与 MapReduce 1.0 的对比

        YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 中引入的资源管理和调度框架,旨在克服 MapReduce 1.0 的局限性,为大数据处理提供更加灵活、高效和可扩展的平台。MapReduce 1.0 是 Hadoop 1.0 中的核心计算框架,用于处理大规模数据集。

YARN 框架与 MapReduce 1.0 的主要区别体现在以下几个方面:

1. 架构

  • YARN: 采用分层架构,将资源管理和作业调度分离,分别由 Resource Manager 和 ApplicationMaster 负责。这种架构使得 YARN 更加灵活和可扩展。
  • MapReduce 1.0: 采用集中式架构,JobTracker 负责资源管理和作业调度。这种架构限制了 MapReduce 1.0 的灵活性和扩展性。

2. 支持的计算框架

  • YARN: 支持多种计算框架,如 MapReduce、Spark、Flink 等。
  • MapReduce 1.0: 只能支持 MapReduce 计算模型。

3. 资源利用效率

  • YARN: 可以更有效地利用集群资源,因为它可以为不同类型的应用程序分配资源。
  • MapReduce 1.0: 只能为 MapReduce 作业分配资源,导致集群资源可能存在闲置现象。

4. 扩展性

  • YARN: 具有更好的扩展性,因为它将资源管理和作业调度分离,避免了单点故障问题。
  • MapReduce 1.0: 扩展性受限,JobTracker 容易成为性能瓶颈。

5. 其他

  • YARN: 支持容错性、高可用性等特性。
  • MapReduce 1.0: 容错性、高可用性等特性较差。

总结:

YARN 框架与 MapReduce 1.0 相比,具有更高的灵活性和扩展性,能够更好地满足大数据处理的需求。YARN 已成为 Hadoop 生态系统中的核心基础设施,为各种大数据应用提供统一的资源管理和调度平台。

特性YARNMapReduce 1.0
架构分层架构集中式架构
支持的计算框架多种计算框架MapReduce 计算模型
资源利用效率更高较低
扩展性更佳受限
其他容错性、高可用性等特性容错性、高可用性等特性较差

Hadoop 生态系统中的功能组件

        Hadoop 生态系统是一个庞大的开源社区,除了核心组件 HDFS 和 YARN 之外,还包含众多功能组件,为数据处理提供全方位的解决方案。下面介绍几个重要的功能组件。

Hive

        Hive 是一个基于 Hadoop 的数据仓库,它提供了一套类似 SQL 的查询语言 HiveQL,允许用户使用熟悉的 SQL 语法来查询和分析存储在 Hadoop 中的数据。Hive 将 SQL 查询转换为 MapReduce 或 Spark 任务,并利用 Hadoop 集群的并行处理能力来执行查询,从而简化了大数据的查询和分析工作。

HBase

        HBase 是一个分布式、面向列的数据库,它构建在 HDFS 上,提供高可靠性、高性能和可扩展的数据存储和查询能力。HBase 适合于存储海量、非结构化和半结构化数据,广泛应用于需要快速随机访问和实时读写的场景,如实时数据分析、消息队列等。

Spark

        Spark 是 Hadoop 生态系统中一个新的计算框架,它提供高性能、通用和易于使用的数据处理能力。Spark 支持多种编程语言,包括 Scala、Java、Python 和 R,并提供丰富的 API,可以支持多种数据处理任务,如批处理、流处理、机器学习和图计算等。

Kafka

        Kafka 是一个分布式、高吞吐量的消息队列系统,它具有高可用性、高可靠性和可扩展性,广泛应用于实时数据处理、日志收集和流式数据处理等场景。Kafka 支持高吞吐量和低延迟的消息处理,并提供消息持久化和容错机制,确保消息的可靠传递。

Storm

        Storm 是一个分布式、实时计算系统,它提供对流式数据的实时处理能力。Storm 可以对实时数据流进行连续的、分布式的处理,并支持多种编程语言,包括 Java、C++ 和 Python。它广泛应用于实时数据分析、机器学习和物联网等场景。

Flume

        Flume 是一个分布式、可靠、高可用的日志采集系统,它可以从各种数据源收集日志数据,并将数据传输到 HDFS 或其他数据存储系统中。Flume 具有高吞吐量、高可用性和可扩展性,广泛应用于日志收集、监控和数据集成等场景。

Oozie

        Oozie 是一个工作流调度系统,它可以管理和调度 Hadoop 集群上的作业,支持多种类型的作业,包括 MapReduce、Pig、Hive 等。Oozie 提供了一个易于使用的界面来定义和管理工作流,并支持复杂的工作流调度和管理。

Zookeeper

        Zookeeper 是一个分布式协调服务,它提供配置管理、命名服务、分布式锁和领导者选举等功能,广泛应用于分布式系统中的数据协调和管理。Zookeeper 具有高可用性、高可靠性和高性能,是 Hadoop 生态系统中重要的基础组件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值