Windows下用Eclipse连接hadoop集群开发环境

传说中的堕落 2016-08-18 09:12:58
前言:很多年不弄代码了,最近云计算很热,有点手痒。。费了很大劲终于弄通了eclipse连接云集群环境,总结一下,让他人少走点弯路。

一、原始环境
win7操作系统

二、下载软件
jdk1.8
hadoop2.7.2
eclipse mar
hadoop eclipse plugin

三、部署
安装jdk1.8
安装eclipse
将hadoop eclipse plugin拷贝到eclipse的plugin目录
将hadoop2.7.2解压存放到硬盘的某个目录位置
打开Eclipse,菜单项 Windows—Preferences, Hadoop Map/Reduce选项,填入刚才的hadoop2.7.2目录
windows-show viewer-other 选择map reduce.然后将hadoop集群的ip和端口填进去就可以了

四、设置注意
因为hadoop集群的访问用户是hadoop,开发机器的用户名也需要重新命名成hadoop
建立HADOOP_HOME环境变量,指向hadoop2.7.2的安装目录 然后重启机器
将hadoop集群dfs.permissions.enabled设置成false
在Eclipse中建立工程,类型选择MapReduce类型的那种
最终程序是以jar包形式提交到hadoop集群环境执行的,所以编码完成后要export成jar包放在工程的根目录下。然后run on hadoop调试

五、样例代码
package wordcount;

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.LongWritable;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

public class wordcount {

public static class wordcountMap extends
Mapper<LongWritable, Text, Text, IntWritable> {

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

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

public static class wordcountReduce extends
Reducer<Text, IntWritable, Text, IntWritable> {

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

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();

conf.set("mapreduce.app-submission.cross-platform", "true");
conf.set("mapred.job.tracker", "192.168.120.57:9000");
conf.set("fs.default.name", "hdfs://192.168.120.57:9000");
conf.set("mapreduce.jobhistory.address","192.168.120.57:10020");
conf.set("hadoop.job.user", "hadoop");
conf.set("mapreduce.framework.name", "yarn");
conf.set("mapreduce.jobtracker.address", "192.168.120.57:9000");
conf.set("yarn.resourcemanager.hostname", "192.168.120.57");
conf.set("yarn.resourcemanager.admin.address", "192.168.120.57:8033");
conf.set("yarn.resourcemanager.address", "192.168.120.57:8032");
conf.set("yarn.resourcemanager.resource-tracker.address", "192.168.120.57:8036");
conf.set("yarn.resourcemanager.scheduler.address", "192.168.120.57:8030");
conf.set("mapred.jar", "wordcount.jar");


Job job = new Job(conf);
job.setJarByClass(wordcount.class);
job.setJobName("wordcount");

job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

job.setMapperClass(wordcountMap.class);
job.setReducerClass(wordcountReduce.class);

job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);

FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));

job.waitForCompletion(true);
}
}
...全文
801 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ksgt950817 2016-11-27
  • 打赏
  • 举报
回复
引用 2楼我是你的主体 的回复:
[quote=引用 1 楼 ksgt950817 的回复:] 楼主你好,请教个问题,前面说的将hadoop eclipse plugin放到eclipse plugin中,再重启eclipse并没有看到mapreduce,网上说hadoop2.7.2需要制作一下是么?
不需要啊..直接放过去就行了[/quote]eclipse下错版本了。。。
传说中的堕落 2016-11-23
  • 打赏
  • 举报
回复
引用 1 楼 ksgt950817 的回复:
楼主你好,请教个问题,前面说的将hadoop eclipse plugin放到eclipse plugin中,再重启eclipse并没有看到mapreduce,网上说hadoop2.7.2需要制作一下是么?
不需要啊..直接放过去就行了
ksgt950817 2016-11-10
  • 打赏
  • 举报
回复
楼主你好,请教个问题,前面说的将hadoop eclipse plugin放到eclipse plugin中,再重启eclipse并没有看到mapreduce,网上说hadoop2.7.2需要制作一下是么?
内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,并强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务分配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习并实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,更强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。

58,441

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