HadoopHA搭建

主机设置

三台主机关闭防火墙

三台主机关闭SeLinux安全机制 

给每台主机修改主机名 

配置三台主机地址映射

设置免密登录

安装JDK

解压安装

配置jdk的环境变量 

 测试安装成功

分发JDK  

分发配置文件 

ZooKeeper配置 

解压安装

添加ZK环境变量 

分发文件

 启动

 安装配置 Hadoop

解压安装

修改hadoop-env.sh文件 

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

HDFS 配置文件hdfs-site.xml 

  MapReduce 配置文件 mapred-site.xml

YARN 配置文件yarn-site.xml 

配置worekers

分发配置好的Hadoop 

进行初始化 

主机设置

三台主机关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

三台主机关闭SeLinux安全机制 

vi /etc/sysconfig/selinux

 将enforcing改为disabled

给每台主机修改主机名 

        分别修改为master、slave1、slave2

hostnamectl set-hostname 主机名

配置三台主机地址映射

vi /etc/hosts

 设置免密登录

mkdir /root/.ssh
touch /root/.ssh/authorized_keys
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
cd /root/.ssh

        master免密登录master、slave1和slave2

生成秘钥对 

ssh-keygen -t rsa

        输入连敲3次回车

拷贝三台主机公钥 

ssh-copy-id root@主机名

免密登录

#登录
ssh 主机名
#登出
exit

安装JDK

解压安装

        解压安装包到opt目录下

tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/

        修改目录名 

mv jdk1.8.0_162 jdk1.8

 

配置jdk的环境变量 

vi /etc/profile
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin

保存配置 

source /etc/profile

 测试安装成功

java -version

分发JDK  

module]# scp -r /opt/module/jdk/ root@slave1:/opt/module/
module]# scp -r /opt/module/jdk/ root@slave2:/opt/module/

分发配置文件 

scp -r /etc/profile root@slave1:/etc
scp -r /etc/profile root@slave2:/etc
source /etc/profile

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
vi zoo.cfg 

添加:

dataDir=/opt/module/zookeeper/zdata
dataLogDir=/opt/module/zookeeper/zlogs

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

添加ZK环境变量 

vi /etc/profile

 添加如下:

export ZK_HOME=/opt/module/zookeeper
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin

 保存配置环境

source /etc/profile

分发文件

scp -r /opt/module/zookeeper/ root@slave1:/opt/module/
scp -r /opt/module/zookeeper/ root@slave2:/opt/module/
scp -r /etc/profile root@slave1:/etc
scp -r /etc/profile root@slave2:/etc
source /etc/profile

配置 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

解压安装

        解压

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

       添加hadoop环境变量

vi /etc/profile
export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

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

 保存配置环境

source /etc/profile

 测试安装成功

hadoop version

修改hadoop-env.sh文件 

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

写入如下: 

export JAVA_HOME=/opt/module/jdk
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_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 

vi core-site.xml
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/module/hadoop-3.1.3/data/tmp</value>
</property>
<property>  
<name>ha.zookeeper.quorum</name>        
 <value>master:2181,slave1:2181,slave2:2181</value>
</property>

HDFS 配置文件hdfs-site.xml 

vi hdfs-site.xml
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>master:9868</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>
    sshfence
    shell(/bin/true)
  </value>
</property>
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>master:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>slave1:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>master:9870</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</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.ha.automatic-failover.enabled</name>
  <value>true</value>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/module/hadoop-3.1.3/data/journal/</value>
</property>
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

  MapReduce 配置文件 mapred-site.xml

vi mapred-site.xml
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

YARN 配置文件yarn-site.xml 

vi yarn-site.xml
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yarn-cluster</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.resourcemanager.recovery.enabled</name>
    <value>true</value>
</property>
<property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
</property>

配置worekers

vi workers
master
slave1
slave2

分发配置好的Hadoop 

scp -r /opt/module/hadoop-3.1.3/ root@slave1:/opt/module/
scp -r /opt/module/hadoop-3.1.3/ root@slave2:/opt/module/
scp -r /etc/profile root@slave1:/etc
scp -r /etc/profile root@slave2:/etc
source /etc/profile

每个节点需要先启动journalnode 

hadoop-daemon.sh start journalnode

进行初始化 

hdfs namenode -format

格式化zkfc 

hdfs zkfc -formatZK

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

scp -r /opt/module/hadoop-3.1.3/ root@slave1:/opt/module/

启动hadoop集群

start-all.sh

查看nn2的进程状态

 hdfs haadmin -getServiceState nn2

查看rm2的进程状态

yarn rmadmin -getServiceState rm2

查看slave1的进程

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

 hdfs haadmin -failover slave1 master
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

open_test01

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

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

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

打赏作者

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

抵扣说明:

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

余额充值