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

/usr/local/hadoop/hadooptmp

hdfs://192.168.1.115:9000 (改成namenode的IP)

加入红色部分。

(3)修改

[root@namenode1 conf]# vi

ation

3

加入红色部分

(4)修改

[root@namenode1 conf]# vi

r

192.168.1.115:9001 (改成namenode的IP)

加入红色部分

(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数目一致,表示安装好了,你可以休息了。