大数据环境搭建系列-hadoop高可用集群搭建

概述

记录一下快速搭建一个高可用的hadoop集群,机器5台(cdh01~cdh05)

分配 cdh01、cdh02为名称节点,cdh01~cdh05为数据节点

部署规划

主机名系统ip进程
cdh01Linux192.168.8.21NameNode、ZKFC、Resourcemanager、DataNode、NodeManager、Journalnode
cdh02Linux192.168.8.22NameNode、ZKFC、Resourcemanager、DataNode、NodeManager、Journalnode
cdh03Linux192.168.8.23DataNode、NodeManager、JournalNode
cdh04Linux192.168.8.24DataNode、NodeManager、JournalNode
cdh05Linux192.168.8.25DataNode、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]

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
         <!--配置hadoop集群服务器名称 -->
		<property>
			<name>fs.defaultFS</name>
			<value>hdfs://mycluster</value>
		</property>
		<!-- 指定hadoop运行时产生文件的存储目录 -->
		<property>
			<name>hadoop.tmp.dir</name>
			<value>/home/bigdata/hadoop</value>
		</property>
        <!--配置zookeeper集群,容灾 -->
		<property>
			<name>ha.zookeeper.quorum</name>
			<value>cdh01:2181,cdh02:2181,cdh03:2181,cdh04:2181,cdh05:2181</value>
		</property>
</configuration>

[hdfs-site.xml]

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!--集群服务名称-->
	<property>
		<name>dfs.nameservices</name>
		<value>mycluster</value>
	</property>
    <!--名称节点配置-->
	<property>
		<name>dfs.ha.namenodes.mycluster</name>
		<value>nn1,nn2</value>
	</property>
    <!--指定nn1机器的RPC服务完整监听地址-->
	<property>
		<name>dfs.namenode.rpc-address.mycluster.nn1</name>
		<value>cdh01:8020</value>
	</property>
    <!--指定nn2机器的RPC服务完整监听地址-->
	<property>
		<name>dfs.namenode.rpc-address.mycluster.nn2</name>
		<value>cdh02:8020</value>
	</property>
    <!--指定两个NameNode的http服务地址-->
	<property>
		<name>dfs.namenode.http-address.mycluster.nn1</name>
		<value>cdh01:50070</value>
	</property>
	<property>
		<name>dfs.namenode.http-address.mycluster.nn2</name>
		<value>cdh02:50070</value>
	</property>
    <!--指定journalnode-->
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://cdh01:8485;cdh02:8485;cdh03:8485;cdh04:8485;cdh05:8485/mycluster</value>
	</property>
	<property>
		<name>dfs.client.failover.proxy.provider.mycluster</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
    <!--在故障切换期间将用于隔离Active NameNode的脚本-->
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>
			sshfence
			shell(/bin/true)
		</value>
	</property>
	<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/home/.ssh/id_rsa</value>
	</property>
    <!--Journal Node文件存储地址-->
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/home/bigdata/hadoop/journal</value>
	</property>
     <!--是否开启自动failover机制-->
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>
     <!--HDFS文件系统每个block冗余备份数-->
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
</configuration>

[mapred-site.xml]

<?xml version="1.0"?>
<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

[yarn-site.xml]

<?xml version="1.0"?>
<configuration>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<property>
		<name>yarn.resourcemanager.ha.enabled</name>
		<value>true</value>
	</property>
	<property>
		<name>yarn.resourcemanager.cluster-id</name>
		<value>cluster1</value>
	</property>
	<property>
		<name>yarn.resourcemanager.ha.rm-ids</name>
		<value>rm1,rm2</value>
	</property>
	<property>
		<name>yarn.resourcemanager.hostname.rm1</name>
		<value>cdh01</value>
	</property>
	<property>
		<name>yarn.resourcemanager.hostname.rm2</name>
		<value>cdh02</value>
	</property>
	<property>
		<name>yarn.resourcemanager.webapp.address.rm1</name>
		<value>cdh01:8088</value>
	</property>
	<property>
		<name>yarn.resourcemanager.webapp.address.rm2</name>
		<value>cdh02:8088</value>
	</property>
	<property>
		<name>yarn.resourcemanager.zk-address</name>
		<value>cdh01:2181,cdh02:2181,cdh03:2181,cdh04:2181,cdh05:2181</value>
	</property>
			
</configuration>

[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,如果是,则部署成功。如果没有成功,请检查配置是否正确。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值