Windows 下配置 Eclipse 连接 Hadoop 开发环境

2023-10-30

Windows 下配置 Eclipse 连接 Hadoop 开发环境

个人小站,正在持续整理中,欢迎访问:http://shitouer.cn

小站博文地址:Windows 下配置 Eclipse 连接  Hadoop 开发环境,欢迎原站访问~

 

学习更多,请访问系列文章:

1. VMware Redhat网络配置

2. Hadoop 三台主机 集群搭建 详解

3. Windows 下配置 Eclipse 连接 Hadoop 开发环境

 

学习本篇之前,首先需要搭建Hadoop集群环境,具体请参见:Hadoop 三台主机 集群搭建 详解

在上一篇Hadoop 三台主机 集群搭建 详解,已经搭建起Hadoop集群,但是要开发调试MapReduce程序,还是在Windows下比较方便和舒服。成功配置这个环境,花费了我好几个晚上,先记录如下,方便后来学习的人:

环境及配置:

Eclipse选择

非常重要,至少我是在这花费了很多时间,几乎试遍了所有的eclipse版本,都不成功,最后选择了SpringSource Tool,真的很好用,下载地址:http://www.springsource.org/downloads/sts

Cygwin

hadoop是基于Linux平台的,如其启动,关闭 配置需要在Linux命令行中执行,cygwin是用来模拟Linux下的命令行工具。安装地址:http://cygwin.com/install.html

Hadoop Eclipse插件

不建议使用Hadoop自带的,不好用,如果使用SpringSource Tool的话,请使用hadoop-eclipse-plugin-0.20.3-SNAPSHOT,下载地址:https://issues.apache.org/jira/browse/MAPREDUCE-1280

预先配置

1. 安装Cygwin,这个只要一路确定就行了,不过中间千万别停顿。

2. 配置Windows Hosts文件,为了DNS解析寻址用

方法:进入C:\Windows\System32\drivers\etc,找到hosts文件,编辑添加hadoop集群配置的hosts文件相关信息如下:

192.168.40.5    master

192.168.40.6    slave1#非必须#

192.168.40.7    slave2#非必须#

安装配置:

① 解压下载的SpringSource Tool到D:\\STS,将hadoop-eclipse-plugin-0.20.3-SNAPSHOT放到:D:\STS\sts-2.9.1.RELEASE\plugins

② 点击STS.exe,启动SpringSource Tool(一下简称Eclipse),如果在Project Explorer中出现DFS Locations图标,则说明安装正确,如图:

③ 之后,点击Windows-->Preferrence-->hadoop map/reduce, Brower 选择下载的hadoop-0.20.2所在的路径:

④ 配置相关参数,点击 Windows-->Show View -->Other --> Map/Reduce Location,打开Hadoop的MapReduce View

点击Ok之后,出现如下图

⑤ 上一步你不应该看到hadoopLoc, 应该什么都没有,右键点击空白处-->New Hadoop Location, 你会看到一个填写MapReduce Location参数的一个界面:

其中:

Location Name:

这个不用在意,就是对这个MapReduce的标示,只要能帮你记忆即可

Map/Reduce Master 部分相关定义:

Host:上一节搭建的集群中JobTracker所在的机器的IP地址

port:JobTracker的端口

两个参数就是 mapred-site.xml中mapred.job.tracker的ip和端口

DFS Master部分:

Host:就是上一节集群搭建中Namenode所在机器IP

Port:就是namenode的端口

这两个参数是在 core-site.xml里fs.default.name里面的ip和端口

User Name:

就是搭建Hadoop集群是所用的用户名,我这里用的是root

⑥ 填写完以上信息以后,关闭Eclipse,然后重新启动。

为什么这么做呢?因为如果不重新启动,Advanced Parameters里,有些重要的选项不能显示,重启后,来配制Advanced Parameters信息:

可看到大部分选项都已经预设值好了,其中有一下几个选项,必须注意填写,其他的选项,要么默认,要么会根据我们填写的以下几个选项自动修改:

dfs.replication:

这个这里默认是3,但是要根据你的Datanode的个数来定,如果你仅有2个datanode,那么就写2,如果只有一个,就写1,大于或者等于3个,写3

hadoop.tmp.dir:

这个要跟上节建立的Hadoop集群配置中core-site.xml 中的hadoop.tmp.dir设置一样,上节填写的是/tmp/hadoop-root,这里也如是填写

