Hadoop HA(高可用)搭建

ZooKeeper配置 

解压安装

添加ZK环境变量 

分发文件

 启动

安装配置 Hadoop 

解压安装

修改hadoop-env.sh文件 

修改Hadoop配置文件core-site.xml 

HDFS 配置文件hdfs-site.xml 

  MapReduce 配置文件 mapred-site.xml

YARN 配置文件yarn-site.xml 

配置worekers

分发配置好的Hadoop 

进行初始化 

查看每个节点的进程 

ZooKeeper配置 

解压安装

解压

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt

改名 

mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7

在根目录下创建两个文件夹 

mkdir Zlogs
mkdir Zdata

配置zoo.cfg文件,在解压后的ZooKeeper目录中找到 conf 目录,复制一份 zoo_sample.cfg 并重命名为 zoo.cfg,修改 zoo.cfg 配置文件中的以下配置项:

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg 

修改为

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-3.5.7/Zdata
dataLogDir=/opt/zookeeper-3.5.7/Zlogs
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

添加ZK环境变量 

vim /etc/profile

 添加如下:

export ZK_HOME=/opt/zookeeper-3.5.7
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin

 保存配置环境

source /etc/profile

分发文件

scp -r /opt/zookeeper-3.5.7/ slave1:/opt/
scp -r /opt/zookeeper-3.5.7/ slave2:/opt/

配置 myid:填写上面 server.x 中对应的数字 x,如:1、2、3。每个机子都不一样,

        只需要填写一个数字即可。但是这个数字非常重要,必须保证它的唯一性和正确性,否则可能导致集群运行出现问题。 

在分发的每个zookeeper-3.5.7/data的目录下面创建myid文件 

vim myid

文件内填写规则

master中填1

slave1填2

slave2填3

 启动

zkServer.sh start

注意:集群的每台都需要启动这个命令 

        所有节点上启动ZooKeeper服务,以便加入到集群中。

        这段日志输出表示ZooKeeper服务已经成功启动,并且JMX功能也已经默认开启。 

确认集群中所有节点的信息,以确保它们之间已经建立了有效的连接。可以使用如下命令查看: 

zkServer.sh status

        显示Mode: follower就代表已经正常启动了 

安装配置 Hadoop 

hadoop官方下载:Apache Hadoop 

解压安装

        解压安装包到opt目录下

tar -zxvf hadoop-3.1.3.tar.gz -C /opt

       添加hadoop环境变量 

vim /etc/profile

export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

        注意:另外两台主机也要进行相应的环境变量设置

 保存配置环境

source /etc/profile

 测试安装成功

hadoop version

修改hadoop-env.sh文件 

cd $HADOOP_HOME/etc/hadoop
vim hadoop-env.sh

写入如下: 

export JAVA_HOME=/opt/jdk1.8
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

修改Hadoop配置文件core-site.xml 

vim core-site.xml
<configuration>
<!--用来指定hdfs的老大-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!--用来指定hadoop运行时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.1.3/tmp</value>
</property>

<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,salva2:2181</value>

</property>
<property>
<name>ha.zookeeper.session-timeout.ms</name>
<value>30000</value>
</property>

<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
</configuration>

HDFS 配置文件hdfs-site.xml 

vim hdfs-site.xml
<configuration>
<property>
	<name>dfs.qjournal.start-segment.timeout.mx</name>
	<value>60000</value>
</property>
<property>
	<name>dfs.nameservices</name>
	<value>mycluster</value>
</property>
<property>
	<name>dfs.ha.namenodes.mycluster</name>
	<value>master,slave1</value>
</property>
<property>
	<name>dfs.namenode.rpc-address.mycluster.master</name>
	<value>master:8020</value>
</property>
<property>
	<name>dfs.namenode.rpc-address.mycluster.slave1</name>
	<value>slave1:8020</value>
</property>
<property>
	<name>dfs.namenode.http-address.mycluster.master</name>
	<value>master:9870</value>
</property>
<property>
	<name>dfs.namenode.http-address.mycluster.slave1</name>
	<value>slave1:9870</value>
</property>
<property>
	<name>dfs.namenode.shared.edits.dir</name>
	<value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
	<name>dfs.ha.fencing.methods</name>
	<value>
		sshfence
		shell(/bin/true)
	</value>
</property>
<property>
	<name>dfs.ha.fencing.ssh.pricate-key-files</name>
	<value>/root/.ssh/id_rsa</value>
</property>
<property>
	<name>dfs.permissions.enabled</name>
	<value>false</value>
</property>
<property>
	<name>dfs.support.append</name>
	<value>true</value>
</property>
<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>
<property>
	<name>dfs.namenode.name.dir</name>
	<value>/opt/hadoop-3.1.3/tmp/namenode</value>
</property>
<property>
	<name>dfs.namenode.data.dir</name>
	<value>/opt/hadoop-3.1.3/tmp/datanode</value>
</property>
<property>
	<name>dfs.journalnode.edits.dir</name>
	<value>/opt/hadoop-3.1.3/tmp/jnode</value>
</property>
<property>
	<name>dfs.ha.automatic-failover.enabled</name>
	<value>true</value>
</property>
<property>
	<name>dfs.webhdfs.enabled</name>
	<value>true</value>
</property>
<property>
	<name>dfs.ha.fencing.ssh.connect-timout</name>
	<value>30000</value>
</property>
<property>
	<name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
	<value>60000</value>
</property>
</configuration>

  MapReduce 配置文件 mapred-site.xml

vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>

YARN 配置文件yarn-site.xml 

vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave1</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
</configuration>

配置worekers

vim workers
master
slave1
slave2

分发配置好的Hadoop 

scp -r $HADOOP_HOME root@slave1:/opt
scp -r $HADOOP_HOME root@slave2:/opt

每个节点需要先启动journalnode 

hadoop-daemon.sh start journalnode

进行初始化 

hdfs namenode -format

格式化zkfc 

hdfs zkfc -formatZK

 将已格式化的namenodetmp目录传给另一个namenode 

scp -r $HADOOP_HOME root@slave1:/opt

启动hadoop集群

start-all.sh

查看每个节点的进程 

master:

 slave1:

slave2: 

进入web查看:

输入以下命令可以任意切换standby和active的角色

 hdfs haadmin -failover slave1 master

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

open_test01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值