hadoop_eclipse及HDT插件的使用

Hadoop Development Tools (HDT)是开发hadoop应用的eclipse插件,http://hdt.incubator.apache.org/介绍了其特点,安装,使用等,针对Windows版的eclipse,介绍一种不同的安装方式、和使用方式。

1 下载HDT

打开:http://hdt.incubator.apache.org/download.html,部分页面:

下载HDT 0.0.2.incubating (Binary)版。点击“tar.gz”,跳转到:

http://www.apache.org/dyn/closer.cgi/incubator/hdt/hdt-0.0.2.incubating/hdt-0.0.2.incubating-bin.tar.gz,部分页面:

点击红框部分的连接,下载HDT,解压看到文件夹内容:

2 安装HDT插件

下载当前最新版(eclipse oxygen)

点击Download Packages。

下载64bit版本。文件为:eclipse-jee-oxygen-3a-win32-x86_64.zip,解压:

将HDT的features和plugins中的文件,对应放到上面的文件夹内。

3 下载hadoop并配置环境变量

下载Hadoop

输入网址:http://hadoop.apache.org/,看到下面的部分。

点击Download进入下载页面:

下载3.0.2版本的binary,注意下载的时候选择一个国内的镜像,这样下载的速度会比较快。解压到指定目录,例如:E:\hadoop-3.0.2。文件夹包括:

配置环境变量

配置HADOOP_HOME、HADOOP_USER_NAME环境变量、PATH(系统变量)

HADOOP_HOME配置为E:\hadoop-2.6.5,PATH添加%HADOOP_HOME%\bin

Windows下开发

为了能在Windows平台下做开发,还需要两个文件winutils.exe和hadoop.dll

4 安装HDT

1)点击顺序:File->Other->展开Hadoop,入下面两幅图所示:

2)选择

,如下图:

给项目取一个名称:MapReduce_4_27,并选择“Use default Hadoop”(默认的设置)。

3)配置Hadoop安装目录

点击2)步奏中的进行配置,其中配置的就是刚才hadoop解压文件的路径。

点击“Apply and Close”,显示如下界面:

点击

,显示如下界面:

最后点击“Finish”。

4)导入开发包和javadoc文档

右键->项目属性->选择Property->在弹出的对话框左侧列表中选择Java Build Path->选择Libraries->选择Add Library->弹出窗口内选择User Library->点击Next->点击User Libraries->点击New->在弹出的窗口内输入必要信息->将必要的jar包添加进去。

所需的开发包在E:\hadoop-3.0.2\share\hadoop,这个文件夹是刚才解压hadoop安装包解压的文件夹。

导入doc文档

右键lib文件夹->点击Build Path->点击Config Build Path

点击Javadoc Location->点击Browse选择doc文档路径。

点击validate可以验证是否是正确的路径,下面分别展示了正确的路径和非正确的路径验证信息。

5 使用HDT(MapReduce编程)

Mapper:创建Mapper类的子类

例,模板自动生成的map函数框架

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class Tmap extends Mapper<LongWritable, Text, Text, IntWritable> {

    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
    }

}

Reducer:创建Reducer类的子类

例:模板自动生成的reduce函数框架

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class Treduce extends Reducer<Text, IntWritable, Text, IntWritable> {

    public void reduce(Text key, Iterable<IntWritable> values, Context context)
            throws IOException, InterruptedException {
        while (values.iterator().hasNext()) {
            // replace ValueType with the real type of your value
            // process value
        }
    }

}

MapReduce Driver:创建驱动

例:模板自动生成的驱动框架

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class TMR {

    public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
      Job job = new Job();
    
      job.setJarByClass( ... );
    
      job.setJobName( "a nice name"  );
    
      FileInputFormat.setInputPaths(job, new Path(args[0]));
      FileOutputFormat.setOutputPath(job, new Path(args[1]));
    
      // TODO: specify a mapper
    job.setMapperClass( ... );
    
      // TODO: specify a reducer
    job.setReducerClass( ... );
    
      job.setOutputKeyClass(Text.class);
      job.setOutputValueClass(IntWritable.class);
    
      boolean success = job.waitForCompletion(true);
      System.exit(success ? 0 : 1);
        };

}

New MR Cluster:集群配置

可以点击下图中的New MR Cluster配置集群

也可以点击eclipse的图标来配置集群:

配置页面如下:

Resource Manager Node:配置资源管理节点,对应Hadoop配置文件

DFS Master:配置分布式文件系统主节点,即NameNode节点的端口号。对应配置文件fs.default.name的值

--------------------------------------------------------------------

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏农夫安全

docker小试牛刀之bash_shellshock漏洞复现

漏洞名称 bash_shellshock • 首先,问题起因于一个命令ENV。 • 原型: • env [OPTION]...[NAME=VALUE]......

2908
来自专栏魏琼东

分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

     在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于...

1020
来自专栏Netkiller

Linux磁盘分区加密

本文节选自《Netkiller Cryptography 手札》 出处: http://netkiller.github.io/cryptography/ind...

3844
来自专栏我是攻城师

如何给Apache Pig自定义UDF函数?

3636
来自专栏lgp20151222

rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑

由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面。

2551
来自专栏python学习之旅

Python+Selenium笔记(十八):持续集成jenkins

(一)安装xmlrunner 使用Jenkins执行测试时,测试代码中会用到这个模块。  pip install xmlrunner (二)安装jenkins ...

5414
来自专栏芋道源码1024

分布式作业系统 Elastic-Job-Lite 源码分析 —— 作业失效转移

当作业节点执行作业异常崩溃时,其所分配的作业分片项在下次重新分片之前不会被重新执行。开启失效转移功能后,这部分作业分片项将被其他作业节点抓取后“执行”。为什么此...

1213
来自专栏架构师小秘圈

HBase极简教程

HBase 系统架构 HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型的数据。HBase...

4636
来自专栏编程

Python接口自动化-7-unittest

unittest简介 unittest是python自带的一个单元测试框架,详细介绍可参看官网:https://docs.python.org/3.4/libr...

2305
来自专栏分布式系统进阶

Kafka源码分析-启动流程

使用getPropsFromArgs方法来获取各配置项, 然后将启动和停止动作全部代理给KafkaServerStartable类;

1610

扫码关注云+社区