Windows7 + cygwin+ hadoop +eclipse 安装完整

本文介绍如何在Windows环境下安装配置Hadoop及Eclipse,实现简单的WordCount示例程序。

整个过程分为三个步骤:

1. 安装CYGWIN
2. 安装Hadoop(0.20.0 )
3. 构建eclipse(只能使用eclipse-3.3.2版本

准备工作:安装JDK1.6,配置JAVA_HOME环境变量,此处不再细说!

1. 安装和配置Cygwin(http://cygwin.com/install.html)

在Windows下通过安装Cygwin模拟Linux环境,然后再安装Hadoop,是一种简单方便的方式,为Hadoop准备的模拟Linux环境安装过程如下:

1.1下载安装文件

针对不同系统类型下载相应的安装文件,下载地址:http://cygwin.com/install.html

我这里的系统是window 7所以下载的是setup-x86.exe

1.2安装Cygwin

刚刚下载的文件是模拟Linux系统所依赖的软件包下载和管理工具,以后想要在模拟Linux环境中安装或更新软件都需要通过这个工具来完成,下面我们就先运行起来这个工具如下:

1. 左键双击setup-x86.exe文件运行安装向导:

2. 点击【下一步】按钮进入程序引导安装页,这里有三个选项,选择第一项网络安装:

o           网络安装:通过网络下载并安装软件包

o           下载但不安装:通过网络下载软件包

o           本地安装:是用本地软件包安装

这里选择网络安装

3. 点击【下一步】进入选择模拟Linux系统的根目录和用户的向导页。在Linux的文件系统中有且只有一个根目录,在这里选择目录就是Linux中的那个根目录了,这里选择默认:c:\cygwin;用户选择第一项:本系统的所有有效用户。

注意:这里的路径不要使用有空格的目录!!!

4. 点击【下一步】选择本地软件包目录,该工具会自动记住并将以后下载的所有软件包都会放到这里指定的目录。这里可以随意选择,如果选择不存在目录,就好提示是否创建目录选Yes就OK。

5. 点击【下一步】选择您的网络连接,可以选择默认的第一项(直接连接)

6. 点击【下一步】,等待下载镜像站点列表,下载完成后出现选择下载软件包的站点。

7. 根据自己的情况选择合适的下载地址,我这里选择了国内的163站点,点击【下一步】,这个工具就会自动下载软件包信息列表下载完成后进入安装软件包选择页

8. 这一步比较重要,以下软件包要确保被安装:

注:这个软件包列表由前到后包括:分类、当前安装版本,最新版本,安装可执行文件?,安装源代码文件?,大小,包名称和说明。

需要安装的包包括下面两种:

o           基础软件包:Base及其下面的所有软件包,操作方法:点击Base后面的Default为Install。

o           SSH相关软件包:Net下的OpenSSL和和OpenSSH,用于Hadoop需要的SSH访问,操作方法:点击【+】展开Net节点,点击各个软件包前的最新版本号列的Keep为版本号即为选中安装。

2. 选择完软件包点击【下一步】,进入自动下载与安装

10. 点击【下一步】进入向导结束页,勾选创建桌面快捷方式点击【完成即可】

到这里,您已经完成了模拟Linux环境的安装,左键双击桌面上的图标打开这个模拟Linux的终端窗口输入几个常用Linux命令体验下。

(这里若需要进行SSH配置出现问题的话,可以进行一下步骤进行恢复)

打开终端,输入cygrunsrv-Rsshd  删除ssh服务

重新安装ssh服务:ssh-host-config

具体界面问题回答如下:

 


 

上图中的$ net start sshd是启动SSH服务。

接下来是配置无密码登陆:



验证如下:



ssh localhost 启动SSH

 

到此 CYGWIN安装完成!

整体截图如下:

 

 


 

 

2. 安装Hadoop

hadoop-0.20.2.tar.gz压缩包解压到cygwin中目录的 /home/Administrator(这里的Administrator是当前登录的用户,可能为其他名称)目录下,文件夹名称更改为hadoop

第一步:修改core-site.xml,配置如下内容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overridesin this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<final>true</final>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


第二步:修改hdfs-site.xml文件,配置如下内容:

<?xml version="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overridesin this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/cygdrive/d/hadoop/working/name</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>/cygdrive/d/hadoop/working/data</value>
<final>true</final>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>/cygdrive/d/hadoop/working/checkpoint</value>
<final>true</final>
</property>
</configuration>

第三步:修改mapred-site.xml配置如下内容:
<?xml version="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overridesin this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://localhost:9001</value>
<final>true</final>
</property>
<property>
<name>mapred.local.dir</name>
<value>/cygdrive/d/hadoop/working/dir1,/cygdrive/d/hadoop/working/dir2</value>
<final>true</final>
</property>
<property>
<name>mapred.system.dir</name>
<value>/cygdrive/d/hadoop/working/system</value>
<final>true</final>
</property>
</configuration>

注意:这里看网上有很多说需要更改hadoop-env.sh中的JAVA_HOME,这里实验发现改了反而无法运行成功,所以没有改动hadoop-env.sh中的内容

打开Cgywin窗口,执行cd~/hadoop命令,进入hadoop文件夹

启动Hadoop前,需要先格式化Hadoop的文件系统HDFS,执行命令:bin/hadoop namenode -format

 

(上图中的Re-format filesystem in\cygdrive\d\hadoop\working\name ? (Y or N)  是因为之前有格式化过,这里再重新进行格式化)

输入命令 bin/start-all.sh,启动所有进程,如下图:

 

接下来,验证是否安装成功

打开浏览器,分别输入下列网址,如果能够正常浏览,说明安装成功。

http://localhost:50030,回车打开MapReduce的web页面


如果都不能浏览,或不能浏览某一个,退出Cygwin,重新打开Cygwin,执行bin/start-all.sh命令。

到此Hadoop配置完成!!!

3. 配置eclipse(版本只能为eclipse-3.3.2,否则运行时无反应!!)

前提:

   eclipse-3.3.2(这个版本的插件只能用这个版本的eclipse

   hadoop-0.20.2-eclipse-plugin.jar(在hadoop-0.20.2/contrib/eclipse-plugin目录下)

3.1 将插件拷贝至 eclipse 的plugins 目录下。 

3.2 打开eclipse ,Window ->Open Perspective-> Other  选择Map/Reduce。下方将出现在eclipse下端,控制台旁边会多一个Tab,叫“Map/ReduceLocations”


 

注意:在进行下面配置之前,要先启动hadoop,在cgywin终端中,输入

 

在ECLIPSE中的Map/Reduce Locations标签的右上角点击New Hadoop location.




在弹出的对话框中填写如下内容:

Location name(取个名字)
Map/Reduce Master
(Job Tracker的IP和端口,根据mapred-site.xml中配置的mapred.job.tracker来填写)
DFS Master(Name Node的IP和端口,根据core-site.xml中配置的fs.default.name来填写)

 

本系统中:

 


  

所以这里填写如下所示:

 

经过上一步骤,左侧“Project Explorer”中应该会出现配置好的HDFS

一层一层点击下去最后出现的异常为

 org.apache.hadoop.security.AccessControlException:Permissiondenied: user=Administrator,…

处理方法:

     在master节点上修改hdfs-sit.xml加上以下内容

    <property>

        <name>dfs.permissions</name>

        <value>false</value>

        </property>

修改完成后,重新启动hadoop

 

此时再重新配置hadoop连接,此时连接正常

 

3.3  Window -> Preferences 选择  “Hadoop Map/Reduce” ,点击“Browse...” 选择Hadoop文件夹的路径。 
这个步骤与运行环境无关,只是在新建工程的时候能将 hadoop 根目录和lib 目录下的所有jar 包自动导入。

注意:这里要是不选择的话,在运行的时候可能会出错!!!

新建一个hadoop项目,命名为WordCountTest,在里面新建一个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.output.FileOutputFormat;


public class WordCount {
    public static class TokenizerMapper extendsMapper<LongWritable, Text, Text, IntWritable>{


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


        public void map(LongWritable key, Text value,Context context)
                throws IOException,InterruptedException {
            StringTokenizer itr = newStringTokenizer(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);
        }
    }


    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        if (args.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.setReducerClass(IntSumReducer.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);


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


        System.exit(job.waitForCompletion(true) ? 0 : 1);


    }


}

在DFS里面新建文件夹以及相应的输入文件,构建目录如图所示:

 

 

 

右击WordCount.java文件,

Run As-> Open Run Dialog... 选择WordCount程序,在Arguments中配置运行参数:/mapreduce/wordcount/input (文件在该文件夹中)

/mapreduce/wordcount/output/1(输出目录必须不存在,这里的目录1必须不存在,程序自动生成)

分别表示HDFS下的输入目录和输出目录,其中输入目录中有几个文本文件,输出目录必须不存在。

 

点击apply之后,右击WordCount.java文件run on hadoop

 

进入选择Hadoop

 

运行结果输出:



刷新output文件夹,会发现产生以下几件文件:



其中文件中就是输出的结果,内容如图所示:



至此window下的eclipse运行hadoop配置安装完成!

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值