hadoop.job.ugi:

填成root,Tardis,其中root是我们的用户名,后边的",Tardis"一定要这么写,不能改

这些都填写完了之后,点击保存,重新启动Eclipse,会发现,很多Advanced Parameters里的好多选项都根据hadoop.tmp.dir重新进行了设置。

(2012.10.26修改:现在又用hadoop1.0.3,此选项没有了)

⑦ 重新启动后,在Project Explorer中,会有如下显示:

 注意,第一次初始化打开,并不会有user, input, output 这些文件夹,之后红圈圈出的部分,也没有job_local_0001(1).如果是这样显示说明你已经连接成功,否则,展开所有tmp文件夹,会发现最后有错误信息提示。

2012.10.26修改:

hadoop1.0.3此时还会出错,是plugin中jar包不够,可做如下修改:

1.打开Eclipse Plugins中的hadoop-eclipse-plugin-1.0.0.jar,发现只有发现只有commons-cli-1.2.jar和hadoop-core.jar两个包,将%HADOOP_HOME%/lib下的 commons-configuration-1.6.jar , commons-httpclient-3.0.1.jar , commons-lang-2.4.jar , jackson-core-asl-1.8.8.jar 和 jackson-mapper-asl-1.0.8.jar五个jar包打入hadoop-eclipse-plugin-1.0.0.jar中。

2.修改hadoop-eclipse-plugin-1.0.0.jar中META-INF目录下的MANIFEST.MF,将classpath修改为以下内容:Bundle-ClassPath: classes/,lib/hadoop-core.jar,lib/commons-cli-1.2.jar,lib/commons-httpclient-3.0.1.jar,lib/jackson-core-asl-1.0.1.jar,lib/jackson-mapper-asl-1.0.1.jar,lib/commons-configuration-1.6.jar,lib/commons-lang-2.4.jar

3.重启Eclipse即可。

⑧ 在Eclipse中编写调试第一个Hadoop的HelloWorld程序:wordcount

建立Map/Reduce 工程

定义WordCount.Java类

这里,我下载了Hadoop源码,直接拷贝了其WordCount.java文件,代码如下:

package org.apache.hadoop.examples;

