日期:2014-05-16 浏览次数:20754 次
????? ?网上有很多讲授在windows下通过Cygwin安装hadoop的,笔者认为hadoop原始设计就是在linux下安装使用的,在windows下通过 Cygwin 安装也无非是模拟linux环境再在这个模拟的环境上装hadoop,既然要学hadoop就真枪实弹的在linux下安装来学习,但是要搞一台真正的 linux系统对一般个人来说不容易,但是我们可以用虚拟机VMware Player,就是在windows下装一个虚拟机(VMware Player 就是个很好的虚拟机),然后在虚拟机上装一个linux系统,实现和本机windows的通信,具体的怎么安装虚拟机,怎么在虚拟机上安装linux,以 及怎么实现和本机windows的通信,这里就不讲了,这个网上有很多资料。
????linux上装好hadoop之后,可以等陆到linux上通过hadoop的shell命令查看hadoop的 hdfs文件系统,执行写好的mapreduce程序,但是这样会很不方便,我们通常 的做法是在windows下开发程序,调试成功之后,再发布到linux上执行,这一部分就是来分享一下如何配置windows下的eclipse,可以 链接到linux下的hadoop。
?
?
?? ? ?hadoop安装有三种模式:单机模式,伪分布式,完全分布式。
?? ? ?1、单机模式: ? 没意义,pass掉,不讨论。
?
?? ? ?2、 伪分布式: ? 就是在一台机器上模拟namenode、datanode、jobtracker、tasktracker、secondaryname。每一个存在的形式是一个java进程。
?
?? ? ?3、完全分布式:就是一个hadoop集群,有n台机器组成,一般组织方式是:一台机器作为master,上面 运行 ? ?namenode和jobtracker,另外的机器作为slave,上面运行datanode和tasktracker,至于 secondaryname,可以运行在master上,也可以运行在另外一台机器上。secondaryname是namenode的一个备份里面同样 保存了名字空间,和文件到文件块的map关系。建议运行在另外一台机器上,这样master死掉之后,还可以通过secondaryname所在的机器找 回名字空间,和文件到文件块得map关系数据,恢复namenode。
?
?? ? ?这里条件有限,就只能实现伪分布式,就是在虚拟机上装一个linux。其实也可以在虚拟机上装n个linux,来实现完全分布式,但是我怕我的小本本,吃不消。就只能装伪分布式了。
?
?? ? 首先确保windows下已经安装了虚拟机,并在虚拟机上安装了linux,且能和windows通信了(在windows的cmd里ping linux的ip能ping通说明可以通信了,ask:怎么知道linux的ip?,answer:进入linux终端,ifconfig即可看到)笔者 window上已经安装了虚拟机并在虚拟机上装了linux系统,装linux的时候会有一个root用户,接下来我们就全部用这个root用户来操作, 网上好多资料说新建一个用户比如hadoop,来安装hadoop,这里为了方便,就用root(其实是偷懒,不想弄得复杂,哇咔咔,(*^__^*) 嘻嘻……)。
?
?? ?安装hadoop步骤
?? ?1、实现linux的ssh无密码验证配置.
?? ?2、在linux下安装jdk,并配好环境变量
?? ?3、修改linux的机器名,并配置 /etc/hosts
?? ?4、在windows下下载hadoop 0.20.0,并修改hadoop-env.sh,core-site.xml,hdfs-site.xml,
?? ? ? ??mapred-site.xml,masters,slaves文件的配置
?? ?5、把修改好的hadoop整个文件夹传到linux下
?? ?6、把hadoop的bin加入到环境变量
?? ?7、格式化hadoop,启动hadoop
?? ?8、验证是否启动,并执行wordcount
?
?#这个顺序并不是一个写死的顺序,就得按照这个来,如果你知道原理,可以打乱顺序来操作,比如1、2、3,先那个后那个,都没问题,但是有些步骤还是得依靠一些操作完成了才能进行,新手建议按照顺序来。#
?
?
?? ? ?ask:为什么要配置ssh无密码验证
?
?? ? ?answer:Hadoop 需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,(datanode向namenode传递心跳信息 可能也是使用SSH协议,这是我认为的,还没有做深入了解)。许多教程上介绍Hadoop集群配置时只说明了namenode上SSH无密码登录所有 datanode,我在配置时发现必须使datanode上也能SSH无密码登录到namenode,Hadoop集群才能正常启动(也许这不是必须的, 只是我的一个失误,但是这样能够正常启动Hadoop集群)。 上 述蓝色字体,是我粘的某个前辈的话,大概意思是,nameno