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

如何在本地Windows环境中用Eclipse中调试MapReduce程序

发布网友 发布时间:2022-04-12 22:39

我来回答

3个回答

懂视网 时间:2022-04-13 03:00

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-04-13 00:08

    在本地Windows环境中用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表示正确,非零表示执行失败。

    热心网友 时间:2022-04-13 01:26

    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
    养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 小米设置小苹果来电铃音 风机的噪声问题该怎么进行处理 UDP的噪声数据主要分为哪两类?如何处理 k-means聚类算法,噪声值怎么处理? 一个我喜欢的女孩把我和她的聊天记录发给我朋友看,她是什么心态? 一女生总是把别人和她的聊天记录给我看,什么情况? 地震勘探中的噪声怎样处理? win7华宇拼音输入法皮肤文件在什么地方 自己喜欢的女人因为我生气她和一个男的暧昧为把她和其他男人的聊天记录发给你看? 对原始数据进行空缺值填补,消除噪声数据操作是在以下哪个步骤的任务 18键输入法好用吗 一个女生会劝我以后不要不要去做危险的事会把自己以前的事说出来还把和别的男生的聊天记录给我看。啥意思 求百度手机输入法触屏版皮肤所有指令代码 别的男生和女生聊天,女生她给我看他们的聊天记录什么意思? 别的男生和女生聊天,女生她给我看他们聊天记录什么意思? 为什么女生喜欢把自己和别人的聊天记录给我看 女人为证清白把她和其他男人的聊天记录发给你看是什么想法? 租赁企业的主营业务成本时什么 一个女生把她和别的男人的聊天记录发给我看代表什么,为什么不找她闺密 汽车租赁行业的主营业务成本是哪些? 把玲声设为小萍果 普通话考试怎么考的? 银行卡积分哪里看 农村信用社银行卡积分怎么查询 招商银行卡积分怎么查询 中国银行借记卡怎么在电话里查积分 银行卡积分怎么查 画眉鸟如何养 画眉鸟如何解释 画眉鸟怎么饲养,好不好养 嘉定区有什么好玩滴地方或旅游景点,公园什么啊 一个净水器可以用多久 上海周围有哪些适合团建的旅游的地方 求上海市嘉定区旅游规划 一套净水器能用多久? 金风送爽时时觉,丹桂飘香处处闻.下联是什么? 美的饮水机常开加热功能一个月多少电 离嘉定最近的好玩的免费的自然区域游玩的地方 “金风送爽时时觉,丹桂飘香处处闻”的下联是什么? 美的小型饮水机的耗电量大吗?