import java.io.IOException;
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 static class TokenizerMapper extends
            Mapper<Object, Text, Text, IntWritable> {

        private final static IntWritable one = new IntWritable(1);
        private Text word = new Text();

        public void map(Object key, Text value, Context context)
                throws IOException, InterruptedException {
            String line = value.toString();
            StringTokenizer itr = new StringTokenizer(line);
            while (itr.hasMoreTokens()) {
                word.set(itr.nextToken().toLowerCase());
                context.write(word, one);
            }
        }
    }

    public static class IntSumReducer extends
            Reducer<Text, IntWritable, Text, IntWritable> {
        private IntWritable result = new IntWritable();

        public void reduce(Text key, Iterable<IntWritable> values,
                Context context) throws IOException, InterruptedException {
            int sum = 0;
            for (IntWritable val : values) {
                sum += val.get();
            }
            result.set(sum);
            context.write(key, new IntWritable(sum));
        }
    }

    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> <out>");
            System.exit(2);
        }
        Job job = new Job(conf, "word count");
        job.setJarByClass(WordCount.class);
        job.setMapperClass(TokenizerMapper.class);
        job.setCombinerClass(IntSumReducer.class);
        job.setReducerClass(IntSumReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
        FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

为了使程序成功运行,我们需要做一下工作

设置输入:

在命令行中,像hadoop中添加一个文本文件:

hadoop fs -mkdir /input  #在HDFS用户根目录下建立input文件夹

hadoop fs -put test.txt /input/ #向input文件夹里放入所在路径的test.txt文件

该步骤也可以在Eclipse中建立,首先右键点击Project Explorer中大象图标下第一个没有名字的文件夹,点击 Create New Directory,创建input文件夹,后再右键该文件夹,上传test.txt文件。此时到hadoop DFS中查看,也会发现创建成功。

Eclipse中设置输入参数

设置WordCount.java的执行参数如图

在Eclipse中执行

如图,点击 Run on Hadoop

在控制台,会有以下输出

OK,至此,Congratulations,你已经建立起自己在Windows中Eclipse下进行Hadoop MapReduce开发的基本环境设置工作,并且输出了一个属于自己的HelloWorld程序,并且稍微了解了一些hadoop日志分析的信息,你已经开始进入Hadoop的世界,剩下的,就是要不断地深入学习了。

接下来,本来打算将Hive,HBase,Fuse等Hadoop工程相关的配置过程都详细的记录,但是现在都还用不到,所以就打算先搁下,开始读Hadoop源码,本身以前也没有读源码的经验(以前做Salesforce CRM云计算,是不开源的),也会将一步一步学习的过程记录并分享。从Configuration类读起,依旧立此存照,必须说到做到。

转载注明出处,博客园 石头儿 尤其说给 Linux 公社 听,没见过你们这么无耻的人!转载之后,不仅原转载文章被变成你们的,连引用的自己的文章,也都一并给你们摘抄过去变成你们的了。

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

Windows 下配置 Eclipse 连接 Hadoop 开发环境 的相关文章

  • HBase、Hadoop:如何估计 HBase 表或 Hadoop 文件系统路径的大小?

    我有多个 HBase 表 如何估计在 java 中使用的表的大致大小 一种方法是你必须使用java客户端访问hdfs 通常在 hbase文件夹 所有表格信息 将在场 Hadoop 外壳 你可以检查使用hadoop fs du h path
  • Hive:在查询中将 array 转换为 array

    我有两张桌子 create table a 1 array
  • 公平调度器和容量调度器有什么区别?

    我是 Hadoop 世界的新手 想了解公平调度程序和容量调度程序之间的区别 另外我们什么时候应该使用每一个 请简单地回答一下 因为我在网上读了很多东西 但从中得到的不多 公平调度是一种为作业分配资源的方法 使得所有作业随着时间的推移平均获得
  • 覆盖hadoop中的log4j.properties

    如何覆盖hadoop中的默认log4j properties 如果我设置 hadoop root logger WARN console 它不会在控制台上打印日志 而我想要的是它不应该在日志文件中打印 INFO 我在 jar 中添加了一个
  • 无法在 Presto 中读取数据 - 在 Hive 中可以读取数据

    我有一个 Hive DB 我创建了一个与 Parquet 文件类型兼容的表 CREATE EXTERNAL TABLE default table date date udid string message token string PAR
  • 如何对 RDD 进行分区

    我有一个文本文件 其中包含大量由空格分隔的随机浮动值 我正在将此文件加载到 scala 中的 RDD 中 这个RDD是如何分区的 另外 是否有任何方法可以生成自定义分区 以便所有分区都具有相同数量的元素以及每个分区的索引 val dRDD
  • 错误 hive.HiveConfig:无法加载 org.apache.hadoop.hive.conf.HiveConf。确保 HIVE_CONF _DIR 设置正确

    我正在尝试将数据从 sqoop 导入到 hive MySQL use sample create table forhive id int auto increment firstname varchar 36 lastname varch
  • 更改spark_temporary目录路径

    是否可以更改 temporarySpark在写入之前保存临时文件的目录 特别是 由于我正在编写表的单个分区 因此我希望临时文件夹位于分区文件夹内 是否可以 由于其实现原因 无法使用默认的 FileOutputCommiter FileOut
  • Hive 聚集在多个列上

    据我所知 当配置单元表聚集在一列上时 它会执行该分桶列的哈希函数 然后将该行数据放入其中一个桶中 每个桶都有一个文件 即如果有 32 个桶 那么 hdfs 中就有 32 个文件 将 clustered by 放在多个列上意味着什么 例如 假
  • Protobuf RPC 在 Hadoop 2.2.0 单节点服务器上不可用?

    我正在尝试在按照本教程安装的本地单节点集群上运行 hadoop 2 2 0 mapreduce 作业 http codesfusion blogspot co at 2013 10 setup hadoop 2x 220 on ubuntu
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 通过 Java 连接 Apache Drill

    在 Apache Drill 的 Wiki 中 我只能看到通过 SqlLine 客户端运行的查询 除了 REST API 之外 是否有任何编程方式可以在 Drill 中运行查询 有任何示例或指示吗 或者它与使用 JDBC 驱动程序运行 SQ
  • 使用 Hive 计算文本变量的单词频率

    我有一个变量 每一行都是一个句子 例子 Row1 Hey how are you Rwo2 Hey Who is there 我希望输出是按单词分组的计数 Example Hey 2 How 1 are 1 我正在使用 split a bi
  • Hive:为现有文件夹结构添加分区

    我在 HDFS 中有一个文件夹结构 如下所示 但是 实际上没有使用以下命令在表上创建分区ALTER TABLE ADD PARTITION命令 即使文件夹结构的设置就像表有分区一样 如何自动将所有分区添加到Hive表中 Hive 1 0 外
  • 谷歌的Dremel是什么?它与 MapReduce 有什么不同?

    谷歌的 Dremel 是此处描述 http research google com pubs pub36632 html Dremel 和 Mapreduce 有什么区别 Dremel http research google com pu
  • 如何配置Hive仓库路径?

    我修改了这部分
  • 为什么 SequenceFile 被截断?

    我在学习Hadoop这个问题困扰了我一段时间 基本上我正在写一个SequenceFile到磁盘然后读回 然而 每次我收到EOFException阅读时 深入观察发现 在写入序列文件时 它被过早截断 并且总是发生在写入索引962之后 并且文件
  • Hive 有相当于 DUAL 的东西吗?

    我想运行这样的语句 SELECT date add 2008 12 31 1 FROM DUAL Hive 在 Amazon EMR 上运行 是否有类似的功能 最好的解决方案是不要提及表名 select 1 1 给出结果 2 但是可怜的 H
  • 主节点的“start-all.sh”和“start-dfs.sh”没有启动从节点服务?

    我已使用从属节点的主机名更新了 Hadoop 主节点上的 conf slaves 文件 但我无法从主节点启动从属节点 我必须单独启动从属服务器 然后我的 5 节点集群才能启动并运行 如何使用主节点的单个命令启动整个集群 此外 Seconda
  • Hadoop2.2.0无法访问网页http://:8088

    我设置了一个包含两个节点 hadoop01 master 10 0 0 151 和 hadoop02 slaves 10 0 0 152 的 hadoop 集群 当输入 start dfs sh 然后访问网站 my ip 上面就是 10 0

随机推荐

  • 过早扩张、未经检验的技术,创业公司最易跳入哪些致命陷阱?

    对早期的软件初创公司 请注意避免这些工程错误 n 2016 年 我为一个初次创业者提供了技术咨询 帮助他建立一个种子基金资助的食品配送市场 在我看来 他这家公司做出的每一项技术选择都是错误的 n CEO 信奉 将权利赋予工程师 的理念 然后
  • 时序预测的七种方法-python3

    时序预测的七种方法 目录 数据读取和处理 安装库 方法 1 以简单的方式开始 方法2 简单平均数 方法3 移动平均数 方法 4 指数平滑法 方法5 Holt线性趋势法 方法6 Holt冬季季节法 方法7 综合自回归移动平均法 ARIMA 理
  • 计算机数值方法之线性方程组的迭代方法C语言

    题目 使用雅可比迭代法或高斯 赛德尔迭代法对下列方程组进行求解 高斯赛德尔和雅可比迭代法 笔算很好运用 写程序两者是互通的 include
  • IntelliJ IDEA优秀插件

    转自1 https www toutiao com a6539875490272903693 转自2 https blog csdn net sujun10 article details 72852939 grep console jav
  • 数组习题三

    目录 一 全排列 不含重复数字 1 题目 2思路图解 3 代码 二 有重复项数字的全排列 1 题目 2 思路图解 3 代码 三 求最长连续序列 要求时间复杂度为O N 1 题目 2 思路图解 3 代码 四 最长递增子序列 1 题目 2 思路
  • VMware虚拟机提示找不到vmnetbridge.dll

    找了很多文章多半是提示重新安装 有的说该文件在C WINDOWS inf目录下 然而我的不在该目录下 我的方法是先在本机中找找该文件在不在电脑中存在 使用工具是Everything 的确是有的 找到选择该目录就可以了噢 每个人电脑中可能是有
  • 查询IP地址可得到哪些信息

    通过IP地址定位 可以获取一些基本的信息 包括以下内容 1 地理位置 你可以确定IP地址所在的地理位置 包括国家 州或省 城市和地理坐标 这通常是通过将IP地址与地理位置数据库进行匹配来实现的 2 ISP 互联网服务提供商 信息 你可以了解
  • DVWA靶场通关教程

    目录 Burt Force 爆破 low medium high impossible Command Injection 命令执行 low medium high impossible CSRF 跨站请求攻击 low medium hig
  • NUC980开源项目21-开启网络连接

    上面是我的微信和QQ群 欢迎新朋友的加入 项目码云地址 国内下载速度快 https gitee com jun626 nuc980 open source project 项目github地址 https github com Jun117
  • 小程序更换navigationBarBackgroundColor导航栏背景色

    阐述 有些项目并不想让小程序的导航的颜色是纯色的 想要更换颜色 那么就用到的 navigationBarBackgroundColor 这个参数 具体看下以下设置方法 设置导航栏颜色 有时候我们在单页面设置的 navigationBarBa
  • 数据库连接池原理之(一):通俗易懂的数据库连接池原理以及实现机制讲解

    本篇内容综合广大网友提供内容 笔者经过整理 对数据库连接池原理和实现过程做个很系统的并且通俗易懂的分析讲解 以及手写一个连接池实现过程作为演示 一 早期通过JDBC方式操作数据库 我们先来看早期使用JDBC的方式操作数据库的过程 这里以my
  • 迅速响应!国家互联网信息办公室发布关于《生成式人工智能服务管理办法(征求意见稿)》公开征求意见的通知

    4月11日 为促进生成式人工智能技术健康发展和规范应用 国家互联网信息办公室发布 生成式人工智能服务管理办法 征求意见稿 向社会公开征求意见 意见稿首先指出 国家支持人工智能算法 框架等基础技术的自主创新 推广应用 国际合作 鼓励优先采用安
  • BigDecimal 转字符串,并去掉尾部的0

    有一种写法 先转成Double BigDecimal target new BigDecimal 5375130 000000 BigDecimal valueOf Double parseDouble target toString to
  • spark中shuffle运行原理

    ShuffleManager里有四个接口 register reader writer和stop 核心接口则是reader和writer 当前版本reader接口只有1个实现 writer接口有3个实现 每种实现分别对应不同的场景 writ
  • LightGBM 重要参数、方法、函数理解及调参思路、网格搜索(附例子)

    文章目录 一 LightGBM 原生接口 重要参数 训练参数 预测方法 绘制特征重要性 分类例子 回归例子 二 LightGBM 的 sklearn 风格接口 LGBMClassifier 基本使用 例子 LGBMRegressor 基本使
  • 一个华科研究生导师的肺腑之言(主要适用于理工科)

    一个华科研究生导师的肺腑之言 主要适用于理工科 各位科研同志们看看吧 仁者见仁智者见智 总归有点用 人太多 不一一 啦 1 作为你们的老师 我现在每周工作60小时 踏踏实实的60小时 阅读 实践 思考 讨论和请教 周而复始 其实这还不够用
  • [课程复习] 数据结构之经典题目回顾 (一)选择题、填空题1

    作者最近在复习考博 乘此机会分享一些计算机科学与技术 软件工程等相关专业课程考题 一方面分享给考研 考博 找工作的博友 另一方面也是自己今后完成这些课程的复习资料 同时也是在线笔记 基础知识 希望对您有所帮助 不喜勿喷 文章目录 一 基础
  • IntelliJ IDEA使用Alibaba Java Coding Guidelines编码规约扫描插件

    代码规范和编码规约扫描插件使用 为什么要有代码规范 1 代码规范插件 2 idea插件安装 3 插件使用介绍 编码规约扫描使用 编码规约扫描结果 4 扫描结果严重级别 Blocker Critical Major 5 阿里巴巴Java开发手
  • 《机器学习西瓜书》学习笔记——第三章_线性模型_类别不平衡问题

    类别不平衡是指分类任务中不同类别的训练样例数目相差很大 现有技术大体上有三类做法解决此问题 1 欠采样 2 过采样 3 阈值移动 再缩放 1 欠采样 直接对训练集里的反类样例进行欠采样 即去除一些反例使得正反例数目接近 然后再进行学习 欠采
  • Windows 下配置 Eclipse 连接 Hadoop 开发环境

    Windows 下配置 Eclipse 连接 Hadoop 开发环境 个人小站 正在持续整理中 欢迎访问 http shitouer cn 小站博文地址 Windows 下配置 Eclipse 连接 Hadoop 开发环境 欢迎原站访问 学