您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > RedHat linux下安装hadoop 0
RedHatlinux下安装hadoop0.20.2,并在windows下远程连接此hadoop,开发调试1、hadoop在redhatlinux下的安装过程网上有很多讲授在windows下通过Cygwin安装hadoop的,笔者认为hadoop原始设计就是在linux下安装使用的,在windows下通过Cygwin安装也无非是模拟linux环境再在这个模拟的环境上装hadoop,既然要学hadoop就真枪实弹的在linux下安装来学习,但是要搞一台真正的linux系统对一般个人来说不容易,但是我们可以用虚拟机VMwarePlayer,就是在windows下装一个虚拟机(VMwarePlayer就是个很好的虚拟机),然后在虚拟机上装一个linux系统,实现和本机windows的通信,具体的怎么安装虚拟机,怎么在虚拟机上安装linux,以及怎么实现和本机windows的通信,这里就不讲了,这个网上有很多资料。2、在本机windows下,通过eclispe连接到linux虚拟机上安装好的haoop,进行开发调试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里pinglinux的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/hosts4、在windows下下载hadoop0.20.0,并修改hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,masters,slaves文件的配置5、把修改好的hadoop整个文件夹传到linux下6、把hadoop的bin加入到环境变量7、格式化hadoop,启动hadoop8、验证是否启动,并执行wordcount#这个顺序并不是一个写死的顺序,就得按照这个来,如果你知道原理,可以打乱顺序来操作,比如1、2、3,先那个后那个,都没问题,但是有些步骤还是得依靠一些操作完成了才能进行,新手建议按照顺序来。#一、实现linux的ssh无密码验证配置ask:为什么要配置ssh无密码验证answer:Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,(datanode向namenode传递心跳信息可能也是使用SSH协议,这是我认为的,还没有做深入了解)。许多教程上介绍Hadoop集群配置时只说明了namenode上SSH无密码登录所有datanode,我在配置时发现必须使datanode上也能SSH无密码登录到namenode,Hadoop集群才能正常启动(也许这不是必须的,只是我的一个失误,但是这样能够正常启动Hadoop集群)。上述蓝色字体,是我粘的某个前辈的话,大概意思是,namenode和datanode之间发命令是靠ssh来发的,发命令肯定是在运行的时候发,发的时候肯定不希望发一次就弹出个框说:有一台机器连接我,让他连吗。所以就要求后台namenode和datanode无障碍的进行通信,这个无障碍怎么实现呢?,就是配置ssh无密码验证.上述中前辈有个顾虑,说实现了namenode到datanode无障碍链接到,那还用实现datanode和namenode的无障碍连接吗?,这个我就不考虑了,我这里是伪分布的,就一台机器,namenode和datanode都在一个机器上,能实现自己连自己就行了。不是自己的问题就不去伤脑筋了,哇咔咔~~,读者如果弄完全分布式的时候,碰到这个问题,可以自己试试,不行,也就实现datanode到namenode的无障碍的通信,试试又累不死~~~。ask:实现无密码验证就能无障碍连接,这其中原理是神马捏?answer:以namenode到datanode为例子:Namenode作为客户端,要实现无密码公钥认证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上。当namenode通过ssh连接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenode。namenode收到加密数之后再用私钥进行解密,并将解密数回传给datanode,datanode确认解密数无误之后就允许namenode进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端namenode公钥复制到datanode上。这也是我粘的某个前辈的话,啥也不说了,前辈说的很清楚,就是这么回事。知道why了,现在就开始how吧我这里就一台机器,所以操作很简单在linux命令行里输入:ssh-keygen-trsa,然后一路回车。root@hadoopName-desktop:~$ssh-keygen-trsaGeneratingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/home/zhangtao/.ssh/id_rsa)://密钥保存位置,直接回车保持默认;Createddirectory'/home/zhangtao/.ssh'.Enterpassphrase(emptyfornopassphrase)://设置密钥的密码,空密码直接回车即可;Entersamepassphraseagain://确认上一步设置的密码。然后进入/root/.ssh/下面,会看到两个文件id_rsa.pub,id_rsa,然后执行cpid_rsa.pubauthorized_keys然后sshlocalhost验证是否成功,第一次要你输入yes,以后就不需要了。二、安装jdk,并配置环境变量先在linux下面建一个目录用来安装jdk,我建的目录是/usr/program,就是以后jdk安装到这个目录下面。先去下载一个linux下面的jdk版本,我的是jdk-6u6-linux-i586.bin,也有-rpm.bin结尾的,这种结尾的安装不如直接.bin的简单,这个怎么下,就不说了,网上一大堆的,下载1.6包括1.6以上的哦~~,然后用工具传到linux的/usr/program这个目录下,就是刚才我新建的那个,上传工具好多,ftp也行,ssh客户端也行,这个不多说,继续~~。登录到linux下,进入/usr/program目录下,发现多了一个文件,就是jdk-6u6-linux-i586.bin,然后开始安装。1、执行chmod+xjdk-6u6-linux-i586.bin,(这是因为这个文件传过来不是可执行的文件,要把他变成可执行文件)。2、执行./jdk-6u6-linux-i586.bin,(1、2步骤都是在/usr/program目录下执行的,2步骤,一路回车,遇到yes/no?全部yes,最后会done,安装成功).3、执行ls,会发现/usr/program这个目录下有个文件,一个是jdk-6u6-linux-i586.bin就是我们上传上来的,另一个就是dk1.6.0_06,就是jdk的安装根目录.开始配置环境变量1、执行cd/etc,进入/etc目录下。2、执行viprofile,修改profile文件在里面加入以下四行#setjavaenvironmentexportJAVA_HOME=/usr/program/jdk1.6.0_06exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib3、执行chmod+xprofile,把profile变成可执行文件4、执行sourceprofile,把profile里的内容执行生效5、执行,java、javac、java-version查看是否安装成功.三、修改linux机器名先说说怎么查看linux下的机器名在命令行里输入hostname回车,展现的即当前linux系统的机器名如下[root@hadoopName~]#hostnamehadoopName[root@hadoopName~]#读者也看到了,命令行的前缀[root@hadoopName~],@符号后面的就是机器名,前面的是当前用户名下面说说怎么修改redhatlinux下的机器名,下面的方法只适合修改redhat的,别的版本改机器名不是这样的1、执行cd/etc/sysconfig,进入/etc/sysconfig目录下2、执行vinetwork,修改network文件,NETWORKING=yesHOSTNAME=hadoopName把HOSTNAME改成你想要的机器名,我改成了hadoopName,然后保存3、执行cd/etc,进入/etc目录下4、执行vihosts,修改hosts文件#Donotremovethefollowingline,orvariousprograms#thatrequirenetworkfunctionalitywillfail.192.168.133.128hadoopNamehadoopName127.0.0.1localhost.localdomainlocalhost默认是只有黑色字体内容,然后加上红色字体内容,第一个是自身ip,第二个network里的hostname名字,第三个一样。网上很多资料说hadoop安装要在hosts里面加入所有的集群机器的iphostname对,嗯,没错,因为笔者这是单机,所以就只加自己就行了。5、修改完后,执行hostn
本文标题:RedHat linux下安装hadoop 0
链接地址:https://www.777doc.com/doc-6168373 .html