问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在eclipse调试mapreduce程序

发布网友 发布时间:2022-05-04 23:37

我来回答

2个回答

懂视网 时间:2022-05-05 03:58

1eclipse中hadoop环境部署概览 eclipse中部署hadoop包括两大部分:hdfs环境部署和mapreduce任务执行环境部署。一般hdfs环境部署比较简单,部署后就 可以在eclipse中像操作windows目录一样操作hdfs文件。而mapreduce任务执行环境的部署就比较复杂一点,不同版

1 eclipse中hadoop环境部署概览

eclipse中部署hadoop包括两大部分:hdfs环境部署和mapreduce任务执行环境部署。一般hdfs环境部署比较简单,部署后就 可以在eclipse中像操作windows目录一样操作hdfs文件。而mapreduce任务执行环境的部署就比较复杂一点,不同版本对环境的要求度 高低不同就导致部署的复杂度大相径庭。例如hadoop1包括以前的版本部署就比较简单,可在windows和Linux执行部署运行,而hadoop2 及以上版本对环境要求就比较严格,一般只能在Linux中部署,如果需要在windows中部署需要使用cygwin等软件模拟Linux环境,该篇介绍在Linux环境中部署hadoop环境。该篇假设hadoop2.3.0集群已经部署完成,集群访问权限为hadoop用户。这种在eclipse上操作hdfs和提交mapreduce任务的方式为hadoop客户端操作,故无须在该机器上配置hadoop集群文件,也无须在该机器上启动hadoop相关进程。

