You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hadoop MapReduce实现PageRank时javac编译权限被拒如何解决

问题解决方案

1. 编译权限报错解决

报错原因:从目录权限信息显示,pagerank_classes目录的属主是root,当前执行javac命令的用户是hduser,没有该目录的写入权限,因此无法生成class文件。
解决步骤:

  • 执行命令修改目录属主为当前用户:
    sudo chown -R hduser:hadoop /home/hduser/pagerank/pagerank_classes
  • 权限修改完成后,重新执行原javac编译命令即可。

2. 弃用API警告解决

警告原因:代码中使用的new Job()构造方法在新版本Hadoop中已被标记为弃用,因此编译时会触发警告。
解决步骤:
修改代码中getNewJob方法的实现,将new Job()替换为官方推荐的Job.getInstance():

private static Job getNewJob(int i) throws IOException 
{
    // 替换弃用的new Job()构造方法
    Job job = Job.getInstance();
    job.setJobName("Page Rank "+ String.valueOf(i));
    return job;
}

补充潜在运行问题修复

代码中PageRankMapper和PageRankReducer是PageRank的非静态内部类,静态main方法中无法直接正确加载这两个类,即使编译通过运行时也会报错,需要给两个内部类加上static修饰:

// 增加static修饰
public static class PageRankMapper extends Mapper<LongWritable, Text, Text, Text> 

// 增加static修饰
public static class PageRankReducer extends Reducer<Text, Text, Text, Text>

内容的提问来源于stack exchange,提问作者Yesh Jadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:36:04