IDEA项目中实现伪分布的MapReduce作业的问题
来源:互联网 发布:linux ioremap 失败 编辑:程序博客网 时间:2024/06/11 11:05
概要
这篇文章并不是介绍如何搭建伪分布的hadoop集群,也不是介绍如何实现一个MR作业并提交的,只是一篇记录了自己在尝试实现伪分布集群上跑MR作业时遇到的一个问题
背景
搭好伪分布的hadoop集群,写好一个简单的MR作业并在客户端提交,貌似没什么问题,但是当我把hadoop(yarn和hdfs)停了之后,发现作业还是可以跑。所以我怀疑自己跑的是单机模式
验证
怎么验证呢?hadoop用的配置类是org.apache.hadoop.conf.Configuration,在API文档里可以看到这几句话:
Unless explicitly turned off, Hadoop by default specifies two resources, loaded in-order from the classpath:
- core-default.xml: Read-only defaults for hadoop.
- core-site.xml: Site-specific configuration for a given hadoop installation.
于是,我在代码中加了一句:System.out.println(conf.get("fs.defaultFS"))
得到的结果是file:///
,由此可见,该作业的确没有使用伪分布的配置,而是直接单机运行了。
修改
为了将单机模式修改为伪集群模式运行,最重要的是要解决配置问题,因为客户端需要读取到配置文件才知道HDFS的位置,所以,需要将core-site.xml
文件拷贝一份放到工程类路径下。具体做法是:在作业运行的驱动类的maven项目模块的src/main目录下建好resources目录,将core-site.xml
放到其中即可。注意,如果该配置文件在resources文件夹的子目录中时(为了管理配置文件方便需要建子目录),Configuration类自动读取不到,因此要在代码中读取配置文件。例如配置文件在resources下的Hadoop文件夹中,需要这样写:
Configuration.addDefaultResource("Hadoop/core-site.xml");
ps:如果工程源文件的文件夹已经加入配置文件而查看maven编译后的target目录却不包含该配置文件,可以让maven同步一下,例如IDEA中可以右键单击项目,选择maven一栏的”Generate Sources and Update Folders”
- IDEA项目中实现伪分布的MapReduce作业的问题
- Hadoop伪分布安装详解+MapReduce运行原理+基于MapReduce的KNN算法实现
- Hadoop中伪分布的搭建
- Hadoop伪分布模式安装以及在Eclipse中运行第一个MapReduce项目
- 在xbox配置hadoop伪分布中主要遇到的问题以及解决的办法
- Hadoop环境的搭建过程中的问题(伪分布)
- hadoop的伪分布安装
- HADOOP的伪分布搭建
- hadoop2的伪分布部署
- hadoop的伪分布安装
- hadoop的伪分布安装
- Hadoop的伪分布安装
- hadoop的伪分布安装
- IntelliJ IDEA中一个项目里有多个git项目的问题
- IntelliJ IDEA中一个项目里有多个git项目的问题
- MapReduce 作业的生命周期
- 组合式的MapReduce作业
- mapreduce的作业流程
- 关于这段时间翻译的一点感悟
- sql优化技巧
- 529. Minesweeper\74. Search a 2D Matrix
- OpenGL核心技术之法线贴图
- MySql数据库相关问题整理
- IDEA项目中实现伪分布的MapReduce作业的问题
- Android手势密码view笔记(一)
- REDIS安装以及日常使用
- oracle转mysql的工具navicat
- Linux系统安装Hadoop+Hbase+zookeeper
- Android 对文件存储目录的认识
- 比较不错的网站
- 关于 strlen 和 sizeof的区别
- 基础的mysql语句+将mysql做成服务