热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

原文地址为:Windows下配置Eclipse连接Hadoop开发环境个人小站,正在持续整理中,欢迎访问:http:shitouer.cn小站博文地址࿱
原文地址为:
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
{

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
{
private IntWritable result = new IntWritable();

public void reduce(Text key, Iterable 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 ");
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 公社 听,没见过你们这么无耻的人!转载之后,不仅原转载文章被变成你们的,连引用的自己的文章,也都一并给你们摘抄过去变成你们的了。


转载请注明本文地址:
Windows 下配置 Eclipse 连接 Hadoop 开发环境


推荐阅读
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文探讨了如何在 F# Interactive (FSI) 中通过 AddPrinter 和 AddPrintTransformer 方法自定义类型(尤其是集合类型)的输出格式,提供了详细的指南和示例代码。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
author-avatar
手机用户2502908311
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有