windows上eclipse搭建hadoop开发环境(自用,备忘)

注:本文为自用,随时更新。

一.系统环境

Windows7、Ecplise 4.4.0,Hadoop2.7.2
Hadoop安装教程请看:Hadoop2.7.2安装教程
此处需要注意的是:你的hadoop运行在远程的虚拟机上,但是你的windows上也需要有hadoop的运行环境,这样eclipse才能进行远程调试,所按照上面教程安装完虚拟机上的hadoop,还需要下载同样版本的Hadoop加压到windows上即可,还需要配置相应的环境变量,拷贝winutil.exe.hadoop.dll等文件到hadoop安装目录bin文件夹下,你可以在网上搜一下,或者可以参考一下这篇文章http://blog.csdn.net/fly_leopard/article/details/51250443

二.安装步骤

1.安装hadoop插件

下载hadoop-eclipse-plugin-2.7.2.jar(点击下载),并且拷贝到eclipse根目录下/dropins下

2.启动myeclipse,打开Perspective:

【Window】->【Open Perspective】->【Other...】->【Map/Reduce】->【OK】

3、 打开一个View:

【Window】->【Show View】->【Other...】->【MapReduce Tools】->【Map/Reduce Locations】->【OK】

4.添加Hadoop Location:


点击New Hadoop location

修改其中的内容:
我的hadoop安装在虚拟机上,地址为192.168.48.129
修改其中内容:
Map/Reduce Master 这个框里
Host:就是jobtracker 所在的集群机器,这里写192.168.48.129
Hort:就是jobtracker 的port,这里写的是9001
Map/Reduce Master 这个框里:这两个参数就是mapred-site.xml里面mapred.job.tracker里面的ip和port
DFS Master 这个框里
Host:就是namenode所在的集群机器,这里写192.168.48.129
Port:就是namenode的port,这里写9000
DFS Master 这个框里:这两个参数就是core-site.xml里面fs.defaultFS(或fs.default.name)里面的ip和port
user name:这个是连接hadoop的用户名
因为我是用hadoop用户安装的hadoop,而且没建立其他的用户,所以用hadoop。下面的不用填写。然后点击finish按钮,此时,这个视图中就有多了一条记录。

重启eclipse并重新编辑刚才建立的那个连接记录,现在我们编辑advance parameters tab页
(重启编辑advance parameters tab页原因:在新建连接的时候,这个advance paramters  tab页面的一些属性会显示不出来,显示不出来也就没法设置,所以必须重启一下eclipse再进来编辑才能看到)
这里大部分的属性都已经自动填写上了,其实就是把core-site.xml,hdfs-site.xml,mapred-site.xml里面的一些配置属性展示出来。因为在安装hadoop的时候,其site系列配置文件里有改动,所以这里也要弄成一样的设置。主要关注的有以下属性:
fs.defualt.name(fs.defaultFS):这个在General tab页已经设置了
mapred.job.tracker:这个在General tab页也设置了
dfs.replication:这个这里默认是3,因为我在hdfs-site.xml里面设置成了1,所以这里也要设置成1 
hadoop.tmp.dir:这里填写你在core-site.xml中设置的hadoop.tmp.dir
需要修改的内容如下图



然后点击finish,然后就连接上了(先要启动sshd服务,启动hadoop进程),连接上的标志如图:

注1:我在这里遇到一个小问题,我在ubutun上安装hadoop时,core-site.xml属性fs.defaultFS设置的地址是localhost,由于权限原因,我在windows上用eclipse进行连接hadoop,被hadoop拒绝了连接.如下所示:


出现这种情况只需要把fs.defaultFS属性改为你的ip地址即可,如下所示:

注2:可以在文件上右击,选择删除试下,通常第一次是不成功的,会提示一堆东西,大意是权限不足之类,原因是当前的win7登录用户不是虚拟机里hadoop的运行用户,解决办法有很多,比如你可以在win7上新建一个hadoop的管理员用户,然后切换成hadoop登录win7,再使用eclipse开发,但是这样太烦,最简单的办法:

hdfs-site.xml里添加

1  <property>
2     <name>dfs.permissions</name>
3     <value>false</value>
4  </property>

