阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop(HA)集群+Zookeeper实现高可用集群

582次阅读
没有评论

共计 6893 个字符,预计需要花费 18 分钟才能阅读完成。

Hadoop 集群 +Zookeeper 实现高可用集群

设备的列表信息

节点类型 IP hosts(主机名)
NameNode 192.168.56.106 master
NameNode 192.168.56.107 standby-master
DataNode,JournalNode 192.168.56.108 slave1
DataNode,JournalNode 192.168.56.109 slave2
DataNode,JournalNode 192.168.56.110 slave3

一共配备的 5 台的设备,master 充当 (active) 角色,standby-master 充当 (standby) 角色,当 master 出现单点故障的时候,standby-master 就会顶上去充当 (active) 角色来维持整个集群的运作。

搭建 Ha 集群依赖环境

环境名称 版本号
CentOS 7
Jdk jdk-8u131
Hadoop 2.6.5
zookeeper 3.4.10

把 jdk、Hadoop、zookeeper 解压到 /use/local/ 目录下
编辑 /etc/profile 文件分别加入 jdk、Hadoop 的环境变量

vim /etc/profile

加入以下环境变量:

Java_HOME=/usr/local/jdk1.8.0_131/
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME
export PATH
export CLASSPATH

export PATH=$PATH:/usr/local/hadoop-2.6.5/bin:/usr/local/hadoop-2.6.5/sbin
profile 环境变量
 
Hadoop(HA)集群 +Zookeeper 实现高可用集群

编辑 hadoop-2.6.5/etc/hadoop/hadoop-env.sh 文件加入 Java 环境变量

Hadoop 的 Java 环境变量
Hadoop(HA)集群 +Zookeeper 实现高可用集群

这是我本次搭建用到的系统版本。

配备 zookeeper 集群

我会在 slave1、slave2、slave3 这三台机器上添 zookeeper 集群,把 JournalNode 节点交给 zookeeper 做调度。
解压后进入 /zookeeper-3.4.10/conf/ 目录
拷贝 cp zoo_sample.cfg 改名成 zoo.cfg
拷贝 cp zoo_sample.cfg zoo.cfg

在 zoo.cfg 文件添加以下配置:
dataDir=/home/zookeeper/data
dataLogDir=/home/zookeeper/logs
clientPort=2181
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888
配置 myid:

我这里有 3 台 zk 集群机器,每台机器都需要在 /home/zookeeper/data 目录下创建一个 myid 的文件、并且要写上自己对应的服务 id 号,比如我在 slave1 这台机器对应的 service.id 是 1 那么我在 myid 就会写上 1,slave2 的 service.id 是 2 就会写上 2.. 以此类推。

cd /home/zookeeper/data/
vim myid (写上服务的 id 号保存退出)

编写开机启动脚本(为了方便启动,不用每次手动启动 zk 集群,如果觉得麻烦可以忽略该步骤)

写了一个脚本设置 zookepper 开机启动
在 /etc/rc.d/init.d/ 目录下添加一个文件叫 zookeeper

命令:touch zookeeper

写入以下配置,JAVA_HOME 是你 jdk 的安装位置,ZOO_LOG_DIR 是 zookeeper 存放日志的位置,ZOOKEEPER_HOME 是 zookeeper 的安装位置。


#!/bin/bash
#chkconfig: 2345 10 90
#description: service zookeeper
export   JAVA_HOME=/usr/local/jdk1.8.0_131
export   ZOO_LOG_DIR=/home/zookeeper/datalog
ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.10
su root  ${ZOOKEEPER_HOME}/bin/zkServer.sh "$1"

为新建的 zookeeper 文件添加可执行权限

命令:chmod +x /etc/rc.d/init.d/zookeeper

添加 zookeeper 到开机启动

命令:chkconfig –add zookeeper

重启你的的 zk 集群
检查你的 zookeeper 集群确保没问题

命令:/usr/local/zookeeper-3.4.10/bin/zkServer.sh status

Hadoop(HA)集群 +Zookeeper 实现高可用集群

启动 zookeeper 集群

以上已经配置好 zookeeper 集群

设置 SSH 免密登陆

两台 NameNode 之间的协调需要 SSH 登陆来实现,所以两台 NameNode 必须要配置好
进入 master 这台机器的的根目录

输入命令:ssh-keygen -t rsa

出现提示可以不理会 直接按几次回车键就行了,出现以下界面说明生成私钥 id_rsa 和公钥 id_rsa.pub

 
生成的公钥

把生成的公钥 id 发送到 slave1、slave2、slave3、机器上

输入命令:ssh-copy-id slave1

slave1 会要求你输入 slave1 这台机器上的密码

 
要求你输入 slave1 密码

密码输入正确后你会看到以下界面,它说已经添加了密钥, 它叫你尝试登陆一下

Hadoop(HA)集群 +Zookeeper 实现高可用集群
叫你尝试登陆一下 slave1

添加其他的 slave2、slave3、slave4、standby-master、master 也是同样的操作。(一共 5 台机器,包括目前本机)

在 master 完成以上操作之后,再到 standby-master 重复以上的操作。(记得两个 NameNode 都要进行操作,重要的事再说一遍)。

配置 Hadoop 集群

配置 core-site.xml
在 core-site.xml 加入以下配置
master 是整个服务的标识、以及配备了 zookeeper 的配置信息

<configuration>

 <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master</value>
 </property>
 <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoopData/hdfs/temp</value>
 </property>

 <property>
      <name>io.file.buffer.size</name>
      <value>4096</value>
 </property>

