舒适的 Hadoop MapReduce 开发环境

环境一览

  • Apache Maven
  • IntelliJ IDEA

安装 Apache Maven

  • 确保已配置好 JAVA 环境,命令行输入 echo %JAVA_HOME% 检查是否有正确输出
  • Apache Maven 官网 下载 Binary zip archive 并解压
  • 将解压出目录的 bin 目录添加到系统环境变量 PATH
  • 打开命令行输入 mvn -v 检查是否有 Maven 版本信息等输出

安装 IntelliJ IDEA

  • 进入 JetBrains 官网
  • 找到 IntelliJ IDEA 下载
  • Ultimate 版本包含高级功能,需付费
  • Community 版本满足日常使用
    官方下载页

创建一个 mapreduce 项目

  • 打开 IntelliJ IDEA 后创建新的项目,选择 maven 项目
  • 新建 Maven 项目
  • 命名 GroupIdArtifactId ,然后完成项目创建,等待 IDEA 打开项目

配置 Maven 项目依赖

  • 打开项目根目录的 pom.xml 文件,向其中追加配置信息,完整配置文件参考
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
<properties>
<hadoop-version>2.9.2</hadoop-version>
</properties>
<groupId>mapreduce</groupId>
<artifactId>mapreduce</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop-version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop-version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hadoop-version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>${hadoop-version}</version>
</dependency>
</dependencies>
</project>
  • 其中 properties.hadoop-version 为当前所用 hadoop 版本 若有不同可根据需要修改
  • 示例所用 JDK 版本1.8 若有不同需修改
  • 修改完成后,在 pom.xml右击 -> Maven -> Reimport
  • Maven Reimport
  • 这个过程可能较长,速度与网络有关,请耐心等待

配置 Artifacts 用于 jar 打包

  • 打开 Project Structure 选择 Artifacts 点击 + 号 -> JAR -> From modules with dependencies…
  • 配置 Artifacts
  • 点击 OK
  • src/main/java 目录中编写代码
  • 代码编写完成后可以通过 Build -> Build Artifacts… 将程序生成 jar
  • jar 包默认生成在 out/artifacts/*_jar/ 目录
  • 可以通过 java -cp *.jar [<PackageName>.[<SubPackageName>.]...]<MainClassName> 测试程序

将生成的 jar 上传到服务器

  • Ultimate 版本功能 Deployment

    • 选择 Tools -> Deployment -> Configuration…
    • 配置 Deployment
    • 点击 + 号 -> SFTP
    • 请确保服务器/虚拟机中 sshd 服务处于 active (running) 状态”

    • 输入服务器/虚拟机 IP 并填入其用户名密码,可以点击 Test Connection 来测试连接
    • 填入用户名和密码
    • 可以在 Mappings 中配置路径,决定之后上传到服务器/虚拟机的那个路径中
    • 定义 Mappings
    • 此时,我们可以在项目目录中右键 -> Deployment,将某个文件或者整个目录上传到服务器/虚拟机中
    • 通常,我们只将 jar 包上传到生产环境即可
  • 或者使用 scp 等方式将 jar 上传到服务器/虚拟机

  • 通过 hadoop jar *.jar <InputDir> <OutputDir> <OtherArgs> 来执行 MapReduce 作业