2 部署环境机器相关配置

  • Centos6,32位

  • Hadoop2.3.0

  • Eclipse4.3.2_jee Linux版

  • JDK1.7 Linux版

  • 3 eclipse中hdfs及mapreduce环境部署

    3.1 Linux中eclipse安装

    3.1.1 在Linux中选择一个eclipse安装目录如/home目录,将eclipse压缩包eclipse-standard-kepler-SR2-linux-gtk.tar.gz在该目录下解压即可,解压命令如下:

    tar -zxvf eclipse-standard-kepler-SR2-linux-gtk.tar.gz

    3.1.2 解压后的eclipse目录需要赋予hadoop用户权限chown -R hadoop:hadoop /home/eclipse,解压后eclipse目录如下图所示:

    3.1.3 将自己打包或者下载的hadoop和eclipse直接的插件导入eclipse的 plugins目录(复制进去即可),该篇使用直接下载的插件hadoop-eclipse-plugin-2.2.0.jar,然后启动eclipse。

    3.2 eclipse环境部署

    3.2.1 打开eclipse后切换到mapreduce界面会出现mapreduce插件图标,一个是DFS显示的位置,一个是mapreduce显示的位置,具体如下图所示:

    3.2.2 在MapReduce Locations出处点击右键新建mapreduce配置环境,具体图示如下:

    3.2.3 进入mapreduce配置环境,具体如下图所示。其中,Location name可任意填写,Mapreduce Master中Host为resourcemanager机器ip,Port为resourcemanager接受任务的端口号,即yarn-site.xml文件中yarn.resourcemanager.scheduler.address配置项中端口号。DFS Master中的Host为namenode机器ip,Port为core-site.xml文件中fs.defaultFS配置项中端口号。

    3.2.4 上一步骤配置完成后,我们看到的界面如下图所示。左侧栏中即为hdfs目录,在每个目录上课点击右键操作。

    4 eclipse中直接提交mapreduce任务(此处以wordcount为例,同时注意hadoop集群防火墙需对该机器开放相应端口)

    如果我们将hadoop自带的wordcount在eclipse中执行是不可以的,调整后具体操作如下。

    4.1 首先新建Map/Reduce工程(无须手动导入hadoop jar包),或者新建java工程(需要手动导入hadoop相应jar包)。

    4.1.1 新建Map/Reduce工程(无须手动导入hadoop jar包),具体图示如下图所示:

    4.1.1.1 点击next输入hadoop工程名即可,具体如下图所示:

    4.1.1.2 新建的hadoop工程如下图所示:

    4.1.2 新建java工程(需要手动导入hadoop相应jar包),具体如下图所示:

    4.1.2.1 新建java工程完成后,下面添加hadoop相应jar包,hadoop2.3.0相应jar包在/hadoop-2.3.0/share/hadoop目录中。

    4.1.2.2 进入Libraries,点击Add Library添加hadoop相应jar包。

    4.1.2.3 新建hadoop相应library成功后添加hadoop相应jar包到该library下面即可。

    4.1.2.4 需要添加的hadoop相应jar包有:

    /hadoop-2.3.0/share/hadoop/common下所有jar包,及里面的lib目录下所有jar包

    /hadoop-2.3.0/share/hadoop/hdfs下所有jar包,不包括里面lib下的jar包

    /hadoop-2.3.0/share/hadoop/mapreduce下所有jar包,不包括里面lib下的jar包

    /hadoop-2.3.0/share/hadoop/yarn下所有jar包,不包括里面lib下的jar包

    4.2 eclipse直接提交mapreduce任务所需环境配置代码如下所示:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.URL;
    import java.net.URLClassLoader;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.jar.JarEntry;
    import java.util.jar.JarOutputStream;
    import java.util.jar.Manifest;
    
    public class EJob {
    
     // To declare global field
     private static List classPath = new ArrayList();
    
     // To declare method
     public static File createTempJar(String root) throws IOException {
     if (!new File(root).exists()) {
      return null;
     }
     Manifest manifest = new Manifest();
     manifest.getMainAttributes().putValue("Manifest-Version", "1.0");
     final File jarFile = File.createTempFile("EJob-", ".jar", new File(System.getProperty("java.io.tmpdir")));
    
     Runtime.getRuntime().addShutdownHook(new Thread() {
      public void run() {
      jarFile.delete();
      }
     });
    
     JarOutputStream out = new JarOutputStream(new FileOutputStream(jarFile), manifest);
     createTempJarInner(out, new File(root), "");
     out.flush();
     out.close();
     return jarFile;
     }
    
     private static void createTempJarInner(JarOutputStream out, File f,
      String base) throws IOException {
     if (f.isDirectory()) {
      File[] fl = f.listFiles();
      if (base.length() > 0) {
      base = base + "/";
      }
      for (int i = 0; i < fl.length; i++) {
      createTempJarInner(out, fl[i], base + fl[i].getName());
      }
     } else {
      out.putNextEntry(new JarEntry(base));
      FileInputStream in = new FileInputStream(f);
      byte[] buffer = new byte[1024];
      int n = in.read(buffer);
      while (n != -1) {
      out.write(buffer, 0, n);
      n = in.read(buffer);
      }
      in.close();
     }
     }
    
     public static ClassLoader getClassLoader() {
     ClassLoader parent = Thread.currentThread().getContextClassLoader();
    
     if (parent == null) {
      parent = EJob.class.getClassLoader();
     }
     if (parent == null) {
      parent = ClassLoader.getSystemClassLoader();
     }
     return new URLClassLoader(classPath.toArray(new URL[0]), parent);
     }
    
     public static void addClasspath(String component) {
    
     if ((component != null) && (component.length() > 0)) {
      try {
      File f = new File(component);
    
      if (f.exists()) {
       URL key = f.getCanonicalFile().toURL();
       if (!classPath.contains(key)) {
       classPath.add(key);
       }
      }
      } catch (IOException e) {
      }
     }
     }
    
    }


    4.3 修改后的wordcount代码如下


    4.4 在eclipse中提交mapreduce任务

    在eclipse中代码区点击右键,点击里面的run on hadoop即可运行该程序。



    Java自学之道完整版 CSDN 下载地址: http://download.csdn.net/detail/longdeyun/5839581

    Java自学之道完整版 开源中国 下载地址: http://www.oschina.net/news/42748/java-self-study-guide

    Java自学之道技术分享及经验交流群:301318062

    Java、hadoop、spark相关技术共享交流群:287683381

    热心网友 时间:2022-05-05 01:06

    Eclipse中调试MapRece程序方法步骤如下:

    1. 下载Hadoop包:

    JDK建议用1.7的~

    2. 解压Hadoop包:

    注意最好不要放在带中文或空格及特殊字符的目录。

    3. 配置环境变量:

    (1) 系统变量中创建HADOOP_HOME,

    (2)  在Path中最后添加;%HADOOP_HOME%\bin

    注意:有个分号,和原来的变量分隔开!

    4. 重启系统

    一定要重启,让环境变量生效,不然出错都不知道哪的毛病

    5. 在Eclipse中需要测试的MapRece程序中,右键-->Run As-->Arguments-->填入输入、输出路径,

    注意:输出要放的最后一级目录不能有,不然会报错,因为hadoop会自动创建的!

    6.  测试结果

    MapRece的执行结果中,0表示正确,非零表示执行失败。

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    美的家用电器有哪些 美的系列品牌有哪些 现在微波炉哪个好用 美的微波炉系列有哪些 使命召唤4 用狙击枪的那关 使命召唤4撤离辐射区路怎么走 如何保护听力?你有了解过吗? 汇编语言编程有哪些特点呢? 少年的你经典语录带图片 少年的你易烊千玺台词精选 关于中秋节的日记怎么写 CS41H-16C自由浮球式疏水阀能不能垂直安装 CS41H-16浮球式疏水量多少?? CS41H-16D阀门是什么意识呢 16D代表什么 CS41H-16C疏水阀应该怎样安装? 疏气阀CS41H-16C漏气怎么处理? pn16 dn20 cs41h-16c疏水阀每小时流量是多少? 型号:CS41H-16C疏水阀,表示的含义 疏水阀cs41h-16c-Ⅰ是什么型号 CS41H-25 DN32疏水阀漏气量是多少 CS41H-16C的长度 是否有这款疏水阀cs41h-2sc 疏水阀CS41H-25与Cs41H-25-G3的区别 疏水阀泄漏蒸气(吹放)如何处理? 农夫山泉2010年的年度财务报告 温州医科大学,卫校中专生可以就读吗 南宁卫校黎塘校区护考培训什么时候招生报名系统 广西宾阳县黎塘镇有几所卫校? 从覃塘去黎塘卫校怎么走?急用,拜托了 南宁市卫校在哪里? 南宁卫校哪个好宾阳县黎塘镇金龙大道232号 同样身型的牛头梗厉害还是比特?还是其他的?藏獒的就不说了 i5-7500和i3 4170玩游戏哪一个玩游戏好一点 大丹 比特 牛头梗 德牧 哪个更厉害? 各位兄弟,我想升级下电脑的CPU,目前用的是i3-4170想升级成i5-7500有必要么? 为什么有时候I5的7500会比不过I3的4170 比特和牛头梗谁厉害 i3 4170 和i5 750哪个好点? 酷睿i3 4170和i5差距有多大,价格差几百块。到底上i3还是i5 想知道牛头梗和比特打谁厉害点?马甲兄和老刘进来看看. 开玩笑,比特和牛头梗都比藏獒强,主要看个体能力 男人若对女人施行冷暴力,女人有什么好办法吗? 吵架之后男人对女人冷暴力,正确的做法是什么? 怎样对付女性的冷暴力 怎么对付冷暴力女人 对女朋友冷暴力几天该说什么 怎么对付冷暴力的女人 极光推中如何自定义jsp或者php页面作为服务端进行Android消息推送 求助,极光推送案例程序IOS版 怎样把已下架App转到新买的苹果x上? 苹果商店下架的软件去哪下载