---恢复内容开始---

一、集群规划

主机名 ip NameNode DataNode  Yarn ZooKeeper JournalNode
node01 192.168.1.201
node02 192.168.1.202
node03 192.168.1.203

注:所有操作都是在root用户下操作,如需其他用户,请自行创建。注意文件权限问题。

二、环境搭建

1、安装JDK

1.1  下载jdk

这里使用的是jdk-8u144-linux-x64.tar.gz,下载地址:链接:https://pan.baidu.com/s/1TCsxtcSqfA4SSrLaWJa79Q 密码:sot0

将下载的jdk 上传到node01服务器的/opt目录下

[root@node01 usr]# cd /opt/
[root@node01 opt]# ll
total 727676
-rw-r--r--. 1 root root 149756462 Oct 23 12:24 apache-hive-2.1.1-bin.tar.gz
-rw-r--r--. 1 root root 266688029 Oct 23 12:24 hadoop-2.7.4.tar.gz
-rw-r--r--. 1 root root 104659474 Oct 23 12:24 hbase-1.2.6-bin.tar.gz
-rw-r--r--. 1 root root 185515842 Oct 23 12:26 jdk-8u144-linux-x64.tar.gz
-rw-r--r--. 1 root root   3465760 Oct 23 12:24 mysql-connector-java-5.1.44.tar.gz
-rw-r--r--  1 root root  35042811 Oct 23 13:37 zookeeper-3.4.10.tar.gz

然后切换到/usr 目录下

[root@node01 ~]# cd /usr/

新建app目录,用以安装所需软件

[root@node01 usr]# mkdir -p /usr/app

进入app目录

[root@node01 opt]# cd /usr/app/

解压jdk到当前路径下

[root@node01 app]# tar zxvf /opt/jdk-8u144-linux-x64.tar.gz 

建立jdk软连接

[root@node01 app]# ln -s jdk1.8.0_144/ java

配置环境变量

[root@node01 app]# vi /etc/profile

在打开的文件末尾添加如下代码后保存

export JAVA_HOME=/usr/app/java
export CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin

使配置生效

[root@node01 app]# source /etc/profile

查看Java版本,显示如下则jdk安装完成

[root@node01 app]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

根据以上流程,分别在node02、node03 节点上完成jdk 安装。

2、安装zookeeper

下载zookeeper

这里使用的是zookeeper-3.4.10.tar.gz,下载地址:链接:链接:https://pan.baidu.com/s/1hhLu-F4YAl0FtIb67_GzQw 密码:ntxo

将下载的zookeeper上传到node01服务器的/opt目录下

[root@node01 usr]# cd /opt/
[root@node01 opt]# ll
total 727676
-rw-r--r--. 1 root root 149756462 Oct 23 12:24 apache-hive-2.1.1-bin.tar.gz
-rw-r--r--. 1 root root 266688029 Oct 23 12:24 hadoop-2.7.4.tar.gz
-rw-r--r--. 1 root root 104659474 Oct 23 12:24 hbase-1.2.6-bin.tar.gz
-rw-r--r--. 1 root root 185515842 Oct 23 12:26 jdk-8u144-linux-x64.tar.gz
-rw-r--r--. 1 root root   3465760 Oct 23 12:24 mysql-connector-java-5.1.44.tar.gz -rw-r--r-- 1 root root 35042811 Oct 23 13:37 zookeeper-3.4.10.tar.gz

然后切换到/usr/app 目录下

[root@node01 ~]# cd /usr/app/

解压zookeeper到当前路径下

[root@node01 app]# tar zxvf /opt/zookeeper-3.4.10.tar.gz 

建立zookeeper软连接

[root@node01 app]# ln -s zookeeper-3.4.10/ zookeeper

配置环境变量

[root@node01 app]# vi /etc/profile

在打开的文件末尾添加如下代码后保存

export JAVA_HOME=/usr/app/java
export CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export ZOOKEEPER_HOME=/usr/app/zookeeperexport PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

使配置生效

[root@node01 app]# source /etc/profile

切换到conf目录,修改zookeepe配置文件

[root@node01 app]# cd /usr/app/zookeeper/conf/
[root@node01 conf]# cp zoo_sample.cfg zoo.cfg [root@node01 conf]# vi zoo.cfg 

按照如下内容修改zoo.cfg 然后保存

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/app/zookeeper/data
dataLogDir=/usr/app/zookeeper/datalog# the port at which the clients will connect
clientPort=21810
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1server.1=node01:28880:38880
server.2=node02:28880:38880
server.3=node03:28880:38880

在zookeeper目录下创建data和datalog两个目录

