使用Eclipse编译运行MapReduce程序

2023-05-16

下载eclipse 64位: http://eclipse.bluemix.net/packages/mars.1/?JAVA-LINUX64
解压到安装目录

  1. 安装 Hadoop-Eclipse-Plugin
    要在 Eclipse 上编译和运行 MapReduce 程序,需要安装 hadoop-eclipse-plugin文件地址https://download.csdn.net/download/u014072118/10899835
    在继续配置前请确保已经开启了 Hadoop。
  2. 配置 Hadoop-Eclipse-Plugin
    启动 Eclipse 到preferences在这里插入图片描述
    切换 Map/Reduce 开发视图
    在这里插入图片描述
    在这里插入图片描述
    设置 fs.defaultFS 为 hdfs://zhd:9000,则 DFS Master 的 Port 要改为 9000。Map/Reduce(V2) Master 的 Port 用默认的即可,Location Name 随意填写
    在这里插入图片描述
    未打开会产生以下错误或者上图配置名称不一致也会产生
    在这里插入图片描述
    3.在 Eclipse 中操作 HDFS 中的文件
    配置好后,点击左侧 Project Explorer 中的 MapReduce Location (点击三角形展开)就能直接查看 HDFS 中的文件列表了(HDFS 中要有文件,如下图是 WordCount 的输出结果),双击可以查看内容,右键点击可以上传、下载、删除 HDFS 中的文件,无需再通过繁琐的 hdfs dfs -ls 等命令进行操作了
    注意:HDFS 中的内容变动后,Eclipse 不会同步刷新,需要右键点击 Project Explorer中的 MapReduce Location,选择 Refresh,才能看到变动后的文件。
    在这里插入图片描述
    4.在 Eclipse 中创建 MapReduce 项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    代码
package org.apache.hadoop.examples;
 
import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
 
public class WordCount {
    public WordCount() {
    }
 
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        String[] otherArgs = (new GenericOptionsParser(conf, args)).getRemainingArgs();
        if(otherArgs.length < 2) {
            System.err.println("Usage: wordcount <in> [<in>...] <out>");
            System.exit(2);
        }
 
        Job job = Job.getInstance(conf, "word count");
        job.setJarByClass(WordCount.class);
        job.setMapperClass(WordCount.TokenizerMapper.class);
        job.setCombinerClass(WordCount.IntSumReducer.class);
        job.setReducerClass(WordCount.IntSumReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
 
        for(int i = 0; i < otherArgs.length - 1; ++i) {
            FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
        }
 
        FileOutputFormat.setOutputPath(job, new Path(otherArgs[otherArgs.length - 1]));
        System.exit(job.waitForCompletion(true)?0:1);
    }
 
    public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        private IntWritable result = new IntWritable();
 
        public IntSumReducer() {
        }
 
        public void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
            int sum = 0;
 
            IntWritable val;
            for(Iterator i$ = values.iterator(); i$.hasNext(); sum += val.get()) {
                val = (IntWritable)i$.next();
            }
 
            this.result.set(sum);
            context.write(key, this.result);
        }
    }
 
    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
        private static final IntWritable one = new IntWritable(1);
        private Text word = new Text();
 
        public TokenizerMapper() {
        }
 
        public void map(Object key, Text value, Mapper<Object, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
            StringTokenizer itr = new StringTokenizer(value.toString());
 
            while(itr.hasMoreTokens()) {
                this.word.set(itr.nextToken());
                context.write(this.word, one);
            }
 
        }
    }
}

右键点击刚创建的 WordCount.java,选择 Run As -> Run Configurations,在此处可以设置运行时的相关参数(如果 Java Application 下面没有 WordCount,那么需要先双击 Java Application)。切换到 “Arguments” 栏,在 Program arguments 处填写 “input output” 就可以了
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Eclipse编译运行MapReduce程序 的相关文章

