1. 写在前面
目标
使用 IDEA 向虚拟机中的 Hadoop 伪分布式集群提交任务,运行 MapReduce 官方示例 WordCount V1.0。
环境说明
- Windows 10
- IDEA 2020.2.2
- CentOS 7.6
- Hadoop 2.9.2
- Maven 3.6.3
- JDK 1.8
2. IDEA 准备 Hadoop 环境
安装插件
JetBrains 提供了连接 Hadoop 集群的插件,可以在 IDEA 上连接 HDFS,非常方便。
进入 File -> Setting -> Plugins 中查找 Big Data Tools,Install 安装即可。
连接 HDFS
可以选择 Hadoop 的安装路径,不过这是在本机上(win10)安装的 Hadoop。
第二种方法就是连接远程的 Hadoop,在测试连接之前需要保证 Hadoop 集群已经启动,这里选择的是第二种。
添加依赖
注意选择对应的版本
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
3. IDEA 运行 WordCount 程序
准备输入文件夹和输出文件夹
$ hadoop fs -cat /demo/wordcount/input/file01
Hello World Bye World
$ hadoop fs -cat /demo/wordcount/input/file02
Hello Hadoop Goodbye Hadoop
运行程序
源代码 WordCountV1.0,如果不想每次都手动删除 output
文件夹,添加下面的代码段:
ps:如果 HDFS 存在 output 文件夹,可以先手动删除(文件夹权限问题),这里只是为了能够在 IDEA 上能够重复运行
// 判断 output 文件夹是否存在,如果存在则删除
Path path = new Path(args[1]);
FileSystem fileSystem = path.getFileSystem(conf);
if (fileSystem.exists(path)) {
fileSystem.delete(path, true);
}
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
设置程序的输入参数,即 args[0]
和 agrs[1]
hdfs://ip:9000/demo/wordcount/input hdfs://ip:9000/demo/wordcount/output
运行结果
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。