hadoop/mapred 优化方法

本文详细介绍了从Hadoop配置、Job设计、代码级别优化等多个方面入手,通过改造hadoop配置、在Job内合并计算任务、避免不必要的reduce任务、使用自定义MapRunnable、设计高效PARTITIONER分区算法、最大化重用对象、简化循环判定、降低多线程数目、使用位移替代浮点数计算等方法,优化大数据处理流程。同时,文章提供了实例代码,包括自定义的WritableComparable类、OutputFormat实现以及如何避免循环体内的多余判断逻辑。

 

从三个方面着手优化 :
1. hadoop配置
2. 设计mapred/job
3. 代码级别.
4. 改造hadoop

一. conf/hadoop-site.xml配置.
经验要求高, 特别需要结合实际情况.
典型参数如
复制因子,
mapred.child.java.opts,
mapred.tasktracker.map.tasks.maximum,
mapred.tasktracker.reduce.tasks.maximum,
mapred.map.tasks,
mapred.reduce.tasks,
fs.inmemory.size.mb,
dfs.block.size
等等

二. 在同一个job内完成尽可能多的计算任务, 主要是设计key和自定义OutputFormat, 将能合并的计算任务合并.
举例 : 用户访问行为(userid, ip, cookie), 分别统计每个用户的ip数和cookie数.
最简单的设计, 是使用量个job, 分别计算ip数和cookie数.但是我们可以按照下面的思路, 在一个job中完成这两项计算 :
(a). 把userid和字段存储到key中
public class UserKey implements WritableComparable<UserKey>{

    int userId;//userid
    byte field;//0 代表ip, 1代表cookie
    @Override
    public int compareTo(UserKey o) {

        if(userId > o.userId)return 1;
        if(userId < o.userId)return -1;
        if(field > o.field)return 1;
        if(field < o.field)return -1;
        return 0;

    }
    @Override
    public void readFields(DataInput in) throws IOException {
    // TODO Auto-generated method stub
    }
    @Override
    public void write(DataOutput out) throws IOException {
    // TODO Auto-generated method stub
    }

}
(b). 实现自定义的OutputFormat, 下面是两处关键代码如下 :
(x).
SequenceFile.Writer[] writers = new SequenceFile.Writer[2];
writers[0] = SequenceFile.createWriter(FileSystem.get(conf), conf, "ip", IntWritable.class, IntWritable.class, CompressionType.BLOCK, new DefaultCodec());
writers[1] = SequenceFile.createWriter(FileSystem.get(conf), conf, "field", IntWritable.class, IntWritable.class, CompressionType.BLOCK, new DefaultCodec());
(xx).
writers[key.field].append(key.userId, value.get());

三. 避免不必要的reduce任务.
(1). 假定要处理的数据是排序且已经分区的. 或者对于一份数据, 需要多次处理, 可以先排序分区.
(2). 自定义InputSplit, 将单个分区作为单个mapred的输入.
(3). 在map中处理数据, Reducer设置为空.
这样, 既重用了已有的 "排序", 也避免了多余的reduce任务.

四. 使用自定义的MapRunnable.
hadoop自带了两个MapRunnable,
(1). 一个是默认的单线程MapRunnable, org.apache.hadoop.mapred.MapRunner
(2).另一个是多线程的, org.apache.hadoop.mapred.lib.MultithreadedMapRunner.
根据特定情况, 可以自定义MapRunnable,
(1). 启用多线程, 比如web爬行时, 可启用多线程抓取网页.
(2). 避免map时, 单台tasktracker上辅助数据冗余, 比如在多模匹配时, 避免生成多份DFA.

五. 在某些情况下, 利用数据分布特性设计PARTITIONER的分区算法, 避免单个mapred消耗时间过长.
这跟木桶原理有些神似.
比如处理大量字符串时,
(1). 已知首字不同的字符串之间不存在任何关联关系
(2). 原始数据在某些 "首字" 上分布密集, 另一些 "首字" 上分布稀疏.
例如, 原始数据中, 1亿个以3开头, 1亿个以7开头, 3个以6开头.
那么,
(1). 如果以首字对4求余分区, 则 "1亿个以3开头" 和 "1亿个以7开头"将落在同一分区.若hadoop群集只支持同时2个map任务, 则...
(2). 如果以首字对3求余分区, 则 "1亿个以3开头" 和 "1亿个以7开头"将落在不同分区.