然后在虚拟机里,运行hadoop dfsadmin -safemode leave

保险起见,再来一个 hadoop fs -chmod 777 /

总而言之,就是彻底把hadoop的安全检测关掉(学习阶段不需要这些,正式生产上时,不要这么干),最后重启hadoop,再到eclipse里,重复刚才的删除文件操作试下,应该可以了。

5.跑一个wordcount例子

(1)新建Map/Reduce Project:

【File】->【New】->【Project...】->【Map/Reduce】->【Map/Reduce Project】->【Project name: TestHadoop】->【Configure Hadoop install directory...】->【Hadoop installation directory: D:\hadoop\hadoop-2.7.2\hadoop-2.7.2】->【Apply】->【OK】->【Next】->【Allow output folders for source folders】->【Finish】
如下图所示:



(2)新建WordCount类,代码是从Hadoop自带的例子中copy过来的,如下


代码:
package com.wimang.test;

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 {

			StringTokenizer itr = new StringTokenizer(value.toString());

			while (itr.hasMoreTokens()) {

				word.set(itr.nextToken());

				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, result);

		}

	}

	@SuppressWarnings("deprecation")
	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);

	}
}

(3)造一些模拟数据

 为了运行程序,需要一个输入的文件夹和输出的文件夹。输出文件夹,在程序运行完成后会自动生成。我们需要给程序一个输入文件夹。
主要可以用两种方法:
方法一:在eclipse上用鼠标右键即可创建文件夹(首先要把权限解决了,上面有解决的方法),一个输入文件夹input(名字你任意命名),上传一两个带有单词的文件到该文件夹中即可。
方法二:在运行hadoop的虚拟机上直接用命令搞掉,具体请参考Hadoop安装教程_单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04(转载,修改部分内容)运行Hadoop伪分布式实例部分内容即可。

(4)配置运行参数

①在新建的项目WordCount,点击WordCount.java,右键-->Run As-->Run Configurations 
②在弹出的Run Configurations对话框中,点Java Application,右键-->New,这时会新建一个application名为WordCount 
③配置运行参数,点Arguments,在Program arguments中输入“你要传给程序的输入文件夹和你要求程序将计算结果保存的文件夹”,如:

(5)点击run,运行程序。

出现如下图,即为运行成功。


