eclipse和hadoop连接攻略(详细)

这篇具有很好参考价值的文章主要介绍了eclipse和hadoop连接攻略(详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

吸取前人教训,写下此稿

笔者所用到的软件版本:

hadoop 2.7.3

hadoop-eclipse-plugin-2.7.3.jar

eclipse-java-2020-06-R-win32-x86_64

先从虚拟机下载hadoop 需要解压好和文件配置好的版本,方便后文配置伪分布式文件)

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 笔者linux的hadoop目录为:/usr/hadoop

下载到windows的某个目录,自行选择 笔者下载到的windows目录为D:\desktop\fsdownload\hadoop-2.7.3

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

下载eclipse和hadoop连接的插件 hadoop-eclipse-plugin-2.7.3.jar

(笔者hadoop版本为2.7.3,你使用的hadoop版本和插件版本需要对应)

链接:https://pan.baidu.com/s/1m5BCOa1vcNghG0TUklB7CA 
提取码:e9mo

(此链接为hadoop-eclipse-plugin-2.7.3.jar)

将下载好的插件hadoop-eclipse-plugin-2.7.3.jar 复制到eclipse的plugins目录下

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

将winutils.exe文件复制到hadoop目录下的bin路径下

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

wintil.exe链接

链接:https://pan.baidu.com/s/1Ahzo8IyPhoxzvPSuT1nN7Q 
提取码:bhip

配置hadoop环境变量

进入 设置--系统--关于--高级系统设置--环境变量

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

编辑path变量,增加内容为:%HADOOP_HOME%\bin

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

增加一个变量HADOOP_HOME

变量值为 hadoop的路径

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 开启Hadoop集群(此处省略。。自行开启)

开启集群和复制插件之后 开启eclipse,可以在eclipse左侧工作区看到DFS Locations

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 在windows菜单下选中perference

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

perence下选中hadoop map/reduce

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

设置hadoop的安装路径 前文有提到 笔者的安装路径为 D:\desktop\fsdownload\hadoop-2.7.3

 hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 建立与hadoop的连接 在eclipse下方工作区对Map/Reduce Locations 进行设置

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 右击 new hadoop location 进入设置

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

相关设置如图

笔者的core-site.xml(笔者路径为%HADOOP_HOME%/etc/hadoop/core-site.xml)文件中端口号为9000

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 设置完成之后可以在DFS Locations看到hdfs上的文件

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

新建项目hadoop1(项目名随意)

进入eclipse 点击左上角file--new--projects

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 输入项目名称

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

这样就创建好了一个mapreduce项目

 执行MapReduce 项目前,需要将hadoop中有修改过的配置文件(如伪分布式需要core-site.xml 和 hdfs-site.xml),以及log4j.properties复制到项目下的 src文件夹中

(请忽略已经建好的包)

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 还需要将windows下的hosts文件修改 让ip和主机名映射

hosts文件路径为C:\Windows\System32\drivers\etc\hosts

而修改hosts文件需要管理员权限

可以先右击hosts文件 点击属性

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 将属性中的“只读”取消 确定并应用

然后通过管理员身份运行命令提示窗口

进入hosts文件目录上一级

输入notepad hosts 即可修改hosts文件

 hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 在最底下 输入相对应的映射关系即可

笔者为192.168.222.171 master746

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

在hadoop1项目中创建包和类

需要填写两个地方:在Package 处填写 org.apache.hadoop.examples;在Name 处填写wordcount。(包名、类名可以随意起)

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

此处笔者参考 http://t.csdn.cn/4WKHD

写入代码

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);
            }
 
        }
    }
}

运行时右击空白处 点击 run as 然后点击 run configutations 

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 前面写需要进行mapreduce计算的文件 必须原本就存在

后面写输出文件 必须原本不存在 不然均会报错

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 看到类似这样的运行结果就是成功啦

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

成功运行后 查看输出文件(若未及时出现 可以右击文件refresh)

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 做到这 eclipse和hadoop就算连接成啦

完结撒花~

跟着笔者的步骤可以避免笔者踩过的大部分坑

下面是我没有注明在文中的一些错误,欢迎大家一起来讨论

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Wi

报错如下

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
	at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
	at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:609)
	at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:977)
	at org.apache.hadoop.util.DiskChecker.checkAccessByFileMethods(DiskChecker.java:187)
	at org.apache.hadoop.util.DiskChecker.checkDirAccess(DiskChecker.java:174)
	at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:108)
	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.confChanged(LocalDirAllocator.java:285)
	at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:344)
	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:150)
	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:131)
	at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:115)
	at org.apache.hadoop.mapred.LocalDistributedCacheManager.setup(LocalDistributedCacheManager.java:125)
	at org.apache.hadoop.mapred.LocalJobRunner$Job.<init>(LocalJobRunner.java:163)
	at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:731)
	at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:240)
	at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
	at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
	at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)
	at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1308)
	at com.qs.WordcountDriver.main(WordcountDriver.java:44)