六. 最大限度地重用对象, 避免对象的生成/销毁开销.
该点在hadoop自带的 org.apache.hadoop.mapred.MapRunner中尤为突出,
它使用同一个key对象和同一个value对象不停读取原始数据, 再将自身交给mapper处理.
(此处注意, 若要保留该对象的即时状态, 需要clone, 深克隆或浅克隆.)

七. 在逻辑意义上, 合并同一对象. 如dotnet和java中的字符串INTERN技术.

八. 根据已有条件, 简化循环判定.
比如, for(int i = 0; i < end && i < size; i++);
可以改成 :
end = end < size ? end : size;
for(int i = 0; i < end; i++);

九. 降低多线程数目, 而让固定数目的线程循环处理.
比如, 一台机器8个CPU, 现在需要处理80亿个数据,
那么下面两个方案 :
(1). 启动800个线程, 每个线程处理80亿/800个数据.
(2). 启动8个线程(注意, 此处是8个), 每个线程循环处理, 每次循环处理100万个.
通常我个人选择方案(2).因为 :
(1). 最大限度利用了CPU.
(2). 避免了线程调度.
(3). 在java中, 可以使用AtomicInteger控制线程循环, AtomicInteger的效率很高.
(4). 有时, 还可以避免单个线程消耗时间过长.

十. 使用位移替代浮点数计算. 比如用 100 >> 3替代100 * 0.125.
(另外, 我们会需要将某个中间值乘以一个调节因子(经验值), 比如乘以0.12,
如果乘以0.12和0.124 "差不多" 时, 可以考虑直接使用位移).

十一. 避免循环体内不必要的判断逻辑, 与第八条不同.
比如, 处理10亿个数据, 每遇到一个有效数据时, 需要同前一个有效数据进行关联处理(或与前一个中间值进行关联处理),
for(int i = 0; i < size; i++)
{
//1. 判定是否存在前一个有效数据
//2. 如果不存在前一个有效数据, 则continue;
//3. 如果存在前一个有效数据, 则进行关联处理, 再continue.
}
通常在此种需求下, 一旦遇到一个有效数据, 必定会产生一个可供后续紧邻数据关联的值,
那么 :
int i = 0;
for(int i = 0; i < size; i++)
{
//1. data[i]是否有效?
//2. data[i]无效, continue;
//3. data[i]有效, break;
}
for(; i < size; i++)
{
//与前一个有效数据进行关联处理, 再continue.
}

十二. 方法调用过程, 辅助数据尽量放在方法体内, 避免使用全局辅助数据, 一来节省内存, 二来提高对象可重用性.

十三. 尽量不要生成转瞬即逝的对象, 或者专门构建专属对像来完成这一任务.
比如 :
1). 提供直接使用构造函数参数进行序列化的静态方法, 避免先使用参数构造对象再进行序列化.
2). 参考上述第六点.

十四. 利用-1 和 1的关联性, 减少内存使用量, 或携带更多的信息.
比如java.util.Arrays.binarySearch方法的返回值.

十五. 对于方方正正的多位数组Arr[d0][d1][d2]..[dn], 且di >> d(i+1)时, 可以考虑使用一维数组替代, 减少对象.
这是因为java中多位数组实际上使用 "数组的数组" 实现的.

十六. 尽量使key的WritableComparable性能最佳, 尽量使value的Writable性能最佳.
比如使用掩码操作.

十七. 尽早丢弃无关对象.
见 "使用hadoop/mapred的典型计数问题".

十八. 改造hadoop, 使merge过程更具弹性, 或更符合实际需求.
比如 :
1). 使reduce的<key, values>中的values按照顺序迭代.
2). 见 "使用hadoop/mapred的典型计数问题".

十九. 有效设计mapred中的combiner, 尽早降低I/O等操作.
此过程中, 可以结合自定义OutputFormat, 使得同一个Recuder类可同时充当map->merge->reduce中的后两个过程.
见 "使用hadoop/mapred的典型计数问题".

 

 

转自:http://thethethethethethe.spaces.live.com/default.aspx

