Hadoop集群环境搭建.docx
《Hadoop集群环境搭建.docx》由会员分享,可在线阅读,更多相关《Hadoop集群环境搭建.docx(10页珍藏版)》请在冰豆网上搜索。
Hadoop集群环境搭建
Hadoop集群环境搭建
通常,集群里的一台机器被指定为NameNode,另一台不同的机器被指定为JobTracker。
这些机器是masters。
余下的机器即作为DataNode也作为TaskTracker。
这些机器是slaves\官方地址:
(http:
//hadoop.apache.org/common/docs/r0.19.2/cn/cluster_setup.html)
1先决条件确保在你集群中的每个节点上都安装了所有必需软件:
sun-JDK,ssh,Hadoop
JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本。
ssh必须安装并且保证sshd一直运行,以便用Hadoop脚本管理远端Hadoop守护进程。
2实验环境搭建2.1准备工作操作系统:
Ubuntu
部署:
Vmvare
在vmvare安装好一台Ubuntu虚拟机后,可以导出或者克隆出另外两台虚拟机。
说明:
保证虚拟机的ip和主机的ip在同一个ip段,这样几个虚拟机和主机之间可以相互通信。
为了保证虚拟机的ip和主机的ip在同一个ip段,虚拟机连接设置为桥连。
准备机器:
一台master,若干台slave,配置每台机器的/etc/hosts保证各台机器之间通过机器名可以互访,例如:
10.64.56.76node1(master)
10.64.56.77node2(slave1)
10.64.56.78node3(slave2)
主机信息:
机器名IP地址作用
Node110.64.56.76NameNode、JobTracker
Node210.64.56.77DataNode、TaskTracker
Node310.64.56.78DataNode、TaskTracker
为保证环境一致先安装好JDK和ssh:
2.2安装JDK
#安装JDK
$sudoapt-getinstallsun-java6-jdk1.2.3
这个安装,java执行文件自动添加到/usr/bin/目录。
验证shell命令:
java-version看是否与你的版本号一致。
2.3下载、创建用户$useraddhadoop
$cd/home/hadoop
在所有的机器上都建立相同的目录,也可以就建立相同的用户,最好是以该用户的home路径来做hadoop的安装路径。
例如在所有的机器上的安装路径都是:
/home/hadoop/hadoop-0.20.203,这个不需要mkdir,在/home/hadoop/下解压hadoop包的时候,会自动生成)
(当然可以安装/usr/local/目录下,例如/usr/local/hadoop-0.20.203/
chown-Rhadoop/usr/local/hadoop-0.20.203/
chgrp-Rhadoop/usr/local/hadoop-0.20.203/
)
(最好不要使用root安装,因为不推荐各个机器之间使用root访问)
2.4安装ssh和配置1)安装:
sudoapt-getinstallssh
这个安装完后,可以直接使用ssh命令了。
执行$netstat-nat查看22端口是否开启了。
测试:
sshlocalhost。
输入当前用户的密码,回车就ok了。
说明安装成功,同时ssh登录需要密码。
(这种默认安装方式完后,默认配置文件是在/etc/ssh/目录下。
sshd配置文件是:
/etc/ssh/sshd_config):
注意:
在所有机子都需要安装ssh。
2)配置:
在Hadoop启动以后,Namenode是通过SSH(SecureShell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。
以本文中的三台机器为例,现在node1是主节点,他须要连接node2和node3。
须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。
(说明:
hadoop@hadoop~]$ssh-keygen-trsa
这个命令将为hadoop上的用户hadoop生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。
生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/dbrg/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接复制过去就行.)
3)首先设置namenode的ssh为无需密码的、自动登录。
切换到hadoop用户(保证用户hadoop可以无需密码登录,因为我们后面安装的hadoop属主是hadoop用户。
)
$suhadoop
cd/home/hadoop
$ssh-keygen-trsa
然后一直按回车
完成后,在home跟目录下会产生隐藏文件夹.ssh
$cd.ssh
之后ls查看文件
cpid_rsa.pubauthorized_keys
测试:
$sshlocalhost
或者:
$sshnode1
第一次ssh会有提示信息:
Theauthenticityofhost‘node1(10.64.56.76)’can’tbeestablished.
RSAkeyfingerprintis03:
e0:
30:
cb:
6e:
13:
a8:
70:
c9:
7e:
cf:
ff:
33:
2a:
67:
30.
Areyousureyouwanttocontinueconnecting(yes/no)?
输入yes来继续。
这会把该服务器添加到你的已知主机的列表中
发现链接成功,并且无需密码。
4)复制authorized_keys到node2和node3上
为了保证node1可以无需密码自动登录到node2和node3,先在node2和node3上执行
$suhadoop
cd/home/hadoop
$ssh-keygen-trsa
一路按回车.
然后回到node1,复制authorized_keys到node2和node3
[hadoop@hadoop.ssh]$scpauthorized_keysnode2:
/home/hadoop/.ssh/
[hadoop@hadoop.ssh]$scpauthorized_keysnode3:
/home/hadoop/.ssh/
这里会提示输入密码,输入hadoop账号密码就可以了。
改动你的authorized_keys文件的许可权限[hadoop@hadoop.ssh]$chmod644authorized_keys
测试:
sshnode2或者sshnode3(第一次需要输入yes)。
如果不须要输入密码则配置成功,如果还须要请检查上面的配置能不能正确。
2.5安装Hadoop#切换为hadoop用户
suhadoop
wget
下载安装包后,直接解压安装即可:
$tar-zxvfhadoop-0.20.203.0rc1.tar.gz
1)安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。
并且安装路径要一致,如果我们用HADOOP_HOME指代安装的根路径,通常,集群里的所有机器的
HADOOP_HOME路径相同。
2)如果集群内机器的环境完全一样,可以在一台机器上配置好,然后把配置好的软件即hadoop-0.20.203整个文件夹拷贝到其他机器的相同位置即可。
3)可以将Master上的Hadoop通过scp拷贝到每一个Slave相同的目录下,同时根据每一个Slave的Java_HOME的不同修改其hadoop-env.sh。
4)为了方便,使用hadoop命令或者start-all.sh等命令,修改Master上/etc/profile新增以下内容:
exportHADOOP_HOME=/home/hadoop/hadoop-0.20.203
exportPATH=$PATH:
$HADOOP_HOME/bin
修改完毕后,执行source/etc/profile来使其生效。
6)配置conf/hadoop-env.sh文件
配置conf/hadoop-env.sh文件
#添加exportJAVA_HOME=/usr/lib/jvm/java-6-sun/
这里修改为你的jdk的安装位置。
测试hadoop安装:
Bin/hadoopjarhadoop-0.20.2-examples.jarwordcountconf//tmp/out
3.集群配置(所有节点相同)3.1配置文件:
conf/core-site.xml
fs.default.name
hdfs:
//node1:
49000
hadoop.tmp.dir
/home/hadoop/hadoop_home/var
1)fs.default.name是NameNode的URI。
hdfs:
//主机名:
端口/
2)hadoop.tmp.dir:
Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。
不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
3.2配置文件:
conf/mapred-site.xml
mapred.job.tracker
node1:
49001
mapred.local.dir
/home/hadoop/hadoop_home/var
1)mapred.job.tracker是JobTracker的主机(或者IP)和端口。
主机:
端口。
3.3配置文件:
conf/hdfs-site.xml
dfs.name.dir
/home/hadoop/name1,/home/hadoop/name2#hadoop的name目录路径
dfs.data.dir
/home/hadoop/data1,/home/hadoop/data2
dfs.replication
2
1)dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。
当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
2)dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。
当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
3)dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:
此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建