解决办法:

在创建的项目中 重新创建一个包,名为:org.apache.hadoop.io.nativeio

在包中创建一个类,名为NativeIO

内容为:   参考链接:http://t.csdn.cn/YxMOW

创建好在eclipse如下:

hadoop-eclipse-plugin-2.7.3.jar,eclipse,java,hadoop,mapreduce,大数据

 再运行,就可以解决了。文章来源地址https://www.toymoban.com/news/detail-716472.html

到了这里,关于eclipse和hadoop连接攻略(详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【最简单明了,萌新必备】eclipse连接navicat详细教程

    下载jdbc MySQL :: Download Connector/J 选择platform后下载第二个zip包,下载完毕解压文件 单独复制图中选中文件 打开eclipse,新建project新建包新建class文件 然后右键src文件夹如图选择paste 随后你会看到多出了个mysql-connector。。。的文件,再次右键单击多出来的那个文件,选择build-p

    2024年02月03日
    浏览(53)
  • jSparrow Crack,jSparrow Eclipse Plugin

    Added new \\\'Select Java Sources To Refactor\\\' dialog. jSparrow is an IDE extension for refactoring Java code with a rule-based approach, powered by the Eclipse Java compiler. A jSparrow rule is a definition of many small composed refactoring steps performed by the plug-in; one rule, when selected, can by itself refactor a very specific area within your system-

    2024年02月11日
    浏览(37)
  • Eclipse插件(RCP) eclipse plugin-in project 和 feature project 的差异及联系

    eclipse plugin-in project 和 feature project 分别是什么?有那些相同点和不同点。分别用在什么样的场景中,解决怎么样的需求? eclipse plugin-in project 和 feature project 都是用来构建eclipse插件的。 plugin-in project 是 lowest-level 的插件,主要实现特定功能。 feature project 包含多个 plugin-in pro

    2024年02月03日
    浏览(44)
  • 文心一言Plugin实战来了,测试开发旅游攻略助手

    刚刚过去的 8月,百度 WAVE SUMMIT 深度学习开发者大会 上 , 重磅发布文心一言的五个原生插件:百度搜索、览卷文档(基于文档的交互)、E 言易图(数据洞察图表生成)、说图解画(基于图片的交互)、一镜流影(文字转视频) 。 我们知道大模型的训练过程一般都需要比较

    2024年02月08日
    浏览(45)
  • Python数据攻略-Hadoop集群中PySpark数据处理

    Hadoop是一个开源的分布式存储和计算框架。它让我们可以在多台机器上存储大量的数据,并且进行高效的数据处理。简而言之,Hadoop就像一个巨大的仓库,可以存放海量的数据,并且有高效的工具来处理这些数据。

    2024年02月07日
    浏览(46)
  • Eclipse连接数据库

    新建一个项目 1,随便打开一个项目,点击右键    点击finish(完成),出现是否要建一个model(可以建,也可以不建)    复制下面的jar包 打开 Eclipse,点中刚刚建好的项目复制 右键jar包        双击打开 找到我们要用的(com.mysql.cj.jdbc),双击打开 找到我们要用的(Dr

    2024年02月03日
    浏览(55)
  • eclipse连接数据库(基础)

    第一步:下载jar包 第二步:导入jar包 右键项目名,点击properties; 如图,点击add后找到刚刚下载的jar包添加进去,点击apply and close,添加成功后的项目目录如图所示;   第三步:连接数据库  建立数据库并在其中建立employee表; 像平常写程序一样建立包、类,这里我建了一

    2024年02月11日
    浏览(56)
  • eclipse连接mysql数据库操作

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 前言 一、mysql数据库 二、eclipse项目里要有数据库jar包 1.下载或直接使用已有mysql-connection的jar包 2.eclipse加上MySQL 连接 3.项目执行sql文件 总结 使用eclipse的sql文件实现数据库数据创建 提示

    2024年02月04日
    浏览(38)
  • eclipse使用jdbc连接数据库

    下载和mysql对应版本的jar包。 我的mysql下载的8.0.13版本的,所以下载8.0.13的jar包。官网下载地址: https://dev.mysql.com/downloads/connector/j/?os=26 (如果需要下载历史版本,点击 archievs) 下载之后,解压目录,获得jar包。 导入jarb包。 第一步:在eclipse中新建工程JDBC,建立一个lib目录

    2024年02月11日
    浏览(52)
  • 使用eclipse连接mysql数据库步骤

    1.导入连接MySQL数据库驱动包(例如mysql-connector-java-5.1.7-bin.jar),并测试。 步骤: 1)在eclipse里面点击右上角的图标,如下图所示。 2)选中Database Connections右键,点new。 3)选择MySQL,点击next。 4)如图所示: 2.引用MySQL驱动包jar 在项目右键一个文件夹lib,把驱动包复制进去,

    2024年02月11日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包