MapReduce应用程序的其它运行方式

**注意:
在生产环境下,MapReduce Application一定是运行在YARN 分布式集群之中
但在测试开发MapReduce程序阶段,可以使用以下方式,来测试代码
**

1.本地计算+本地数据

本地计算指的是借助于windows平台的hadoop环境模拟运行MapReduce程序。
本地数据指的是计算的数据来源于Windows平台,并且输出到本地

1.修改初始化类中如下代码

   //3.指定计算数据的来源位置以及计算结果的输出位置
    TextInputFormat.addInputPath(job,new Path("file:///d:\\my\\my.txt"));
     //输出目录必须为空
     TextOutputFormat.setOutputPath(job,new Path("file:///d:\\my\\result"));

2.运行程序即可

注意:可能会出现以下异常

如出现以下异常

Exception in thread "main"java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)
解决方案:

  1. 在项目的根目录中新建包 org.apache.hadoop.io.nativeio
  2. 在包中新建类 NativeIO
  3. 找到Hadoop的NativeIO类将所有的代码复制到自建的NativeIO中
  4. 修改NativeIO中的源码(关联源码是557,未关联287行),将return true;
  5. 重新运行,得到运行结果

2.本地计算+远程数据

1:修改初始化类

//3. 指定计算数据的来源位置以及计算结果的输出位置
TextInputFormat.addInputPath(job,new Path("hdfs://hadoop:9000/baizhi/data.txt"));
// 注意:计算结果的输出目录必须不存在
TextOutputFormat.setOutputPath(job,new
Path("hdfs://hadoop:9000/baizhi/result3"));

2:运行程序

3.访问控制异常,添加虚拟参数

-DHADOOP_USER_NAME=root

3.远程就算+远程数据

远程计算是指MapReduce应用程序依然运行在YARN 集群中
远程数据指数据依赖来源于HDFS或输出到HDFS

1.修改初始化类

// 添加远程计算的支持
//===============================================================
conf.set("fs.defaultFS", "hdfs://hadoop:9000/");
conf.set("mapreduce.job.jar", "file:///F:\\IdeaProjects\\20190812\\hadoopmapreduce\\
target\\hadoop-mapreduce-1.0-SNAPSHOT.jar");
conf.set("mapreduce.framework.name", "yarn");
conf.set("yarn.resourcemanager.hostname", "hadoop");
conf.set("yarn.nodemanager.aux-services", "mapreduce_shuffle");
conf.set("mapreduce.app-submission.cross-platform", "true");
conf.set("dfs.replication", "1");
//===============================================================

2.将Maven项目重新打包

3.运行程序右键初始化类 --> Run as

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值