12--配置IDEA远程调试Hadoop程序(Hadoop HA下)

1. 设置hdfs-site.xml

试验环境下,可以把hdfs-site.xml中的dfs.permissions.enabled的值设置为false,从而关闭HDFS的访问权限限制,方便客户端远程调试。

但在生产环境,不要使用此方法。


2. 将core-site.xml,hdfs-site.xml,log4j.properties拷贝到代码工程的resource路径下

采用Hadoop HA配置时,因为core-site.xml中的 fs.defaultFS的value不是某台NameNode机器的路径,

而是在hdfs-site.xml中定义的dfs.nameservices,真实的两台NameNode在hdfs-site.xml中定义。

所以,也要把hdfs-site.xml拷贝到resource路径下。

如果没有配置HA,可能不需要拷贝hdfs-site.xml文件(但我没有试验这种情况,只是其他blog没有拷贝hdfs-site.xml)

注意:拷贝core-site.xml后一定要把hadoop.tmp.dir的配置注释掉,

否则远程运行mapreduce程序时,会把临时文件写到本机的${hadoop.tmp.dir}路径下


3. 在Run/Debug Configuration中,把HDFS路径加入到Program arguments中

4. 因为在MapReduce程序的context.write()方法在目标文件已创建的情况下,无法先删除再创建,
所以可以在创建文件的代码执行前,先将目标文件删除掉。例如调用此方法:
public class MyUtils {
    public static void deleteDir(Configuration conf, String dirPath) throws IOException{
        FileSystem fs=FileSystem.get(conf);
        Path target=new Path(dirPath);
        if(fs.exists(target)){
            boolean delResult = fs.delete(target,true);
            if(delResult){
                System.out.println(target + " has been deleted sucessfullly.");
            } else {
                System.out.println(target + " deletion failed.");
            }
        }
    }
}

5. 运行程序进行验证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值