随机推荐

  • word中删除分节符时页面格式会发生改变

    word中删除分节符时页面格式会发生改变 问题 xff1a word xff08 word2007 word2010 word2013 word2016等 xff09 删除分节符 xff08 下一页 xff09 以后 xff0c 分节符以前
  • Ubuntu终端代理工具——proxychains

    安装proxychains sudo apt install proxychains 配置proxychains 打开proxychains配置文件 sudo vim etc proxychains conf 在proxychains co
  • 只是因为多看了你一眼

    不得已的选择 高考 xff0c 应该是每个学生心中最难忘的一场考试了 xff0c 在过去十二年里有无数场大大小小的考试 xff0c 无论你过去是多么的优秀 xff0c 还是多么的差劲 xff0c 只要这一次你 xff0c 赢了就是赢了 xf
  • Cmake之CMakeLists.txt

    我们知道makefile是在Linux编译c或者c 43 43 代码的时候的一种脚本文件 xff0c 但是每一个功能都要写一个makefile文件 xff0c 这样如果这个工程很大 xff0c 而且相关性比较强的话 xff0c makefi
  • 【网络排故】能ping通但是不能ssh服务器

    花了一天时间找到了问题原因 xff0c 中途找厂商售后排故无果 xff0c 自己用时间啃出来的结果 问题现象 xff1a 某日下午同事突然告诉我某服务器 xff08 Error A xff09 无法访问了 xff0c 接着是一批服务无法访问
  • 10 | apt 常用操作命令

    目录 1 linux系统1 1 RedHat系列1 2 Debian系列 2 apt 命令2 1 列出所有可更新的软件清单命令2 2 升级软件包2 3 列出可更新的软件包及版本信息2 4 升级软件包 xff0c 升级前先删除需要更新软件包2
  • linux线程调度策略

    系统中既有分时调度 xff0c 又有时间片轮转调度和先进先出调度 学习这个主要为了在linux多线程中 xff0c 解决几条指令间延时在1 2ms内 xff1b 1 比如之前处理过 xff1a 给一个板子发送一个can指令 xff0c 接着
  • Linux 平台安装 VNC

    VNC一共有三个版本 xff0c TightVNC RealVNC UltraVNC xff0c RealVNC旨在推进商业化 xff0c 因此需要License xff1b TightVNC旨在改善服务器和查看器之间的VNC压缩 xff0
  • git push origin --tags失败,提示prohibited by Gerrit

    环境 xff1a linux 43 jenkins 43 gradle 情景 xff1a gradle 编译android包的时候 xff0c 希望Push tag到remote 服务器 xff0c 每次都失败在git push origi
  • PB编程:键盘enter默认触发和界面打开默认输入

    1 键盘enter默认触发 xff1a 键盘按下enter后 xff0c 触发某个按钮 在该界面的KEY事件中 xff0c 输入代码 xff1a if keydown keyenter then cb 1 triggerevent 34 c
  • Mininet

    部分转载自 负载均衡 常用命令 link s1 h2 downlink s1 h2 up通过 switch 选项跟 controller选项可以分别指定采用哪种类型的交换机跟控制器 xff0c 例如使用用户态的交换sudo mn switc
  • 我的2014

    我是一个双鱼座的女孩 xff0c 我很喜欢幻想 没事时总是会喜欢去想象自己的未来或者近期生活的样子 进入大学后 xff0c 我发现很多东西很多事都不是想象中的那么美好 大学生活不似想象中的那么简单轻松 xff0c 想要学好自己的专业 xff
  • 开源的文本标注工具

    开源的标注工具 自然语言处理标记工具汇总 https blog csdn net wangyizhen nju article details 94559607 spacy原来有两个标注工具 xff0c displaCy ent和displ
  • 网络虚拟化协议GENEVE

    去年看到过一篇文章 1 xff0c 说是通过OpenVSwitch的测试 xff0c GENEVE的性能要略优于VXLAN 我相信大多数人的反应可能跟我的第一反应一样 xff0c 这不又是一种Overlay协议吗 xff1f 为什么性能会更
  • C++ 一个简单的判断子网掩码是否有效的函数

    简介 子网掩码 subnet mask 又叫网络掩码 地址掩码 子网络遮罩 xff0c 它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网 xff0c 以及哪些位标识的是主机的位掩码 子网掩码不能单独存在 xff0c 它必须结合IP
  • css中块元素和内联元素有什么区别?

    块级元素和内联元素 xff0c 我想接触过CSS的朋友都有所了解 xff0c 但是在实际写CSS代码时却考虑的并不多 xff0c 我们无意中就已经按照块级元素和内联元素的规则进行布局样式了 我有时在想 xff0c 为什么要区别块级元素和内联
  • 用docker启动ubuntu的桌面环境

    在win10下使用了docker之后 xff0c 已经完全抛弃了之前虚拟机的开发方式 xff0c 在学习一些计算机视觉相关的内容时 xff0c 可能需要在图形化界面进行开发和调试 xff0c 所以尝试了下在dockerhub上搜索了下支持d
  • 使用Git Extensions直接push代码到Gerrit审核

    公司使用Gerrit代码审核 xff0c 本地push代码只能提交到refs for branch xff0c 所以使用git bash进行push时 xff0c 需要使用如下命令 git push origin HEAD refs for
  • C++避免变量重复定义

    C 43 43 小白选手 求轻拍 在A cpp B cpp文件中同时包含B h 这样的话在B h中的变量就会重复定义了 解决的办法是在B h中 变量前面加上extern关键字 在B cpp文件中再定义一次
  • 使用Eclipse编译运行MapReduce程序

    下载eclipse 64位 http eclipse bluemix net packages mars 1 JAVA LINUX64 解压到安装目录 安装 Hadoop Eclipse Plugin 要在 Eclipse 上编译和运行 M