在 Windows 上运行 MapReduce 所需的权限
目录
在 Windows 上运行 MapReduce 所需的权限
1 背景
前两天学习的时候遇到执行 MapReduce 任务时报 “Failed to create symlink”、“ CreateSymbolicLink error (1314)” 错误的情况
在 stackoverflow 找到了解答
2 原因
原因是在 driver 中使用了 job.addCacheFile() 方法设置缓存文件
|
|
在 mapper 中从缓存文件创建文件输入流
|
|
这种实现方式,在执行的时候,会借助 winutils.exe 创建软连接,而该操作需要管理员权限
3 解决
-
解决方法一:mapper 改为使用绝对路径,不通过缓存文件
-
1 2
// 使用绝对路径的方式 创建文件输入流 InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("D:\\test\\0806a\\cache\\position.txt"), "UTF-8");
-
-
解决方法二:使用管理员权限开启 IDEA ,可以直接在 IDEA 中执行该 MapReduce 程序
- 也有很多人习惯直接关闭 Windows UAC
4 补充:windows 下启动 hadoop “集群”
就是以管理员方式启动 hadoop “集群” ,然后在集群中运行这个 MapReduce 的 jar 包
-
以管理员方式启动命令行
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# 切换目录 D: cd D:\#Coding\_Environment\hadoop-2.10.1\etc\hadoop # 执行环境配置 hadoop-env.cmd # 启动 hdfs,yarn cd D:\#Coding\_Environment\hadoop-2.10.1\sbin start-dfs.cmd start-yarn.cmd # 执行 MapReduce 程序 cd D:\#Coding\BDdev\S3_M1\hadoop2_mapreduce\hadoop_mapreduce\target hadoop jar ./test.jar com.lagou.mr.map_join.MJDriver