sqoop import \ > --connect jdbc:mysql://localhost:3306/mydatabase \ > --username root \ > -P \ > --table products \ > --target-dir /user/hadoop/products \ > --fields-terminated-by ',' \ > --lines-terminated-by '\n' \ > --delete-target-dir \ > --num-mappers 1 Warning: /home/ljm1/daolun/servers/sqoop-1.4.6/../hcatalog does not exist! HCatalog jobs will fail. Please set $HCAT_HOME to the root of your HCatalog installation. Warning: /home/ljm1/daolun/servers/sqoop-1.4.6/../accumulo does not exist! Accumulo imports will fail. Please set $ACCUMULO_HOME to the root of your Accumulo installation. 2025-07-05 01:36:29,069 INFO [main] sqoop.Sqoop (Sqoop.java:<init>(92)) - Running Sqoop version: 1.4.6 Enter password: 2025-07-05 01:36:35,176 INFO [main] manager.MySQLManager (MySQLManager.java:initOptionDefaults(69)) - Preparing to use a MySQL streaming resultset. 2025-07-05 01:36:35,177 INFO [main] tool.CodeGenTool (CodeGenTool.java:generateORM(92)) - Beginning code generation 2025-07-05 01:36:35,718 INFO [main] manager.SqlManager (SqlManager.java:execute(757)) - Executing SQL statement: SELECT t.* FROM `products` AS t LIMIT 1 2025-07-05 01:36:35,822 INFO [main] manager.SqlManager (SqlManager.java:execute(757)) - Executing SQL statement: SELECT t.* FROM `products` AS t LIMIT 1 2025-07-05 01:36:35,850 INFO [main] orm.CompilationManager (CompilationManager.java:findHadoopJars(94)) - HADOOP_MAPRED_HOME is /home/ljm1/daolun/servers/hadoop-2.7.4 Note: /tmp/sqoop-ljm1/compile/280c35d4ceb0b5eb13ccf7a0afe259ef/products.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. 2025-07-05 01:36:42,374 INFO [main] orm.CompilationManager (CompilationManager.java:jar(330)) - Writing jar file: /tmp/sqoop-ljm1/compile/280c35d4ceb0b5eb13ccf7a0afe259ef/products.jar SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/home/ljm1/daolun/servers/hadoop-2.7.4/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/home/ljm1/daolun/servers/hbase-1.4.0/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 2025-07-05 01:36:43,216 INFO [main] tool.ImportTool (ImportTool.java:deleteTargetDir(534)) - Destination directory /user/hadoop/products is not present, hence not deleting. 2025-07-05 01:36:43,216 WARN [main] manager.MySQLManager (MySQLManager.java:importTable(107)) - It looks like you are importing from mysql. 2025-07-05 01:36:43,217 WARN [main] manager.MySQLManager (MySQLManager.java:importTable(108)) - This transfer can be faster! Use the --direct 2025-07-05 01:36:43,217 WARN [main] manager.MySQLManager (MySQLManager.java:importTable(109)) - option to exercise a MySQL-specific fast path. 2025-07-05 01:36:43,217 INFO [main] manager.MySQLManager (MySQLManager.java:checkDateTimeBehavior(189)) - Setting zero DATETIME behavior to convertToNull (mysql) 2025-07-05 01:36:43,314 INFO [main] mapreduce.ImportJobBase (ImportJobBase.java:runImport(235)) - Beginning import of products 2025-07-05 01:36:43,375 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1173)) - mapred.jar is deprecated. Instead, use mapreduce.job.jar 2025-07-05 01:36:43,412 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1173)) - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address 2025-07-05 01:36:43,458 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1173)) - session.id is deprecated. Instead, use dfs.metrics.session-id 2025-07-05 01:36:43,462 INFO [main] jvm.JvmMetrics (JvmMetrics.java:init(76)) - Initializing JVM Metrics with processName=JobTracker, sessionId= 2025-07-05 01:36:44,783 INFO [main] db.DBInputFormat (DBInputFormat.java:setTxIsolation(192)) - Using read commited transaction isolation 2025-07-05 01:36:44,854 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:submitJobInternal(198)) - number of splits:1 2025-07-05 01:36:45,148 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(287)) - Submitting tokens for job: job_local745453984_0001 2025-07-05 01:36:46,724 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605463/jackson-mapper-asl-1.9.13.jar <- /home/ljm1/jackson-mapper-asl-1.9.13.jar 2025-07-05 01:36:46,755 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/jackson-mapper-asl-1.9.13.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605463/jackson- 2025-07-05 01:36:46,793 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605464/kite-data-core-1.0.0.jar <- /home/ljm1/kite-data-core-1.0.0.jar 2025-07-05 01:36:46,798 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/kite-data-core-1.0.0.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605464/kite-data-cor 2025-07-05 01:36:46,798 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605465/xz-1.0.jar <- /home/ljm1/xz-1.0.jar 2025-07-05 01:36:46,801 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/xz-1.0.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605465/xz-1.0.jar 2025-07-05 01:36:46,801 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605466/kite-hadoop-compatibility-1.0.0.jar <- /home/ljm1/kite-hadoop-compatibility-1.0.0.j 2025-07-05 01:36:46,805 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/kite-hadoop-compatibility-1.0.0.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605466/ki 2025-07-05 01:36:46,805 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605467/parquet-avro-1.4.1.jar <- /home/ljm1/parquet-avro-1.4.1.jar 2025-07-05 01:36:46,810 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/parquet-avro-1.4.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605467/parquet-avro-1. 2025-07-05 01:36:46,811 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605468/sqoop-1.4.6.jar <- /home/ljm1/sqoop-1.4.6.jar 2025-07-05 01:36:46,818 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/sqoop-1.4.6.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605468/sqoop-1.4.6.jar 2025-07-05 01:36:46,818 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605469/kite-data-hive-1.0.0.jar <- /home/ljm1/kite-data-hive-1.0.0.jar 2025-07-05 01:36:46,829 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/kite-data-hive-1.0.0.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605469/kite-data-hiv 2025-07-05 01:36:46,829 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605470/parquet-generator-1.4.1.jar <- /home/ljm1/parquet-generator-1.4.1.jar 2025-07-05 01:36:46,833 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/parquet-generator-1.4.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605470/parquet-ge 2025-07-05 01:36:46,833 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605471/hsqldb-1.8.0.10.jar <- /home/ljm1/hsqldb-1.8.0.10.jar 2025-07-05 01:36:46,840 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/hsqldb-1.8.0.10.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605471/hsqldb-1.8.0.10.ja 2025-07-05 01:36:46,840 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605472/jackson-annotations-2.3.0.jar <- /home/ljm1/jackson-annotations-2.3.0.jar 2025-07-05 01:36:46,843 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/jackson-annotations-2.3.0.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605472/jackson- 2025-07-05 01:36:46,844 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605473/avro-1.7.5.jar <- /home/ljm1/avro-1.7.5.jar 2025-07-05 01:36:46,849 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/avro-1.7.5.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605473/avro-1.7.5.jar 2025-07-05 01:36:46,849 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605474/ant-contrib-1.0b3.jar <- /home/ljm1/ant-contrib-1.0b3.jar 2025-07-05 01:36:46,852 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/ant-contrib-1.0b3.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605474/ant-contrib-1.0b 2025-07-05 01:36:46,853 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605475/commons-compress-1.4.1.jar <- /home/ljm1/commons-compress-1.4.1.jar 2025-07-05 01:36:46,856 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/commons-compress-1.4.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605475/commons-com 2025-07-05 01:36:46,856 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605476/mysql-connector-java-5.1.47.jar <- /home/ljm1/mysql-connector-java-5.1.47.jar 2025-07-05 01:36:46,864 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/mysql-connector-java-5.1.47.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605476/mysql- 2025-07-05 01:36:46,865 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605477/slf4j-api-1.6.1.jar <- /home/ljm1/slf4j-api-1.6.1.jar 2025-07-05 01:36:46,869 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/slf4j-api-1.6.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605477/slf4j-api-1.6.1.ja 2025-07-05 01:36:46,869 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605478/opencsv-2.3.jar <- /home/ljm1/opencsv-2.3.jar 2025-07-05 01:36:46,873 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/opencsv-2.3.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605478/opencsv-2.3.jar 2025-07-05 01:36:46,874 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605479/parquet-column-1.4.1.jar <- /home/ljm1/parquet-column-1.4.1.jar 2025-07-05 01:36:46,878 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/parquet-column-1.4.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605479/parquet-colum 2025-07-05 01:36:46,879 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605480/jackson-core-asl-1.9.13.jar <- /home/ljm1/jackson-core-asl-1.9.13.jar 2025-07-05 01:36:46,882 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/jackson-core-asl-1.9.13.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605480/jackson-co 2025-07-05 01:36:46,882 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605481/snappy-java-1.0.5.jar <- /home/ljm1/snappy-java-1.0.5.jar 2025-07-05 01:36:46,888 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/snappy-java-1.0.5.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605481/snappy-java-1.0. 2025-07-05 01:36:46,889 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605482/commons-codec-1.4.jar <- /home/ljm1/commons-codec-1.4.jar 2025-07-05 01:36:46,893 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/commons-codec-1.4.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605482/commons-codec-1. 2025-07-05 01:36:46,893 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605483/commons-logging-1.1.1.jar <- /home/ljm1/commons-logging-1.1.1.jar 2025-07-05 01:36:46,897 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/commons-logging-1.1.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605483/commons-logg 2025-07-05 01:36:46,898 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605484/commons-io-1.4.jar <- /home/ljm1/commons-io-1.4.jar 2025-07-05 01:36:46,902 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/commons-io-1.4.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605484/commons-io-1.4.jar 2025-07-05 01:36:46,903 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605485/commons-jexl-2.1.1.jar <- /home/ljm1/commons-jexl-2.1.1.jar 2025-07-05 01:36:46,906 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/commons-jexl-2.1.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605485/commons-jexl-2. 2025-07-05 01:36:46,907 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605486/jackson-databind-2.3.1.jar <- /home/ljm1/jackson-databind-2.3.1.jar 2025-07-05 01:36:46,913 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/jackson-databind-2.3.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605486/jackson-dat 2025-07-05 01:36:46,913 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605487/parquet-jackson-1.4.1.jar <- /home/ljm1/parquet-jackson-1.4.1.jar 2025-07-05 01:36:46,916 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/parquet-jackson-1.4.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605487/parquet-jack 2025-07-05 01:36:46,916 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605488/paranamer-2.3.jar <- /home/ljm1/paranamer-2.3.jar 2025-07-05 01:36:46,919 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/paranamer-2.3.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605488/paranamer-2.3.jar 2025-07-05 01:36:46,920 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605489/parquet-common-1.4.1.jar <- /home/ljm1/parquet-common-1.4.1.jar 2025-07-05 01:36:46,924 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/parquet-common-1.4.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605489/parquet-commo 2025-07-05 01:36:46,925 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605490/avro-mapred-1.7.5-hadoop2.jar <- /home/ljm1/avro-mapred-1.7.5-hadoop2.jar 2025-07-05 01:36:46,929 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/avro-mapred-1.7.5-hadoop2.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605490/avro-map 2025-07-05 01:36:46,930 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605491/ant-eclipse-1.0-jvm1.2.jar <- /home/ljm1/ant-eclipse-1.0-jvm1.2.jar 2025-07-05 01:36:46,932 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/ant-eclipse-1.0-jvm1.2.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605491/ant-eclipse 2025-07-05 01:36:46,933 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605492/parquet-hadoop-1.4.1.jar <- /home/ljm1/parquet-hadoop-1.4.1.jar 2025-07-05 01:36:46,943 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/parquet-hadoop-1.4.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605492/parquet-hadoo 2025-07-05 01:36:46,943 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605493/mysql-connector-java-5.1.32.jar <- /home/ljm1/mysql-connector-java-5.1.32.jar 2025-07-05 01:36:46,947 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/mysql-connector-java-5.1.32.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605493/mysql- 2025-07-05 01:36:46,947 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605494/parquet-format-2.0.0.jar <- /home/ljm1/parquet-format-2.0.0.jar 2025-07-05 01:36:46,950 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/parquet-format-2.0.0.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605494/parquet-forma 2025-07-05 01:36:46,950 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605495/jackson-core-2.3.1.jar <- /home/ljm1/jackson-core-2.3.1.jar 2025-07-05 01:36:46,960 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/jackson-core-2.3.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605495/jackson-core-2. 2025-07-05 01:36:46,960 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605496/parquet-encoding-1.4.1.jar <- /home/ljm1/parquet-encoding-1.4.1.jar 2025-07-05 01:36:46,966 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/parquet-encoding-1.4.1.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605496/parquet-enc 2025-07-05 01:36:46,967 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:sym/mapred/local/1751704605497/kite-data-mapreduce-1.0.0.jar <- /home/ljm1/kite-data-mapreduce-1.0.0.jar 2025-07-05 01:36:46,973 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:setvers/sqoop-1.4.6/lib/kite-data-mapreduce-1.0.0.jar as file:/tmp/hadoop-ljm1/mapred/local/1751704605497/kite-dat 2025-07-05 01:36:47,158 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605463/jackson-mapper-asl-1.9.13.jar 2025-07-05 01:36:47,158 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605464/kite-data-core-1.0.0.jar 2025-07-05 01:36:47,158 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605465/xz-1.0.jar 2025-07-05 01:36:47,158 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605466/kite-hadoop-compatibility-1.0.0.jar 2025-07-05 01:36:47,158 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605467/parquet-avro-1.4.1.jar 2025-07-05 01:36:47,158 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605468/sqoop-1.4.6.jar 2025-07-05 01:36:47,158 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605469/kite-data-hive-1.0.0.jar 2025-07-05 01:36:47,158 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605470/parquet-generator-1.4.1.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605471/hsqldb-1.8.0.10.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605472/jackson-annotations-2.3.0.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605473/avro-1.7.5.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605474/ant-contrib-1.0b3.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605475/commons-compress-1.4.1.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605476/mysql-connector-java-5.1.47.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605477/slf4j-api-1.6.1.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605478/opencsv-2.3.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605479/parquet-column-1.4.1.jar 2025-07-05 01:36:47,159 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605480/jackson-core-asl-1.9.13.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605481/snappy-java-1.0.5.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605482/commons-codec-1.4.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605483/commons-logging-1.1.1.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605484/commons-io-1.4.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605485/commons-jexl-2.1.1.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605486/jackson-databind-2.3.1.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605487/parquet-jackson-1.4.1.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605488/paranamer-2.3.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605489/parquet-common-1.4.1.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605490/avro-mapred-1.7.5-hadoop2.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605491/ant-eclipse-1.0-jvm1.2.jar 2025-07-05 01:36:47,160 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605492/parquet-hadoop-1.4.1.jar 2025-07-05 01:36:47,161 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605493/mysql-connector-java-5.1.32.jar 2025-07-05 01:36:47,188 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605494/parquet-format-2.0.0.jar 2025-07-05 01:36:47,188 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605495/jackson-core-2.3.1.jar 2025-07-05 01:36:47,188 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605496/parquet-encoding-1.4.1.jar 2025-07-05 01:36:47,188 INFO [main] mapred.LocalDistributedCacheManager (LocalDistributedCacheManager.java:maked/local/1751704605497/kite-data-mapreduce-1.0.0.jar 2025-07-05 01:36:47,213 INFO [main] mapreduce.Job (Job.java:submit(1294)) - The url to track the job: http://l 2025-07-05 01:36:47,214 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1339)) - Running job: job_local 2025-07-05 01:36:47,220 INFO [Thread-44] mapred.LocalJobRunner (LocalJobRunner.java:createOutputCommitter(471) 2025-07-05 01:36:47,468 INFO [Thread-44] output.FileOutputCommitter (FileOutputCommitter.java:<init>(108)) - F 2025-07-05 01:36:47,470 INFO [Thread-44] mapred.LocalJobRunner (LocalJobRunner.java:createOutputCommitter(489)uce.lib.output.FileOutputCommitter 2025-07-05 01:36:47,482 ERROR [Thread-44] output.FileOutputCommitter (FileOutputCommitter.java:setupJob(314)) -ucts/_temporary/0 2025-07-05 01:36:47,686 INFO [Thread-44] mapred.LocalJobRunner (LocalJobRunner.java:runTasks(448)) - Waiting f 2025-07-05 01:36:47,688 INFO [LocalJobRunner Map Task Executor #0] mapred.LocalJobRunner (LocalJobRunner.java:84_0001_m_000000_0 2025-07-05 01:36:47,791 INFO [LocalJobRunner Map Task Executor #0] output.FileOutputCommitter (FileOutputCommiAlgorithm version is 1 2025-07-05 01:36:47,828 INFO [LocalJobRunner Map Task Executor #0] mapred.Task (Task.java:initialize(612)) - 2025-07-05 01:36:47,919 INFO [LocalJobRunner Map Task Executor #0] db.DBInputFormat (DBInputFormat.java:setTxIn isolation 2025-07-05 01:36:47,931 INFO [LocalJobRunner Map Task Executor #0] mapred.MapTask (MapTask.java:runNewMapper(7 2025-07-05 01:36:47,959 INFO [Thread-44] mapred.LocalJobRunner (LocalJobRunner.java:runTasks(456)) - map task 2025-07-05 01:36:47,966 WARN [Thread-44] mapred.LocalJobRunner (LocalJobRunner.java:run(560)) - job_local74545 java.lang.Exception: java.io.IOException: Mkdirs failed to create file:/user/hadoop/products/_temporary/0/_tempxists=false, cwd=file:/home/ljm1) at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462) at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522) Caused by: java.io.IOException: Mkdirs failed to create file:/user/hadoop/products/_temporary/0/_temporary/attee, cwd=file:/home/ljm1) at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:455) at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:440) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:911) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:892) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:789) at org.apache.sqoop.mapreduce.RawKeyTextOutputFormat.getRecordWriter(RawKeyTextOutputFormat.java:98) at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.<init>(MapTask.java:647) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:767) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 2025-07-05 01:36:48,217 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1360)) - Job job_local745453984 2025-07-05 01:36:48,221 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1367)) - map 0% reduce 0% 2025-07-05 01:36:48,226 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1380)) - Job job_local745453984 2025-07-05 01:36:48,258 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1385)) - Counters: 0 2025-07-05 01:36:48,265 WARN [main] mapreduce.Counters (AbstractCounters.java:getGroup(234)) - Group FileSystemapreduce.FileSystemCounter instead 2025-07-05 01:36:48,272 INFO [main] mapreduce.ImportJobBase (ImportJobBase.java:runJob(184)) - Transferred 0 b 2025-07-05 01:36:48,277 WARN [main] mapreduce.Counters (AbstractCounters.java:getGroup(234)) - Group org.apach org.apache.hadoop.mapreduce.TaskCounter instead 2025-07-05 01:36:48,277 INFO [main] mapreduce.ImportJobBase (ImportJobBase.java:runJob(186)) - Retrieved 0 rec 2025-07-05 01:36:48,277 ERROR [main] tool.ImportTool (ImportTool.java:run(621)) - Error during import: Import j 这是怎么回事
07-06
package hadoop.tipdm.com; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCountDriver { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); // 加载配置文件 conf.addResource(new Path("/path/to/core-site.xml")); conf.addResource(new Path("/path/to/mapred-site.xml")); Job job = Job.getInstance(conf, "WordCount"); job.setJarByClass(WordCountDriver.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } 没变化imelineservice/lib/joni-2.1.2.jar:/usr/local/hadoop-3.1.4/share/hadoop/yarn/timelineservice/lib/hbase-protocol-1.2.6.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-app-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-common-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-core-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-plugins-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.4-tests.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-nativetask-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-shuffle-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-client-uploader-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/jdiff:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/lib:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/lib-examples:/usr/local/hadoop-3.1.4/share/hadoop/mapreduce/sources STARTUP_MSG: build = https://github.com/apache/hadoop.git -r 1e877761e8dadd71effef30e592368f7fe66a61b; compiled by 'gabota' on 2020-07-21T08:05Z STARTUP_MSG: java = 1.8.0_281 ************************************************************/ 2025-11-04 00:07:17,061 INFO resourcemanager.ResourceManager: registered UNIX signal handlers for [TERM, HUP, INT] Usage: yarn resourcemanager [-format-state-store] [-remove-application-from-state-store <appId>] [-format-conf-store] 2025-11-04 00:07:17,352 INFO resourcemanager.ResourceManager: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down ResourceManager at slave3/192.168.128.133 ************************************************************/ [root@slave3 ~]#
最新发布
11-04
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值