Hadoop on Windows With Eclipse(伪分布式)

http://blog.csdn.net/elvis_dataguru/article/details/8962168

1介绍

Hadoop是一个强大的架构,用于自动并行化的计算任务。不幸的是某些编程对于它是个挑战。Hadoop程序让人难以理解和调试。有一种方法可以在开发人员的机器上本地运行一个简化版的Hadoop集群使之更容易一些。本教程描述如何设置这样一个集群运Windows平台上。它还描述了如何使用Eclipse集成这个集群,一个主要的Java开发环境。

2.安装前的准备

在我们开始之前,要确保以下组件安装在了你的机器上。

l  Java 1.7.0_17

l  Eclipse-SDK-4.2.2

注:本教程测试环境是Hadoop1.0.4版本,如果你使用的是其他版本可以酌情去安装

    为了确保不出现问题,建议都使用最新版本,我这两个版本都是最新下载的。

2.1 安装Cygwin

  安装完预安装软件后,下一步就是安装Cygwin环境。Cygwin是一个组从Unix上移植到Windows的包。因为Hadoop都是写在Unix平台上的,所以用Cygwin提供Hadoop的运行环境。

  安装cygwin环境有以下步骤:

1)        首先从http://www.cygwin.com网站下载所需的安装文件

2)        点击下载文件,你会看到如下的截图-本教程版本为1.7.17-1版本

CygwinInstaller

3) 当你看到上面的截图的时候,点击下一步按钮你会看到屏幕上有选择包的界面。要确保你选择了net category里的”openssh”。这个包是确保Hadoop集群正常运作和Eclipse的插件。

 

4)你选择完这些包后,点击下一步,完成安装。

3.设置环境变量

  下一步是设置路径环境变量,以至于Eclipse IDE可以访问Cygwin命令。

  设置环境变量需要以下步骤:

1)  我的计算机右键->属性

2)当你看到这个属性对话框,点击环境变量按钮如下所示

 

  3)当环境变量对话框出现时,单击路径变量位于系统变量栏,然后单击Edit按钮。

 

  4)当编辑对话框在Path末尾添加以下文本

[html] view plain copy
 
  1. $ ;d:\cygwin\bin;d:\cygwin\usr\sbin  

     注:这个路径要根据你cygwin安装到那个目录

  5)OK!!!

4 设置SSH守护进程

   两个Hadoop的脚本和Eclipse的插件需要无密码的SSH来操作。本节描述了在Cygwin环境如何设置。

4.1 配置ssh

  Xp下:

  1)打开Cygwin命令

  2)执行如下命令

[plain] view plain copy
 
  1. $ ssh-host-config  

  3) when asked “Shouldprivilege separation be used”, answer yes.

 4) When asked “new local account 'sshd'”, answer yes.

  5) When asked “(Say "no" if it is already installed as a service)”,answeryes.

  6) When asked Enter”the valueof CYGWIN for the daemon”, enter ntsec.

 7)When asked “Do you want to use a differentname?”,answeryes.

  8)输入密码

 9)下面是一个示例会话的命令。

 

4.2 开启ssh服务

第一种方法:直接输入命令

[plain] view plain copy
 
  1. $ net start sshd 或者 cygrunsrv –S sshd  

第二种方法:图形化操作

  1)在你的桌面或者开始菜单里找到”我的计算机”,然后鼠标右键选择管理。

  2)在左边的面板展开服务和应用程序,然后选择服务选项。

  3)找到CYGWIN sshd 选项,然后鼠标右键

  4)在菜单栏点击开启。

 

Win7下比较麻烦:

如果win7也按照跟xp一样的安装,就算你运行cygwin以管理员权限运行,到最后估计一样会报错,反正我这是这样子的,服务可以起来,但在最终密钥什么的都配置完成后执行会报:

Elvis@Elvis-PC ~

$ssh localhost

connection closed by ::1

后来针对这个问题我找了N多资料,主要是E文,难为我了,其中有官网的FQA里的文章还有很多国外的博客吧!具体连接我也搞乱了,就不贴出来了,根据几篇资料方法总结如下:

1)  如果你安装了SSH(估计很多都安装了然后发现有错误),可以按以下命令卸载:

[html]  view plain copy
 
  1. <pre name="code" class="plain">$net stop sshd  
  2. $ cygrunsrv-R sshd  
  3. $net user sshd /DELETE  # See note below  
  4. $ rm-R /etc/ssh*  
  5. $mkpasswd -cl > /etc/passwd  
  6. $mkgroup --local > /etc/group</pre>  
  7. <pre></pre>  
  8. <pre></pre>  