<!--zookeeper 配置 -->
 <property>
      <name>ha.zookeeper.quorum</name>
      <value>slave1:2181,slave2:2181,slave3:2181</value>
 </property>

</configuration>

配置 hdfs-site.xml

<configuration>

<property>
   <name>dfs.namenode.name.dir</name>
   <value>/home/hadoopData/dfs/name</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>/home/hadoopData/dfs/data</value>
 </property>
 <property>
   <name>dfs.replication</name>
   <value>3</value>
 </property>
 <property>
   <name>dfs.webhdfs.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>dfs.permissions.superusergroup</name>
   <value>staff</value>
 </property>
 <property>
   <name>dfs.permissions.enabled</name>
   <value>false</value>
 </property>

<!-- NanmeNode 主备切换核心配置 -->
 <property>
        <name>dfs.nameservices</name>
        <value>master</value>
    </property>
    <property>
      <name>dfs.ha.namenodes.master</name>
      <value>nn1,nn2</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.master.nn1</name>
      <value>master:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.master.nn1</name>
        <value>master:50070</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.master.nn2</name>
        <value>standby-master:9000</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.master.nn2</name>
        <value>standby-master:50070</value>
    </property>



    <!-- 指定 NameNode 的元数据在 JournalNode 上的存放位置 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://slave1:8485;slave2:8485;slave3:8485/master</value>
    </property>
    <!-- 指定 JournalNode 在本地磁盘存放数据的位置 -->
    <property>
          <name>dfs.journalnode.edits.dir</name>
          <value>/home/hadoopData/journal</value>
    </property>


    <!-- 开启 NameNode 故障时自动切换 -->
    <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.master</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.replication</name>
      <value>2</value>
    </property>
    <property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
    </property>

</configuration>

注意事项:
我这里一共拆分了 3 部分来说明、以上的配置的文件分别有备注说明
在 dfs.nameservices 标签中的 value 和 core-site.xml 配置中的服务名要一致,因为我起名叫 master,所以我这里也叫 master。
dfs.namenode.shared.edits.dir 标签中存放的是你的 zk 集群的 journalnode,后面记得加上你的服务名。

把这 2 份配置文件分别拷贝到 5 台机器上。

安装 fuser

在你的两台 NameNode 都需要安装 fuser
进入你的 .ssh 目录(我的目录是 /root/.ssh)

安装命令: yum provides “*/fuser”
安装命令:yum -y install psmisc

Hadoop(HA)集群 +Zookeeper 实现高可用集群

安装 fuser

同样另外一台 standby-master 同样的操作。

启动 Hadoop 集群

在 master 上的操作

1. 启动 journalnode

命令:hadoop-daemon.sh start journalnode

因为我在 master 中配了 slaves 这个文件,把 slave1、slave2、slave3 都加了进来所以可以启动它们,查看 DataNode 节点上的 journalnode 是否启动成功

 
查看 journalnode 是否启动成功

出现 journalnode 说明启动成功了。

2. 格式化 zookepper

命令: hdfs zkfc -formatZK

操作完毕出现以下内容:

 
 
格式化 zookepper

3. 格式化 hdfs

命令: hadoop namenode -format

操作完毕出现以下内容:

 
格式化 hdfs

4. 启动 master 的 NameNode

命令: hadoop-daemon.sh start namenode

启动完毕后切换到 standby-master 操作

在 standby-master 操作

在 master 的 NameNode 启动之后,我们进行对 NameNode 的数据同步
在 standby-master 输入以下命令

命令:hdfs namenode -bootstrapStandby

出现以下信息:

 
NameNode 的数据同步

启动 Hadoop 集群

回到 master 启动集群输入以下命令

命令: start-dfs.sh

在游览器输入 http://192.168.56.106:50070/ 和 http://192.168.56.107:50070/
出现以下情况说明已经成功了。

 
启动 Hadoop 集群

测试 HA 集群可用性

以上是 master 是 active 状态,我现在把它关闭,看看 standby-master 是否会自动升级为 active 状态。
关闭 master:

 
关闭 master

观察 standby-master:

观察 standby-master

可以看到 standby-master 已经自动升级为 active 状态说明整个 HA 集群搭建完成了。

Hadoop 项目之基于 CentOS7 的 Cloudera 5.10.1(CDH)的安装部署  http://www.linuxidc.com/Linux/2017-04/143095.htm

Hadoop2.7.2 集群搭建详解(高可用)http://www.linuxidc.com/Linux/2017-03/142052.htm

使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源)http://www.linuxidc.com/Linux/2017-03/142136.htm

Ubuntu 14.04 下 Hadoop 集群安装  http://www.linuxidc.com/Linux/2017-02/140783.htm

CentOS 6.7 安装 Hadoop 2.7.2  http://www.linuxidc.com/Linux/2017-08/146232.htm

Ubuntu 16.04 上构建分布式 Hadoop-2.7.3 集群  http://www.linuxidc.com/Linux/2017-07/145503.htm

CentOS 7.3 下 Hadoop2.8 分布式集群安装与测试  http://www.linuxidc.com/Linux/2017-09/146864.htm

CentOS 7 下 Hadoop 2.6.4 分布式集群环境搭建  http://www.linuxidc.com/Linux/2017-06/144932.htm

Hadoop2.7.3+Spark2.1.0 完全分布式集群搭建过程  http://www.linuxidc.com/Linux/2017-06/144926.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148906.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6893字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7995277
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...