2024年1月16日发(作者:)
Hadoop的安装
1、实现linux的ssh无密码验证配置.
2、修改linux的机器名,并配置 /etc/hosts
3、在linux下安装jdk,并配好环境变量
4、在windows下载hadoop 1.0.1,并修改,,, ,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_,id_rsa。
然后执行 cp id_ authorized_keys
然后 ssh localhost 验证是否成功,第一次要你输入yes,以后就不需要了。(这是自我验证,把id_ 文件拷贝到authorized_keys,然后自我检验,自己连自己看看能否成功)
2、拷贝密钥
方法一:你可以使用WinSCP软件,将authorized_keys文件复制到datanode的 /root/.ssh 文件里。
方法二:你可以在linux上输入
[root@namenode1 ~]# cd /root/.ssh
[root@namenode1 .ssh]# ls
authorized_keys id_rsa id_ 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_2
The authenticity of host 'datanode1_2 (192.168.1.117)' can't be
fingerprintis2b:3b:84:66:fb:bd:b1:a7:77:ae:49:77:52:a8:53: you sure you want to continue connecting
(yes/no)? yes
Warning: 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 ~]# hostname
namenode1
这是你的主机名。
(2)修改主机名(这一步主要是修改主机,让主机记住分机)
1、执行 cd /etc/sysconfig,进入/etc/sysconfig 目录下
2、执行 vi network,修改network文件,
NETWORKING=yes
HOSTNAME=hadoopName(修改成你需要的)
把HOSTNAME改成你想要的机器名,办公室的电脑是改成namenode和datanode,保存。
3、执行 cd /etc,进入/etc 目录下
4、执行vi hosts
[root@namenode1 etc]# vi hosts
192.168.1.115 namenode1 namenode1
192.168.1.116 datanode1_1 datanode1_1
192.168.1.117 datenode1_2 datanode1_2
192.168.1.111 datenode1_3 datanode1_3
192.168.1.109 datenode1_4 datanode1_4
127.0.0.1 omain localhost
要加入的datanode,把IP地址和机器名加在后面。这一步是让主机记住datanode的名字。所以在修改datanode的hosts时,只需写入namenode和你需要加入hadoop机器的datanode的IP地址及机器名就好。
[root@datanode1_4 etc]# vi hosts
127.0.0.1 omain localhost
192.168.1.115 namenode1 namenode1
192.168.1.109 datanode1_4 datanode1_4
5、输入hostname检查主机名。
重启电脑之后执行hostname命令。
三、安装JDK,并配置环境变量
(1)安装JDK
先在linux下面建一个目录用来安装jdk,我建的目录是 /usr/program,就是以后jdk安装到这个目录下面。
在namenode上已经下载有最新的JDK安装包,不需要重新下载,直
接使用。
[root@namenode1 ~]# cd /usr/program/
[root@namenode1 program]# ls
hadoop-1.0.1
jdk1.6.0_31
把 这个文件传到你要安装的datanode的新建目录/usr/program上去。
然后开始安装
1、执行 chmod +x ,(这是因为这个文件传过来不是可执行的文件,要把他变成可执行文件)。
2、执行 ./,(1、2步骤都是在 /usr/program 目录下执行的,2步骤,一路回车,遇到yes/no? 全部yes,最后会done,安装成功).
3、执行 ls,会发现/usr/program 这个目录下有个文件,一个是就是我们上传上来的,另一个就是jdk1.6.0_31,就是jdk的安装根目录.
(2)配置环境变量
1、执行 cd /etc, 进入/etc 目录下。
2、执行 vi profile, 修改profile文件
在里面加入以下四行(红色部分):
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
export JAVA_HOME=/usr/program/jdk1.6.0_31
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
# export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
export HADOOP_HOME=/usr/program/hadoop-1.0.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. $i
else
. $i >/dev/null 2>&1
fi
fi
done
unset i
unset pathmunge
3、执行 chmod +x profile ,把profile变成可执行文件
4、执行 source profile,把profile里的内容执行生效
5、执行,java、javac、java -version 查看是否安装成功.
(四)、下载hadoop 1.0.1,并修改,,, ,masters,slaves文件的配置。
在我们的namenode1上已经有hadoop 1.0.1解压包,可以直接下来用。
[root@namenode1 ~]# cd /usr/program/
[root@namenode1 program]# ls
hadoop-1.0.1
jdk1.6.0_31
在你要安装的电脑上解压。
(1)修改文件
[root@datanode1_3 ~]# cd /usr/program/hadoop-1.0.1
[root@datanode1_3 hadoop-1.0.1]# cd conf
[root@datanode1_3 conf]# vi
修改红色部分
# The java implementation to use. Required.
export JAVA_HOME=/usr/program/jdk1.6.0_31 (我们新装的JDK的版本)
将JDK修改成你的版本。
(2)修改
[root@namenode1 conf]# vi
加入红色部分。
(3)修改
[root@namenode1 conf]# vi
加入红色部分
(4)修改
[root@namenode1 conf]# vi
加入红色部分
(5)修改masters和slaves
[root@namenode1 conf]# vi masters
192.168.1.115 (namenode的IP)
[root@namenode1 conf]# vi slaves
192.168.1.116 (datanode的IP)
192.168.1.117
192.168.1.111
这一步主要是在hadoop上表示,主机也就是masters是哪一台,分机也就是slaves是哪几台,后面加入的datanode的IP都需要加入到namenode的slaves上。datanode上的masters要写入namenode的IP
,slaves就不用管了。
OK了!
五、创建一个给hadoop备份的文件建一个目录
上述文件修改好之后,记得建个目录,我建的目录是/usr/local/hadoop
在启动hadoop之后会在这个目录下面产生一个tmp临时文件。
[root@datanode1_4 ~]# cd /usr/local/hadoop/
[root@datanode1_4 hadoop]# ls
hadooptmp
这个文件是安装完启动之后自动产生的,建了目录之后直接下一步就可以了。在连好之前,保证这个文件不存在。
六、把hadoop的bin加入到环境变
1、执行 cd /etc, 进入/etc 目录下。
2、执行 vi profile, 修改profile文件
在里面加入以下四行
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
export JAVA_HOME=/usr/program/jdk1.6.0_31
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
# export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
export HADOOP_HOME=/usr/program/hadoop-1.0.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. $i
else
. $i >/dev/null 2>&1
fi
fi
done
unset i
unset pathmunge
加入红色部分
3、执行 chmod +x profile ,把profile变成可执行文件
4、执行 source profile,把profile里的内容执行生效
(我们不管是装hadoop和JDK都修改了环境变量,都是在/etc/profile上vi修改的,所以我们做完第一步和第二部之后,可以把profile整个拷贝到你需要增加的datanode节点上。在进行部分文件权限的修改,就可以了。因为在profile文件里的内容是一样的。)
七、修改部分运行文件的权限。(这个步骤主要是对新加入的datanode操作的,不需要在namenode进行修改)
/usr/program/hadoop-1.0.1/bin
将这个文件下的所有的 .sh 文件变成可执行文件。
[root@datanode1_4 ~]# cd /usr/program/hadoop-1.0.1/bin
[root@datanode1_4 bin]# chmod +x *.sh
将这个文件下的hadoop这个文件变成可执行文件。
#chmod +x hadoop
八、格式化hadoop,启动hadoop
保证主机和分机的防火墙都是关着的。
(1)格式化
在namenode上执行 # hadoop namenode –format
(2)启动hadoop
输入命令 (终止命令是)
(2)输入jps检验hadoop的启动情况。
会出现
[root@namenode1 ~]# jps
3916 NameNode
4087 SecondaryNameNode
4310 Jps
4185 JobTracker
表示namenode运行正常。
(3)在网页上检查是否加入了新的datanode
192.168.1.115:50070/
会出现
可以看到节点的运行情况。
(4)检查map reduce的运行情况
192.168.1.115:50030/
可以看到节点运行map reduce的情况。
如果都显示出节点的情况,表示你已经安装成功了。
新加datanode的安装步骤
1、ssh无密码配置和上面详细步骤一样,在新datanode上的/root
上建一个/.ssh的目录,把namenode的authorized_keys复制到新datanode的/.ssh目录上。在namenode上ssh验证一下是否需要密码。
2修改机器名,和上面详细步骤一样。记得重启一下。
3建/usr/program这个目录,把jdk的安装文件放进去,安装一下。这和上面详细步骤一样,但不需要修改环境变量。
4将namenode上/usr/program/hadoop-1.0.1这个文件拷贝到新datanode的相同目录下。再将namenode上面/etc/profile这个文件拷贝到新datanode相同目录上。查看profile的可执行情况,不可执行就用命令把profile变成可执行文件,再用source命令让profile生效。
5在/usr/local/下面建一个hadoop目录,保证里面是空的。Hadoop安装好了之后会在这里产生一个临时文件。
6和上面详细步骤的第七步一样,修改几个文件的权限。
7关闭防火墙重启一下,在namenode上输入运行一下,jps看一下进程中是否有namenode,在新datanode上输入jps看一下datanode是否启动。最后和上面详细步骤一样,查看一下网页,看一下节点运作情况。如果live nodes数目与所有datanode数目一致,表示安装好了,你可以休息了。


发布评论