2)  决定一个用来运行sshd进程的用户,相信使用win7的同学肯定都至少会有一个非Administror用户,我的环境现在就是平时都使用Elvis用户具有管理员权限。而下一步需要执行的命令是必须要Administrator才有权利执行的,而管理员用户一般都是被禁的,具体怎么开启请看我博客里的一篇帖子:

http://blog.csdn.net/elvis_dataguru/article/details/8739987

3)        使用管理员用户执行以下命令来查看用户现在所具有权限(或者说叫许可?)

[plain] view plain copy
 
  1. $ editrights -l -u Elvis  

4)        估计大家上述命令执行后肯定没有我们现在所需要的权限,执行以下命令来增加吧!

 
 
[plain]  view plain copy
 
  1. $ editrights.exe -a SeAssignPrimaryTokenPrivilege -u Elvis  
  2. $ editrights.exe -a SeCreateTokenPrivilege -u Elvis  
  3. $ editrights.exe -a SeTcbPrivilege -u Elvis  
  4. $ editrights.exe -a SeServiceLogonRight -u Elvis  
 

  5)做完这些后,可以注销进入Elvis用户下继续操作,而后面的操作动作与前面xp下安装过程一样了,就不在详述了。

4.3 建立权限密钥

  Eclipse插件和Hadoop的脚本都需要通过权限密钥ssh权限来执行而不用密码了。以下步骤就是描述怎么建立权限密钥。

1)  打开cygwin终端

2)  执行以下命令生成密钥

[plain] view plain copy
 
  1. $ ssh-keygen  

3)      当提示输入文件名等直接ENTER接受默认值

4)      命令完成后生成密钥,输入以下命令到.ssh目录

[plain] view plain copy
 
  1. $ cd ~/.ssh  

5)      执行以下命令查看密钥是否真的生成

[plain] view plain copy
 
  1. $ ls -l  

      你应该能看到两个文件id_rsa.pub和id_rsa,看生成日期是最近生成的。这些文件中包含权限密钥。

6)      执行以下命令注册到新的authorization_keys文件中。

[plain] view plain copy
 
  1. $ cat id_rsa.pub >> authorized_keys  

7)      现在输入以下命令验证密钥是否正确

[plain] view plain copy
 
  1. $ ssh lcoalhost  

因为它是一个新的ssh安装,你将会被警告,主机无法确认你是否真的想连接。输入YES并且按ENTER。你会看到Cygwin在一次执行,那意味着你成功连接了。

  8)现在再次执行下面命令:

[plain] view plain copy
 
  1. $ ssh lcoalhost  

 

 

Setting upauthorization keys

5.下载,复制和解压Hadoop

   1)下载hadoop 1.0.4并且放到你指定的文件夹里比如我的放在了D:\java。

   2)打开Cygwin

   3)执行以下命令

 

[plain]  view plain copy
 
  1. $ cd  

 

4)执行下面命令直接在windows上以窗口形式打开home目录

[plain] view plain copy
 
  1. $ explorer .  

 

5)        把hadoop安装文件copy到你的Home目录下。

6. 解压Hadoop安装包

   解压安装包有以下步骤:

1)  打开一个新的Cygwin

2)  执行以下命令

 

[plain]  view plain copy
 
  1. $ tar –zvxf hadoop-1.0.4.tar.gz  

 

 3) 解压完后,执行以下命令

 

[plain]  view plain copy
 
  1. $ ls -l  

 

     这个命令列出home目录下的内容。你应该能看一个新生成的文件hadoop-1.0.4

4)下一步执行以下命令:

[plain] view plain copy
 
  1. $ cd hadoop-1.0.4  
  2. $ ls -l  

如果你与下面相似的信息,就说明你解压成功了,可以进行下一步

 

7. 配置Hadoop

  1)开启一个Cygwin窗口并且执行以下命令:

 

[plain]  view plain copy
 
  1. $ cd hadoop-1.0.4  
  2. $ cd conf  
  3. $ explorer .  

 

  2) 最后一个命令打开了Explorer窗体进入到conf文件夹

  3)配置hadoop-env.sh文件

 

[plain]  view plain copy
 
  1. export JAVA_HOME=/cygdrive/c/Progra~1/Java/jdk1.7.0_02  

   知识补充:   注:因为我的Java安装目录Program Files有空格,所以用缩写成Progra~1

 

  4)然后使用编辑软甲打开,我就用UE了,也可以使用eclipse来打开,主要是编辑core-site.xml、mapred-site.xml和hdfs-site.xml

  5)在3个文件中<configuration>和</configuration>里插入以下内容

    

