Hadoop的安装1、实现linux的ssh无密码验证配置.2、修改linux的机器名,并配置/etc/hosts3、在linux下安装jdk,并配好环境变量4、在windows下载hadoop 1.0.1,并修改hadoop-env.sh,core-site.xml,hdfs-site.xml, mapred-site.xml,masters,slaves文件的配置5、创建一个给hadoop备份的文件。
6、把hadoop的bin加入到环境变量7、修改部分运行文件的权限8、格式化hadoop,启动hadoop注意:这个顺序并不是一个写死的顺序,就得按照这个来。
如果你知道原理,可以打乱顺序来操作,比如1、2、3,先哪个后哪个,都没问题,但是有些步骤还是得依靠一些操作完成了才能进行,新手建议按照顺序来。
一、实现linux的ssh无密码验证配置(1)配置理由和原理Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,(datanode向namenode传递心跳信息可能也是使用SSH协议,这是我认为的,还没有做深入了解)。
大概意思是,namenode 和datanode之间发命令是靠ssh来发的,发命令肯定是在运行的时候发,发的时候肯定不希望发一次就弹出个框说:有一台机器连接我,让他连吗。
所以就要求后台namenode和datanode 无障碍的进行通信。
以namenode到datanode为例子:namenode作为客户端,要实现无密码公钥认证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上。
当namenode通过ssh连接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenode。
namenode收到加密数之后再用私钥进行解密,并将解密数回传给datanode,datanode确认解密数无误之后就允许namenode 进行连接了。
这就是一个公钥认证过程,其间不需要用户手工输入密码。
重要过程是将客户端namenode公钥复制到datanode上。
(2)具体操作生成密钥的方法,是操作在namenode上的,在linux上输入ssh-keygen -t rsa 一直回车,可以生成密钥。
我们办公室的namenode上已经有了生成好的密钥,所以不用生成。
只需将namenode上的密钥copy下来,复制到需要装hadoop的电脑上即可。
1、在namenode上找到/root/.ssh 文件,会看到两个文件id_rsa.pub,id_rsa。
然后执行cp id_rsa.pub authorized_keys然后ssh localhost验证是否成功,第一次要你输入yes,以后就不需要了。
(这是自我验证,把id_rsa.pub 文件拷贝到authorized_keys,然后自我检验,自己连自己看看能否成功)2、拷贝密钥方法一:你可以使用WinSCP软件,将authorized_keys文件复制到datanode的/root/.ssh文件里。
方法二:你可以在linux上输入[root@namenode1 ~]# cd /root/.ssh[root@namenode1 .ssh]# lsauthorized_keys id_rsa id_rsa.pub known_hosts[root@namenode1 .ssh]# sz authorized_keys(将文件下载到你电脑)然后在你要装datanode上输入[root@datanode1_3 ~]# cd /root/.ssh[root@datanode1_3 .ssh]# rz(选择文件上传到datanode的对应文件上)将authorized_keys传到datanode的/root/.ssh 上。
方法三:输入命令行:[root@namenode1 .ssh] #scp authorized_keys 192.168.1.109(datanode的IP):/root/.ssh这是拷贝命令,将namenode上的authorized_keys 拷贝到datanode的/root/,ssh 上。
(3)验证配置成功的方法在namenode上输入:ssh datanode的IP地址(或者在hosts文件配置好后,也可以使用datanode的机器名)第一次连接时,会出现一个问题,输入yes,就可以连到datanode的机子上了,无需密码。
root@namenode1 ~]# ssh datanode1_2The authenticity of host 'datanode1_2 (192.168.1.117)' can't be established.RSAkeyfingerprintis2b:3b:84:66:fb:bd:b1:a7:77:ae:49:7 7:52:a8:53:7d.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'datanode2' (RSA) to the list of known hosts.Last login: Wed Apr 25 15:57:15 2012[root@datanode1_2 ~]#我们可以看到我们已经转到了datanode上了。
注意:(1)当你ssh连到datanode之后,也就是你已经转到了该datanode下,不在原来的机器上了。
你可以输入命令行:#exit 回到原来的机器。
(2)namenode ssh到datanode是不需要密码的,但是datanode ssh到namenode上是需要密码的。
二、修改linux机器名(1)查看主机名在命令行输入:hostname[root@namenode1 /]# cd[root@namenode1 ~]# hostnamenamenode1这是你的主机名。
(2)修改主机名(这一步主要是修改主机,让主机记住分机)1、执行cd /etc/sysconfig,进入/etc/sysconfig目录下2、执行vi network,修改network文件,NETWORKING=yesHOSTNAME=hadoopName(修改成你需要的)把HOSTNAME改成你想要的机器名,办公室的电脑是改成namenode 和datanode,保存。
3、执行cd /etc,进入/etc目录下4、执行vi hosts[root@namenode1 etc]# vi hosts192.168.1.115 namenode1 namenode1192.168.1.116 datanode1_1 datanode1_1192.168.1.117 datenode1_2 datanode1_2192.168.1.111 datenode1_3 datanode1_3192.168.1.109 datenode1_4 datanode1_4127.0.0.1 localhost.localdomain localhost要加入的datanode,把IP地址和机器名加在后面。
这一步是让主机记住datanode的名字。
所以在修改datanode的hosts时,只需写入namenode和你需要加入hadoop机器的datanode的IP地址及机器名就好。
[root@datanode1_4 etc]# vi hosts127.0.0.1 localhost.localdomain localhost192.168.1.115 namenode1 namenode1192.168.1.109 datanode1_4 datanode1_45、输入hostname检查主机名。
重启电脑之后执行hostname命令。
三、安装JDK,并配置环境变量(1)安装JDK先在linux下面建一个目录用来安装jdk,我建的目录是/usr/program,就是以后jdk安装到这个目录下面。
在namenode上已经下载有最新的JDK安装包,不需要重新下载,直接使用。
[root@namenode1 ~]# cd /usr/program/[root@namenode1 program]# lshadoop-1.0.1 hadoop-1.0.1.tar.gz jdk-6u31-linux-x64.bin hadoop-1.0.1.tar jdk1.6.0_31把jdk-6u31-linux-x64.bin 这个文件传到你要安装的datanode的新建目录/usr/program上去。
然后开始安装1、执行chmod +x jdk-6u31-linux-x64.bin,(这是因为这个文件传过来不是可执行的文件,要把他变成可执行文件)。
2、执行 ./jdk-6u31-linux-x64.bin,(1、2步骤都是在/usr/program 目录下执行的,2步骤,一路回车,遇到yes/no? 全部yes,最后会done,安装成功).3、执行 ls,会发现/usr/program 这个目录下有个文件,一个是jdk-6u31-linux-x64.bin就是我们上传上来的,另一个就是jdk1.6.0_31,就是jdk的安装根目录.(2)配置环境变量1、执行 cd /etc, 进入/etc 目录下。
2、执行 vi profile, 修改profile文件在里面加入以下四行(红色部分):HOSTNAME=`/bin/hostname`HISTSIZE=1000if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; thenINPUTRC=/etc/inputrcfiexport JA V A_HOME=/usr/program/jdk1.6.0_31export PATH=$JA V A_HOME/bin:$JA V A_HOME/jre/bin:$PATHexport CLASSPATH=.:$JA V A_HOME/lib:$JA V A_HOME/jre/lib# export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC export HADOOP_HOME=/usr/program/hadoop-1.0.1export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-core-1.0.1.jarfor i in /etc/profile.d/*.sh ; doif [ -r "$i" ]; thenif [ "$PS1" ]; then. $ielse. $i >/dev/null 2>&1fifidoneunset iunset pathmunge3、执行chmod +x profile ,把profile变成可执行文件4、执行source profile,把profile里的内容执行生效5、执行,java、javac、java -version 查看是否安装成功.(四)、下载hadoop 1.0.1,并修改hadoop-env.sh,core-site.xml,hdfs-site.xml, mapred-site.xml,masters,slaves文件的配置。