概述
记录一下快速搭建一个高可用的hadoop集群,机器5台(cdh01~cdh05)
分配 cdh01、cdh02为名称节点,cdh01~cdh05为数据节点
部署规划
主机名 | 系统 | ip | 进程 |
cdh01 | Linux | 192.168.8.21 | NameNode、ZKFC、Resourcemanager、DataNode、NodeManager、Journalnode |
cdh02 | Linux | 192.168.8.22 | NameNode、ZKFC、Resourcemanager、DataNode、NodeManager、Journalnode |
cdh03 | Linux | 192.168.8.23 | DataNode、NodeManager、JournalNode |
cdh04 | Linux | 192.168.8.24 | DataNode、NodeManager、JournalNode |
cdh05 | Linux | 192.168.8.25 | DataNode、NodeManager、JournalNode |
前提条件
五台机器已做免密登录、jdk环境已安装。
安装
1、下载hadoop
版本:hadoop-2.7.5.tar.gz
2、解压
tar -xzvf hadoop-2.7.5.tar.gz
3、移动位置或者创建软连接
ln -s /bigdata/source/hadoop-2.7.5 /bigdata/hadoop
4、配置环境变量
vim ~/.bash_profile
#hadoop
export HADOOP_HOME=/bigdata/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
5、使配置文件生效
source ~/.bash_profile
6、配置HA高可用
编辑hadoop安装目录下的etc/hadoop
[core-site.xml]
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/home/bigdata/hadoop
ha.zookeeper.quorum
cdh01:2181,cdh02:2181,cdh03:2181,cdh04:2181,cdh05:2181
[hdfs-site.xml]
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
cdh01:8020
dfs.namenode.rpc-address.mycluster.nn2
cdh02:8020
dfs.namenode.http-address.mycluster.nn1
cdh01:50070
dfs.namenode.http-address.mycluster.nn2
cdh02:50070
dfs.namenode.shared.edits.dir
qjournal://cdh01:8485;cdh02:8485;cdh03:8485;cdh04:8485;cdh05:8485/mycluster
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/home/.ssh/id_rsa
dfs.journalnode.edits.dir
/home/bigdata/hadoop/journal
dfs.ha.automatic-failover.enabled
true
dfs.replication
3
[mapred-site.xml]
mapreduce.framework.name
yarn
[yarn-site.xml]
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
cluster1
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
cdh01
yarn.resourcemanager.hostname.rm2
cdh02
yarn.resourcemanager.webapp.address.rm1
cdh01:8088
yarn.resourcemanager.webapp.address.rm2
cdh02:8088
yarn.resourcemanager.zk-address
cdh01:2181,cdh02:2181,cdh03:2181,cdh04:2181,cdh05:2181
[slaves]
配置从节点
cdh01
cdh02
cdh03
cdh04
cdh05
[hadoop-env.sh]
配置你的java路径
...
export JAVA_HOME=/es5.2.0/bigdata/jdk1.8.0_131/
...
7、分发hadoop到其他4台服务器
xsync hadoop
8、启动集群
a、先启动zookeeper集群
zkServer.sh start
b、启动JournalNode
当所有配置都完成以后,我们需要先启动JournalNode服务。在配置了JournalNode服务的每台服务器上执行
hadoop-daemon.sh start journalnode
c、格式化NameNode
启动了JournalNode后(可以通过jps命令查看),我们需要格式化NameNode。在nn1(cdh01)上执行:
hdfs namenode -format
在另一台NN服务器nn2(cdh02)上执行
hdfs namenode -bootstrapStandby
hdfs namenode -initializeSharedEdits
d、在其中任意一台上面执行namenode上初始化zkfc
hdfs zkfc -formatZK
e、在其中任意一台nn1机器启动hdfs集群
start-dfs.sh
f、在cdh01\cdh02启动yarn进程
yarn-daemon.sh start resourcemanager
9、查看ui
http://cdh01:50070
10、测试
两台NN的状态应该为一台Active,另一台一台Standby。kill掉Active服务器上的NN进程,查看Standby服务器上的NN进程的状态是否变为Active,如果是,则部署成功。如果没有成功,请检查配置是否正确。