海螺里的风

Hadoop 的安装




Hadoop 的安装
1、实现 linux 的 ssh 无密码验证配置.
2、修改 linux 的机器名,并配置 /etc/hosts
3、在 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]# ls
authorized_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_2
The 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)? 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 是不需要密码的,但是 datanodessh 到 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 localhost.localdomain localhost
要加入的 datanode,把 IP 地址和机器名加在后面。这一步是让主机记住 datanode 的名字。所以在修改 datanode 的 hosts 时,只需写入namenode 和你需要加入 hadoop 机器的 datanode 的 IP 地址及机器名就好。
[root@datanode1_4 etc]# vi hosts
127.0.0.1 localhost.localdomain 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 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=1000
if [ -z “$INPUTRC” -a ! -f “$HOME/.inputrc” ]; then
INPUTRC=/etc/inputrcfi
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/hadoop-core-1.0.1.jar
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,并修改 hadoop-env.sh,core-site.xml,hdfs-site.xml, mapred-site.xml,masters,slaves 文件的配置。在我们的 namenode1 上已经有 hadoop 1.0.1 解压包,可以直接下来用。
[root@namenode1 ~]# cd /usr/program/
[root@namenode1 program]# ls
hadoop-1.0.1 hadoop-1.0.1.tar.gz jdk-6u31-linux-x64.bin
hadoop-1.0.1.tar jdk1.6.0_31
在你要安装的电脑上解压 hadoop-1.0.1.tar.gz。
(1)修改 hadoop-env.sh 文件
[root@datanode1_3 ~]# cd /usr/program/hadoop-1.0.1
[root@datanode1_3 hadoop-1.0.1]# cd conf
[root@datanode1_3 conf]# vi hadoop-env.sh
修改红色部分
# The java implementation to use. Required.
export JAVA_HOME=/usr/program/jdk1.6.0_31 (我们新装的
JDK 的版本)
将 JDK 修改成你的版本。
(2)修改 core-site.xml
[root@namenode1 conf]# vi core-site.xml

hadoop.tmp.dir
/usr/local/hadoop/hadooptmp
fs.default.name
hdfs://192.168.1.115:9000 (改成 namenode 的 IP)

加入红色部分。
(3)修改 hdfs-site.xml
[root@namenode1 conf]# vi hdfs-site.xml

dfs.replication
3

加入红色部分
(4)修改 mapred-site.xml
[root@namenode1 conf]# vi mapred-site.xml

mapred.job.tracker
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/hadoop-core-1.0.1.jar
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
输入命令 start-all.sh (终止命令是 stop-all.sh)
(2)输入 jps 检验 hadoop 的启动情况。
会出现
[root@namenode1 ~]# jps
3916 NameNode
4087 SecondaryNameNode
4310 Jps
4185 JobTracker
表示 namenode 运行正常。
(3)在网页上检查是否加入了新的 datanode
http://192.168.1.115:50070/
会出现
可以看到节点的运行情况。
(4)检查 map reduce 的运行情况
http://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 上输入 start-all.sh 运行一下,jps 看一下进程中是否有 namenode,在新 datanode 上输入 jps 看一下 datanode 是否启动。最后和上面详细步骤一样,查看一下网页,看一下节点运作情况。如果 live nodes 数目与所有 datanode数目一致,表示安装好了,你可以休息了。

打赏
码字很辛苦,转载请注明来自海螺里的风《Hadoop 的安装》

评论