core-site.xml

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>  

</property>

</configuration>

mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>

hdfs-site.xml

<property>      

<name>dfs.http.address</name>

<value>localhost:50070</value>

</property>

<property>      

<name>dfs.name.dir</name>

<value>/usr/local/hadoop/namenode</value>

</property>

<property>      

<name>dfs.data.dir</name>

<value>/usr/local/hadoop/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>   

注:在目录/usr/local目录下创建一个hadoop文件夹,这个是根据你前面配置中制定的namenode和datanode而定。

    还有就是localhost最好直接写成ip地址,我写的是电脑本机的ip:10.60.115.150

8.格式化namenode

  1)打开Cygwin,执行以下命令

 
 
[plain]  view plain copy
 
  1. $ cd hadoop-1.0.4  
  2. $ mkdir logs  
  3. $ bin/hadoop namenode -format  
 

  2) 最后一个命令产生的输出

 

现在文件系统已经创建,可以继续下一步工作。

9.安装Hadoop插件

 1)通过以下命令,打开eclipse-plugin文件夹

 

[plain]  view plain copy
 
  1. $ cd hadoop-1.0.4  
  2. $ cd contrib.  
  3. $ cd eclipse-plugin  
  4. $ explorer .  

 

   2) 然后把里面的hadoop-x.x.x-eclipse-plugin.jar拷贝到eclipse安装包里的plugin目录里

注:但本次教程的hadoop-1.0.4里面没有,所以我从网上找到了这个jar直接拷贝到eclipseplugin目录里

3)  启动eclipse

4) 打开Window->OpenPerspective->other->Map/Reduce

然后在打开Window->Show View->Other 搜索mapreduce视图

5)如图IDE

 

6)        配置Hadoop的安装目录

 

现在Hadoop安装和配置完了,还有eclipse的插件,下一步拿一个小Project测试下。

10.测试集群

10.1开启本地hadoop集群

1)开启5个Cygwin,然后分别执行以下命令:

 
 
[plain]  view plain copy
 
  1. Window1:  
  2. $ cd hadoop-1.0.4  
  3. $ bin/hadoop namenode  
  4. Window2:  
  5. $ bin/hadoop secondarynamenode  
  6. Window3:  
  7. $bin/hadoop jobtracker  
  8. Window4:  
  9. $bin/hadoop datanode  
  10. Window5:  
  11. $bin/hadoop tasktracker  
  12. 或者:直接输入以下命令  
  13. $bin/start-all.sh  
 

这个时候进群起来了,进行下一步。

注:这个时候前3个窗口可能是一直卡在某个地方,这个是正常现象无需担心,也可以在后面加上”&”使进程在后台运行,不在详述,感兴趣的同学可以自行查阅Linux关于”&”的用法

10.2 在Eclipse建立本地Hadoop

1)在切换到Map /Reduce的角度来看,选择Map / Reduce位置选项卡下面的Eclipse环境。然后单击空白空间右键选项卡并选择“新Hadoop位置....“从上下文菜单。您应该会看到一个对话框所示类似。

 

3)  填入项目,以下所示:

Location Name – localhost   --当然这个自己可以随便起名

Map/Reduce Master     --一定要与mapred-site.xml里面一致

Host –10.60.115.150

Port – 9001    

DFS Master

Check "Use M/R Master Host"  --要与core-site.xml里一致

Port -- 9000

User name – Elvis

然后点击完成。

4) 然后你会看到IDE

 

5)  可以通过eclipse直接copyfromlocal数据。

6)  到这里,在Win下的Hadoop伪分布式集群构建完毕了+Eclipse的配置

10.3 hello测试

  用Hadoop自带的WordCount实例可以统计一批文本文件中各单词出现的次数。

1)  首先先做以下动作

 
 
[plain]  view plain copy
 
  1. $ mkdir input  
  2. $ cd input  
  3. $ echo “hello world” > test1.txt  
  4. $ echo “hello hadoop”> test2.txt  
  5. $ cat test1.txt #可以使用这个命令查看文件内容  
  6. $ bin/hadoop dfs –put ../input in  
  7. $ bin/hadoop dfs –ls in  
  8. $ bin/hadoop jar hadoop-examples-1.0.4.jar wordcount in out  
  9. $ bin/hadoop dfs –cat out/*  

猜你喜欢

转载自balzac.iteye.com/blog/2209133