Hadoop集群完全分布式模式环境部署.docx
- 文档编号:18048827
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:15
- 大小:201.42KB
Hadoop集群完全分布式模式环境部署.docx
《Hadoop集群完全分布式模式环境部署.docx》由会员分享,可在线阅读,更多相关《Hadoop集群完全分布式模式环境部署.docx(15页珍藏版)》请在冰点文库上搜索。
Hadoop集群完全分布式模式环境部署
Hadoop集群完全分布式模式环境部署
Hadoop简介
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。
以Hadoop分布式文件系统(HDFS,HadoopDistributedFilesystem)和MapReduce(GoogleMapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
对于Hadoop的集群来讲,可以分成两大类角色:
Master和Salve。
一个HDFS集群是由一个NameNode和若干个DataNode组成的。
其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。
MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。
主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。
主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。
当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。
HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。
HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。
先决条件
1)确保在你集群中的每个节点上都安装了所有必需软件:
sun-JDKsshHadoop。
2)JavaTM1.5.x,必须安装,建议选择Sun公司发行的Java版本。
3)ssh必须安装并且保证sshd一直运行,以便用Hadoop脚本管理远端Hadoop守护进程。
实验环境
操作平台:
vmware
操作系统:
CentOS5.9
软件版本:
hadoop-1.2.1,jdk-6u45
集群架构:
包括4个节点:
1个Master,3个Salve,节点之间局域网连接,可以相互ping通。
节点IP地址分布如下:
主机名
IP
系统版本
Hadoop node
hadoop进程名
Master
192.168.137.100
CetOS 5.9
master
namenode,jobtracker
Slave1
192.168.137.101
CetOS 5.9
slave
datanode,tasktracker
Slave2
192.168.137.102
CetOS 5.9
slave
datanode,tasktracker
Slave3
192.168.137.103
CetOS 5.9
slave
datanode,tasktracker
四个节点上均是CentOS5.9系统,并且有一个相同的用户hadoop。
Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。
安装步骤
下载:
jdk-6u45-linux-x64.bin,hadoop-1.2.1.tar.gz(主机名和网络配置略)
说明:
在生产的hadoop集群环境中,由于服务器可能会有许多台,通过配置DNS映射机器名,相比配置/etc/host方法,可以避免在每个节点都配置各自的host文件,而且在新增节点时也不需要修改每个节点的/etc/host的主机名-IP映射文件。
减少了配置步骤和时间,便于管理。
1、JDK安装
#/bin/bashjdk-6u45-linux-x64.bin
#mvjdk1.6.0_45/usr/local/
添加java环境变量:
#vim/etc/profile
#最后添加
#setjavaenvironment
export JAVA_HOME=/usr/local/jdk1.6.0_45/
export JRE_HOME=/usr/local/jdk1.6.0_45/jre
export CLASSPATH=.:
$CLASSPATH:
$JAVA_HOME/lib:
$JRE_HOME/lib
export PATH=$PATH:
$JAVA_HOME/bin:
$JRE_HOME/bin
生效java变量:
#source/etc/profile
#java-version
javaversion "1.6.0_45"
Java(TM)SERuntimeEnvironment(build1.6.0_45-b06)
JavaHotSpot(TM)64-BitServerVM(build20.45-b01,mixedmode)
在所有的机器上都建立相同的目录,也可以就建立相同的用户,最好是以该用户的home路径来做hadoop的安装路径。
安装路径都是:
/home/hadoop/hadoop-1.2.1
#useraddhadoop
#passwdhadoop
2、SSH配置
在Hadoop启动以后,Namenode是通过SSH(SecureShell)来启动和停止各个datanode上的各种守护进程的,这就须要在节点之间执行指令的时候是不须要输入密码的形式,故我们须要配置SSH运用无密码公钥认证的形式。
以本文中的四台机器为例,现在Master是主节点,他须要连接Slave1、Slave2和Slave3。
须要确定每台机器上都安装了ssh,并且datanode机器上sshd服务已经启动。
切换到hadoop用户(保证用户hadoop可以无需密码登录,因为我们后面安装的hadoop属主是hadoop用户。
)
1)在每台主机生成密钥对
#su-hadoop
#ssh-keygen-trsa#cat~/.ssh/id_rsa.pub
这个命令生成一个密钥对:
id_rsa(私钥文件)和id_rsa.pub(公钥文件)。
默认被保存在~/.ssh/目录下。
2)将Master公钥添加到远程主机Slave1的authorized_keys文件中
在/home/hadoop/.ssh/下创建authorized_keys
#vimauthorized_keys
将刚才复制的公钥复制进去
权限设置为600.(这点很重要,网没有设置600权限会导致登陆失败)
测试登陆:
$ ssh Slave1
Theauthenticityofhost'slave2(192.168.137.101)'can'tbeestablished.
RSAkeyfingerprintisd5:
18:
cb:
5f:
92:
66:
74:
c7:
30:
30:
bb:
36:
bf:
4c:
ed:
e9.
Areyousureyouwantto continue connecting(yes/no)?
yes
Warning:
Permanentlyadded'slave2,192.168.137.101'(RSA)tothelistofknownhosts.
Lastlogin:
FriAug3021:
31:
362013fromslave1
[hadoop@Slave1~]$
同样的方法,将Master的公钥复制到其他节点。
3、安装Hadoop
1)切换为hadoop用户,下载安装包后,直接解压安装即可:
#su-hadoop
#wget http:
//apache.stu.edu.tw/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
#tar-zxvfhadoop-1.2.1.tar.gz
我的安装目录为:
/home/hadoop/hadoop-1.2.1
为了方便,使用hadoop命令或者start-all.sh等命令,修改Master上/etc/profile新增以下内容:
export HADOOP_HOME=/home/hadoop/hadoop-1.2.1
export PATH=$PATH:
$HADOOP_HOME/bin
修改完毕后,执行source/etc/profile来使其生效。
2)配置conf/hadoop-env.sh文件
配置conf/hadoop-env.sh文件,添加:
export JAVA_HOME=/usr/local/jdk1.6.0_45/
这里修改为你的jdk的安装位置。
测试hadoop安装:
/home/hadoop/hadoop-1.2.1/bin/hadoopjarhadoop-0.20.2-examples.jarwordcountconf//tmp/out
4、集群配置(所有节点相同)
1)配置文件:
conf/core-site.xml
fs.default.name
Master:
9000
Thenameofthedefaultfilesystem.Eithertheliteralstring "local" or ahost:
port forDFS.
hadoop.tmp.dir
/home/hadoop/tmp
Abase for othertemporarydirectories.
fs.default.name是NameNode的URI。
hdfs:
//主机名:
端口/hadoop.tmp.dir:
Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。
不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
2)配置文件:
conf/mapred-site.xml
mapred.job.tracker
Master:
9001
Thehost and portthattheMapReducejobtrackerrunsat.If "local",thenjobsarerunin-processasasinglemap and reducetask.
mapred.local.dir
/home/hadoop/tmp
mapred.job.tracker是JobTracker的主机(或者IP)和端口。
主机:
端口。
3)配置文件:
conf/hdfs-site.xml
dfs.name.dir
/home/hadoop/name1,/home/hadoop/name2
DetermineswhereonthelocalfilesystemtheDFSnamenodeshouldstorethenametable.Ifthisisacomma-delimitedlistofdirectoriesthenthenametableisreplicatedinallofthedirectories,forredundancy.
dfs.data.dir
/home/hadoop/data1,/home/hadoop/data2
DetermineswhereonthelocalfilesystemanDFSdatanodeshouldstoreitsblocks.Ifthisisacomma-delimitedlistofdirectories,thendatawillbestoredinallnameddirectories,typicallyondifferentdevices.Directoriesthatdonotexistareignored.
dfs.replication
3
Defaultblockreplication.Theactualnumberofreplicationscanbespecifiedwhenthefileiscreated.Thedefaultisusedifreplicationisnotspecifiedincreatetime.
dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。
当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。
当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
注意:
此处的name1、name2、data1、data2目录不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。
4)配置masters和slaves主从结点
配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
$vimmasters:
输入:
Master
$vimslaves:
输入:
Slave1
Slave2
Slave3
配置结束,把配置好的hadoop文件夹拷贝到其他集群的机器中,并且保证上面的配置对于其他机器而言正确,例如:
如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh
$scp -r/home/hadoop/hadoop-1.2.1Slave1:
/home/hadoop/
$scp -r/home/hadoop/hadoop-1.2.1Slave2:
/home/hadoop/
$scp -r/home/hadoop/hadoop-1.2.1Slave3:
/home/hadoop/
5、hadoop启动
1)格式化一个新的分布式文件系统
$ cd /home/hadoop/hadoop-1.2.1$bin/hadoopnamenode-format
成功情况下系统输出:
Warning:
$HADOOP_HOMEisdeprecated.
13/09/1016:
39:
31INFOnamenode.NameNode:
STARTUP_MSG:
/************************************************************
STARTUP_MSG:
StartingNameNode
STARTUP_MSG:
host=Master/192.168.137.100
STARTUP_MSG:
args=[-format]
STARTUP_MSG:
version=1.2.1
STARTUP_MSG:
build= https:
//svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r1503152;compiledby'mattf'onMonJul2215:
23:
09PDT2013
STARTUP_MSG:
java=1.6.0_45
************************************************************/
13/09/1016:
39:
32INFOutil.GSet:
Computingcapacity for mapBlocksMap
13/09/1016:
39:
32INFOutil.GSet:
VM type =64-bit
13/09/1016:
39:
32INFOutil.GSet:
2.0%maxmemory=1013645312
13/09/1016:
39:
32INFOutil.GSet:
capacity=2^21=2097152entries
13/09/1016:
39:
32INFOutil.GSet:
recommended=2097152,actual=2097152
13/09/1016:
39:
32INFOnamenode.FSNamesystem:
fsOwner=hadoop
13/09/1016:
39:
32INFOnamenode.FSNamesystem:
supergroup=supergroup
13/09/1016:
39:
32INFOnamenode.FSNamesystem:
isPermissionEnabled=true
13/09/1016:
39:
32INFOnamenode.FSNamesystem:
dfs.block.invalidate.limit=100
13/09/1016:
39:
32INFOnamenode.FSNamesystem:
isAccessTokenEnabled=falseaccessKeyUpdateInterval=0min(s),accessTokenLifetime=0min(s)
13/09/1016:
39:
32INFOnamenode.FSEditLog:
dfs.namenode.edits.toleration.length=0
13/09/1016:
39:
32INFOnamenode.NameNode:
Caching file namesoccuring more than10 times
13/09/1016:
39:
33INFOcommon.Storage:
Image file /home/hadoop/name1/current/fsimageofsize112bytessaved in 0seconds.
13/09/1016:
39:
33INFOnamenode.FSEditLog:
closingeditlog:
position=4,editlog=/home/hadoop/name1/current/edits
13/09/1016:
39:
33INFOnamenode.FSEditLog:
closesuccess:
truncateto4,editlog=/home/hadoop/name1/current/edits
13/09/1016:
39:
33INFOcommon.Storage:
Storagedirectory/home/hadoop/name1hasbeensuccessfullyformatted.
13/09/1016:
39:
33INFOcommon.Storage:
Image file /home/hadoop/name2/current/fsimageofsize112bytessaved in 0seconds.
13/09/1016:
39:
33INFOnamenode.FSEditLog:
closingeditlog:
position=4,editlog=/home/hadoop/name2/current/edits
13/09/1016:
39:
33INFOnamenode.FSEditLog:
closesuccess:
truncateto4,editlog=/home/hadoop/name2/current/edits
13/09/1016:
39:
33INFOcommon.Storage:
Storagedirectory/home/hadoop/name2hasbeensuccessfullyformatted.
13/09/1016:
39:
33INFOnamenode.NameNode:
SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG:
ShuttingdownNameNodeatMaster/192.168.137.100
************************************************************/
查看输出保证分布式文件系统格式化成功执行完后可以到master机器上看到/home/hadoop//name1和/home/hadoop/name2两个目录。
在主节点master上面启动hadoop,主节点会启动所有从节点的hadoop。
2)启动所有节点
启动方式1:
$bin/start-all.sh
(同时启动HDFS和Map/Reduce)系统输出:
$bin/start-all.sh
Warning:
$HADOOP_HOMEisdeprecated.
startingnamenode,loggingto/home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-namenode-Master.out
Slave3:
startingdatanode,loggingto/home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-datanode-Slave3.out
Slave2:
startingdatanode,loggingto/home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-datanode-Slave2.out
Slave1:
startingdatanode,loggingto/home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-datanode-Slave1.out
Theauthenticityofhost'master(192.168.137.100)'can'tbeestablished.
RSAkeyfingerprintisd5:
18:
cb:
5f:
92:
66:
74:
c7:
30:
30:
bb:
36:
bf:
4c:
ed:
e9.
Areyousure
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 集群 完全 分布式 模式 环境 部署