或者在hadoop运行的虚拟机上通过敲击命令查看也可以,可以在终端中用命令如下,查看是否生成文件夹output: 
bin/hadoop fs -ls  
用下面命令查看生成的文件内容: 
bin/hadoop fs -cat output1/* 


(6)运行WordCount中出现的问题。

情况1
如下图:

如果双击运行windows安装hadoop目录下的bin文件夹中的winutils.exe出现如下图所示:
注:若你的bin下没有这些文件,请点击hadoop_dll_winutil_2.7.2.zip进行下载,解压到bin目录下即可,注意hadoop.dll等文件不要与hadoop冲突。为了不出现依赖性错误可以将hadoop.dll放到c:/windows/System32下一份。hadoop windows下环境配置可以参考http://blog.csdn.net/fly_leopard/article/details/51250443

出现如上问题,只需要下载安装vc+2013组件即可,下载地址为:http://www.microsoft.com/en-us/download/confirmation.aspx?id=40784

情况2

就是没有没有写的权限,这时候可以参考上面按照eclipse hadoop插件时有提到过解决办法。如果是安装我的这个流程走,应该不会出现这个问题。

到此,就可以在windows上进行eclipse远程开发调试ubutun上的Hadoop了。

注:本文为自用,随时更新。

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
2、spark wordCount程序深度剖析 标签: spark 一、Eclipse(scala IDE)开发local和cluster (一). 配置开发环境 要在本地安装好java和scala。  由于spark1.6需要scala 2.10.X版本的。推荐 2.10.4,java版本最好是1.8。所以提前我们要需要安装好java和scala并在环境变量中配置好。 下载scala IDE for eclipse安装 连接: http://scala-ide.org/download/sdk.html
1、spark 部署 标签: spark 0 apache spark项目架构 spark SQL -- spark streaming -- MLlib -- GraphX 0.1 hadoop快速搭建,主要利用hdfs存储框架 下载hadoop-2.6.0,解压,到etc/hadoop/目录下 0.2 快速配置文件 cat core-site.xml configuration property name fs.defaultFS /name value hdfs://worker1:9000 /va

Devstack单节点环境实战配置 - 2016-07-23 14:07:05

本实验是在VMware12下建立虚机的一个测试环境。 1 前期准备工作 真机环境win10 Linux版本 centos-everything-7.0 VMware版本 VMwareworkstations12 虚机配置如下: 8G内存 2核cpu(开启虚拟化) 网络配置为桥接模式 /boot 500M(一定要分大点不然之后会遇到问题) swap分区4G 其余的空间全部分给/分区 配置yum源,你可以保持装机自带的centos自带官方yum源,或者使用国内的给的镜像,本次试验中用的国外镜像并且使用fast
Openstack自动化部署工具, 主要用于生产环境. 一. 环境准备 这里用的是Openstack 9.0版本. Fuel Documentation 下载 Fuel for OpenStack镜像文件 , 用于安装Feul Master. 安装 Xshell , 用于远程连接. 安装 xftp , 用于从Windows主机向虚拟机传输文件. 二. 安装fuel_master节点 1. VirtualBox网络配置 管理-全局设定-网络-仅主机(Host-Only)网络 新建三张新的网卡: Host-O
本篇主要阐述通过DeveStack 去部署Openstack(mitaka),对大多数来说安装部署Openstack 来说是个痛苦的过程,尤其是 OpenStack和它依赖的一些组件在快速发展中,经常出现这个版本组件对不上那个版本 dashboard等情况。如果只是看看或者初期玩玩 OpenStack的话,使用DevStack也是个不错的办法。DevStack采用了自动化源码部署的方式,适用于开发环境的部署和Openstack开发者,单节点,小环境;这里采用的操作系统为Ubuntu14.04。 一、操作系
操作过程: 第一步删除phoenix中系统的表格信息,主要为SYSTEM.CATALOG,第二步删除Hbase中的表格信息。 操作步骤: (1)查询phoenix系统表 SYSTEM.CATALOG 内容是所有表格的信息,系统表和自建表 SYSTEM.FUNCTION 内容是所有函数信息,系统函数和自定义函数 SYSTEM.SEQUENCE 我也不知道 SYSTEM.STATS 内容是所有表格的最后状态信息 (2)查询SYSTEM.CATALOG表结构 (3)我要删除的表格 DELETE from SYS
1.查看mysql中metastore数据存储结构 Metastore中只保存了表的描述信息( 名字,列,类型,对应目录 ) 使用SQLYog连接itcast05 的mysql数据库 查看hive数据库的表结构: 2.建表(默认是内部表(先建表,后有数据)) (建表时必须指定列的分隔符) create table trade_detail(id bigint, account string, income double, expenses double, time string) row format d
1、查看系统环境 cat /etc/redhat-releaseuname -runame -m 关闭所有服务器的防火墙 /etc/init.d/iptables stopchkconfig iptables offchkconfig --list iptables 2、Spark集群机器规划 一共准备了四台机器 Host IP Hadoop Spark Node1 192.168.2.128 Master Master Node2 192.168.2.130 Slave Slave Node3 192.
本篇主要阐述通过DeveStack 去部署Openstack(mitaka),对大多数来说安装部署Openstack 来说是个痛苦的过程,尤其是 OpenStack和它依赖的一些组件在快速发展中,经常出现这个版本组件对不上那个版本 dashboard等情况。如果只是看看或者初期玩玩 OpenStack的话,使用DevStack也是个不错的办法。DevStack采用了自动化源码部署的方式,适用于开发环境的部署和Openstack开发者,单节点,小环境;这里采用的操作系统为Ubuntu14.04。 一、操作系
Spark版本: 1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完成特殊优化。可以通过SQL、DataFrames API、Datasets API与Spark SQL进行交互,无论使用何种方式,SparkSQL使用统一的执行引擎记性处理。用户可以根据自己喜好,在不同API中选择合适的进行处理。本章中所有用例均可以在 spark-shell、pyspark shell、s