[root@node01 conf]# mkdir -p /usr/app/zookeeper/data
[root@node01 conf]# mkdir -p /usr/app/zookeeper/datalog

在data目录下创建myid文件并添加内容为1

[root@node01 conf]# cd /usr/app/zookeeper/data[root@node01 data]# echo 1 > myid

根据以上步骤在node02、node03节点安装好zookeeper

注:node02节点上的myid内容为2,node03节点上的myid内容为3。

三个节点的zookeeper配置完成后可以测试安装是否成功

在三个节点上分别执行如下命令启动zookeeper

[root@node01 data]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

分别查看三个节点的状态,可以看到一个leader和两个follower,说明zookeeper安装成功。

[root@node01 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/app/zookeeper/bin/../conf/zoo.cfg
Mode: follower

[root@node02 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/app/zookeeper/bin/../conf/zoo.cfg
Mode: leader

[root@node03 hadoop]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/app/zookeeper/bin/../conf/zoo.cfg
Mode: follower

分别停止三个节点上的zookeeper

[root@node01 data]# zkServer.sh stop

3、安装hadoop

下载hadoop

这里使用的是 hadoop-2.7.4.tar.gz 下载地址:链接:https://pan.baidu.com/s/1PSlTdRjcjH8z8eirdeDCrA 密码:sz3c

将下载的hadoop上传到node01服务器的/opt目录下

[root@node01 usr]# cd /opt/
[root@node01 opt]# ll
total 727676
-rw-r--r--. 1 root root 149756462 Oct 23 12:24 apache-hive-2.1.1-bin.tar.gz
-rw-r--r--. 1 root root 266688029 Oct 23 12:24 hadoop-2.7.4.tar.gz
-rw-r--r--. 1 root root 104659474 Oct 23 12:24 hbase-1.2.6-bin.tar.gz
-rw-r--r--. 1 root root 185515842 Oct 23 12:26 jdk-8u144-linux-x64.tar.gz
-rw-r--r--. 1 root root   3465760 Oct 23 12:24 mysql-connector-java-5.1.44.tar.gz
-rw-r--r--  1 root root  35042811 Oct 23 13:37 zookeeper-3.4.10.tar.gz

然后切换到/usr/app 目录下

[root@node01 ~]# cd /usr/app/

解压hadoop到当前路径下

[root@node01 app]# tar zxvf /opt/hadoop-2.7.4.tar.gz

建立hadoop软连接

[root@node01 app]# ln -s hadoop-2.7.4/ hadoop

配置环境变量

[root@node01 app]# vi /etc/profile

在打开的文件末尾添加如下代码后保存

export JAVA_HOME=/usr/app/java
export CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export ZOOKEEPER_HOME=/usr/app/zookeeper
export HADOOP_HOME=/usr/app/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使配置生效

[root@node01 app]# source /etc/profile

切换到hadoop目录,分别创建journal、hdfs/data、hdfs/name 路径

[root@node01 app]# cd /usr/app/hadoop
[root@node01 hadoop]# mkdir journal[root@node01 hadoop]# mkdir -p hdfs/name[root@node01 hadoop]# mkdir -p hdfs/data

切换到配置文件目录

[root@node01 hadoop]# cd /usr/app/hadoop/etc/hadoop/

将如下代码写入 core-site.xml

[root@node01 hadoop]# vi core-site.xml

<configuration>

<!-- 指定hdfs的nameservice为ns -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!--指定hadoop数据临时存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/app/hadoop/tmp</value>
</property>

<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>node01:21810,node02:21810,node03:21810</value>
</property>

</configuration>

将如下代码写入到 hdfs-site.xml

[root@node01 hadoop]# vi hdfs-site.xml

<configuration>  <!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->      <property>      <name>dfs.nameservices</name>      <value>ns</value>      </property>    <!-- ns下面有两个NameNode,分别是nn1,nn2 -->  <property>  <name>dfs.ha.namenodes.ns</name>  <value>nn1,nn2</value>  </property>  <!-- nn1的RPC通信地址 -->  <property>  <name>dfs.namenode.rpc-address.ns.nn1</name>  <value>node01:9000</value>  </property>  <!-- nn1的http通信地址 -->  <property>  <name>dfs.namenode.http-address.ns.nn1</name>  <value>node01:50070</value>  </property>  <!-- nn2的RPC通信地址 -->  <property>  <name>dfs.namenode.rpc-address.ns.nn2</name>  <value>node02:9000</value>  </property>  <!-- nn2的http通信地址 -->  <property>  <name>dfs.namenode.http-address.ns.nn2</name>  <value>node02:50070</value>  </property>  <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->  <property>  <name>dfs.namenode.shared.edits.dir</name>  <value>qjournal://node01:8485;node02:8485;node03:8485/ns</value>  </property>  <!-- 指定JournalNode在本地磁盘存放数据的位置 -->  <property>  <name>dfs.journalnode.edits.dir</name>  <value>/usr/app/hadoop/journal</value>  </property>  <!-- 开启NameNode故障时自动切换 -->  <property>  <name>dfs.ha.automatic-failover.enabled</name>  <value>true</value>  </property>  <!-- 配置失败自动切换实现方式 -->  <property>  <name>dfs.client.failover.proxy.provider.ns</name>  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  </property>  <!-- 配置隔离机制 -->  <property>  <name>dfs.ha.fencing.methods</name>  <value>sshfence</value>  </property>  <!-- 使用隔离机制时需要ssh免登陆 -->  <property>  <name>dfs.ha.fencing.ssh.private-key-files</name>  <value>/root/.ssh/id_rsa</value>  </property>  <property>      <name>dfs.namenode.name.dir</name>      <value>file:///usr/app/hadoop/hdfs/name</value>      </property>      <property>      <name>dfs.datanode.data.dir</name>      <value>file:///usr/app/hadoop/hdfs/data</value>      </property>      <property>      <name>dfs.replication</name>      <value>2</value>      </property>     <!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 -->                                                                      <property>      <name>dfs.webhdfs.enabled</name>      <value>true</value>      </property>
</configuration>  

将如下代码写入到  mapred-site.xml

[root@node01 hadoop]# cp mapred-site.xml.template mapred-site.xml[root@node01 hadoop]# vi mapred-site.xml

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

将如下代码写入到 yarn-site.xml

[root@node01 hadoop]# vi yarn-site.xml

<configuration>
  <!-- 指定nodemanager启动时加载server的方式为shuffle server -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <!-- 指定resourcemanager地址 -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node03</value>
  </property>
</configuration>

修改 hadoop-env.sh

找到文件的export JAVA_HOME=${JAVA_HOME} 一行,将其修改为 export JAVA_HOME=/usr/app/java

修改 slaves 文件

node01
node02
node03

按照如上步骤将node02、node03节点的hadoop配置完成

至此,Hadoop HA 集群环境搭建完成,以下开始测试集群

4、集群启动

分别在node01、node02、node03 三个节点执行以下命令启动zookeeper

[root@node01 hadoop]# zkServer.sh start

验证zookeeper集群状态

[root@node01 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/app/zookeeper/bin/../conf/zoo.cfg
Mode: follower

[root@node02 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/app/zookeeper/bin/../conf/zoo.cfg
Mode: leader

[root@node03 hadoop]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/app/zookeeper/bin/../conf/zoo.cfg
Mode: follower启动 

在node01上启动journalnode集群

[root@node01 hadoop]# hadoop-daemons.sh start journalnode

执行jps命令,可以查看到JournalNode的java进程pid

在node01上格式化zkfc

[root@node01 hadoop]# hdfs zkfc -formatZK

在node01上格式化hdfs

[root@node01 hadoop]# hadoop namenode -format

在node01上启动namenode

[root@node01 hadoop]# hadoop-daemon.sh start namenode

在node02上启动数据同步和standby的namenode

[root@node01 hadoop]# hdfs namenode -bootstrapStandby
[root@node01 hadoop]# hadoop-daemon.sh start namenode

在node01 上启动datanode

[root@node01 hadoop]# hadoop-daemons.sh start datanode 

在node03上启动yarn

[root@node03 hadoop]# start-yarn.sh

在node01上启动zkfc

[root@node01 hadoop]# hadoop-daemons.sh start zkfc 

全部启动后分别在node01、node02、node03上执行jps 可以看到下面这些进程

[root@node01 hadoop]# jps
7073 QuorumPeerMain
2406 DFSZKFailoverController
2150 DataNode
2248 NodeManager
2536 NameNode
1849 JournalNode
7882 Jps

[root@node02 data]# jps
1654 QuorumPeerMain
3430 Jps
1895 DataNode
1993 NodeManager
1707 JournalNode
1806 NameNode
2126 DFSZKFailoverController

[root@node03 hadoop]# jps
1604 QuorumPeerMain
2518 Jps
1961 NodeManager
1756 DataNode
1869 ResourceManager
1679 JournalNode

4、测试HA高可用性

http://192.168.1.202:50070/dfshealth.html#tab-overview

http://192.168.1.201:50070/dfshealth.html#tab-overview

在node02(active)节点关闭namenode

[root@node02 hadoop]# hadoop-daemon.sh stop namenode

 

在node02(active)节点开启namenode

[root@node02 hadoop]# hadoop-daemon.sh start namenode

  

---恢复内容结束---

转载于:https://www.cnblogs.com/YellowstonePark/p/7750213.html

大数据系列(hadoop) Hadoop+Zookeeper 3节点高可用集群搭建相关推荐

  1. 第七章 :Hadoop+Zookeeper 3节点高可用集群搭建和原理解释

    一,原理 先说一下Zookeeper在Hadoop集群的作用,以前我们学习Hadoop伪分布式的时候没有用到Zookeeper是因为伪分布式只有一个NameNode,没有Active和Standby状 ...

  2. 2021年大数据Flink(五):Standalone-HA高可用集群模式

    目录 Standalone-HA高可用集群模式 原理 操作 1.集群规划 2.启动ZooKeeper 3.启动HDFS 4.停止Flink集群 5.修改flink-conf.yaml 6.修改mast ...

  3. 大数据Flink(五):Standalone-HA高可用集群模式

    文章目录 Standalone-HA高可用集群模式 原理 操作 1.集群规划 2.启动ZooKeeper

  4. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    一.服务器环境 主机名 IP 用户名 密码 安装目录 master 192.168.142.124 root xxx /usr/hadoop-2.6.5/ slave1 192.168.142.125 ...

  5. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  6. Hadoop HA 高可用集群搭建

    Hadoop HA 高可用集群搭建 一.首先配置集群信息 1 vi /etc/hosts 二.安装zookeeper 1.解压至/usr/hadoop/下 1 tar -zxvf zookeeper- ...

  7. k8s1.18多master节点高可用集群安装-超详细中文官方文档

    kubernetes安装系列文章 kubernetes1.17.3安装-超详细的安装步骤 安装kubernetes1.17.3多master节点的高可用集群 k8s1.18单master节点高可用集群 ...

  8. Centos7.6+Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    本文转自https://mshk.top/2019/03/centos-hadoop-zookeeper-hbase-hive-spark-high-availability/,因为原链接打不开,故在 ...

  9. Hadoop(二): YARN(资源管理器 RM)、HBase高可用集群搭建

    目录 一.Hadoop的高可用原理概述 1.1 原理概述 1.2 实验环境要求 二.高可用集群的搭建 2.1 搭建Zookeeper 2.2 搭建HA的高可用 2.3 YARN(资源管理器 RM)高可 ...

最新文章

  1. ios集成firebase_如何将Firebase与您的应用程序集成
  2. 全新的基于VVC思想的页面验证js框架vtor
  3. 一篇文章理解深度神经网络5个常用激活函数
  4. 路由器01---k2刷Pandora
  5. pt939g联通_尝试修改友华PT939G的省份设置,成功!
  6. 仍然不安全:变成了Java 9功能的Java 6中的主要错误
  7. 布谷鸟沙盒分析静态文件_“案例沙盒方法”喜提国际商学院协会(AACSB)2019年启发式创新奖...
  8. c 的word转为html5,word与html互转(1) -- word转html
  9. java ejb项目_Maven创建EJB项目结构
  10. Shell awk 求标准差
  11. python模拟抛硬币_认识概率,用python模拟掷硬币
  12. 关于一些初级ACM竞赛题目的分析和题解(九)
  13. input中加入搜索图标
  14. Ubuntu系统英文大小写CapsLock切换混乱解决方法!
  15. 实例:泰坦尼克号幸存者的预测
  16. 2018年315晚会黑名单之夜,谁能逃过此劫?
  17. 11-用杂志拼接信件(蓝桥杯)
  18. Java、出差报销金额的计算
  19. 【深度学习】关于EMA:指数移动平均
  20. 计算机网络实验三(基于packet tracer)

热门文章

  1. 网站建设如何做好页面布局合理
  2. [点滴记录]Unable to locate package错误 & gedit中文乱码
  3. Chrome渲染分析之Rendering工具
  4. 醉汉漫步 Drunkard's walk
  5. 知识点,声学传感器工作原理是这样
  6. Tornado-02-Tornado、路由进阶、视图进阶(视图中内置的钩子方法、视图方法调用顺序、冲刷缓存、用户认证)、模板语法(基本语法、内置标签或函数)
  7. python中list的filter_filter
  8. EasyUI Datagrid 鼠标悬停显示单元格内容 复制代码
  9. 常在池边游,却不曾到池子里一探究竟?浅谈Java线程池
  10. 到底什么是新媒体、什么是互动、什么是互动营销?