一、部署集群节点

规划整个集群由3台虚拟机组成,部署规划如下:

服务器 NameNode DataNode ResourceManager NodeManager JournalNode Zookeeper ZKFC
hadoop01
hadoop02
hadoop03

二、环境准备

首先搭配普通Hadoop集群,有三台虚拟机,分别为:hadoop01、hadoop02、hadoop03

三、配置Hadoop高可用集群

(以下文件都在解压后hadoop…文件下的etc/hadoop里)

1、修改core-site.xml文件在该文件配置HDFS端口,指定Hadoop临时目录和Zookeeper集群地址:

<configuration><!--指定HDFS的nameservice为ns1--><property><name>fs.defaultFS</name><value>hdfs://ns1</value></property><!--指定Hadoop临时目录--><property><name>hadoop.tmp.dir</name><value>/export/servers/hadoop-2.7.4/tmp</value></property><!--指定Zookeeper地址--><property><name>ha.zookeeper.quorum</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value></property>
</configuration>

2、修改hdfs-site.xml文件配置两台NameNode的端口地址和通信方式,并指定NameNode的元数据的存放位置,开启NameNode失败自动切换以及配置sshfence(通过ssh远程登录到前一个ActiveNameNode并将其结束进程)

(首先得创建/export/data/hadoop/name、/export/data/hadoop/data、/export/data/hadoop/journaldata这三个目录)

<configuration><!--设置副本个数--><property><name>dfs.replication</name><value>2</value></property><!--设置namenode.name目录--><property><name>dfs.namenode.name.dir</name><value>file:/export/data/hadoop/name</value></property><!--设置namenode.data目录--><property><name>dfs.datanode.data.dir</name><value>file:/export/data/hadoop/data</value></property>
<!--开启WebHDFS--><property><name>dfs.webhdfs.enabled</name><value>true</value><!--在NN和DN上开启webHDFS(REST API)功能,不是必须--></property><!--指定HDFS的那么nameservice为ns1,需要和core-site.xml中的保持一致--><property><name>dfs.nameservices</name><value>ns1</value></property><!--ns1下面有两个namenode,分别是nn1和nn2--><property><name>dfs.ha.namenodes.ns1</name><value>nn1,nn2</value></property><!--nn1的RPC通信地址--><property><name>dfs.namenode.rpc-address.ns1.nn1</name><value>hadoop01:9000</value></property><!--nn1的http通信地址--><property><name>dfs.namenode.http-address.ns1.nn1</name><value>hadoop01:50070</value></property><!--nn2的RPC通信地址--><property><name>dfs.namenode.rpc-address.ns1.nn2</name><value>hadoop02:9000</value></property><!--nn2的http通信地址--><property><name>dfs.namenode.http-address.ns1.nn2</name><value>hadoop02:50070</value></property><!--指定namenode的元数据在JournalNode上的存放位置--><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns1</value></property><!--指定JournalNode在本地磁盘存放数据的位置--><property><name>dfs.journalnode.edits.dir</name><value>/export/data/hadoop/journaldata</value></property>
<!--开启namenode失败自动切换--><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!--配置失败自启动切换实现方式--><property><name>dfs.client.failover.proxy.provider.ns1</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!--配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--><property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/bin/true)</value></property><!--使用sshfence隔离机制时需要ssh免登录--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!--配置sshfence隔离机制超时时间--><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property>
</configuration>

3、修改mapred-site.xml文件配置MapReduce计算框架为YARN方式

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

4、修改yarn-site.xml文件,开启ResourceManager高可用,指定RescoureManager的端口名称地址,并配置Zookeeper集群地址

<configuration><property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value></property><property><name>yarn.scheduler.maximum-allocation-mb</name><value>2048</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>1</value></property><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!--指定ResourceManager的cluster id--><property><name>yarn.resourcemanager.cluster-id</name><value>yrc</value></property><!--指定ResourceManager的名字--><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!--分别指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop01</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop02</value></property><!--指定Zookeeper集群的地址--><property><name>yarn.resourcemanager.zk-address</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>

5、修改slaves,配置集群主机名称

hadoop01
hadoop02
hadoop03

6、修改hadoop-env.sh,配置JDK环境变量(首先看你的jdk放在哪个目录)

7、将配置好的文件分发传送给hadoop02和hadoop03

四、启动Hadoop高可用集群

  1. 启动集群各个节点的Zookeeper服务,命令如下:

    zkServer.sh start
  2. 启动集群各个节点监控NameNode的管理日志JournalNode,命令如下:
    hadoop-daemon.sh start journalnode

  3. 在hadoop01节点格式化NameNode,并将格式化后的目录复制到hadoop02中,具体命令如下:
    hadoop namenode -formatscp -r /export/data/hadoop hadoop02:/export/data

  4. 在hadoop01节点上格式化ZKFC,命令如下:(为了连接上zookeeper集群,然后在zookeeper集群上面创建一个znode节点: /hadooop-ha/ns1,所以在哪里格式化zkfc其实不并重要,重要的是在zookeeper集群上创建znode。)
    hdfs zkfc -formatZK

  5. 在hadoop01节点上启动HDFS,命令如下:
    start-dfs.sh(可以看到启动了两个namenode一主一备、三个datanode,三个journalnode、两个zkfc)

  6. 在hadoop01节点上启动Yarn,命令如下:
    start-yarn.sh

  7. 用jps查看进程

  8. 在hadoop02节点上手动启动备用的resourcemanager

    sbin/yarn-daemon.sh start resourcemanager

  9. 最后通过宿主机浏览器分别访问http://ip地址:50070和http://ip地址:8088查看HDFS和YARN集群状态,效果如下: 

    从上面可以看出:

    在高可用集群HDFS集群中,通常有两台或两台以上的机器充当NameNode,在任意时间内,都要保证至少有一台机器处于活动状态(Active)状态,一台机器处于备用状态。处于活动状态的NameNode负责处理客户端请求,而处于备用状态的NameNode则处于“随时待命状态”。

  10. 需注意的问题:在以后启动hadoop和zookeeper过程中,要先启动zookeeper,再启动hadoop,否则会出现以下问题:

    用jps查看的时候没有ZKFC(故障恢复控制器)

  11. 总结

    Hadoop Ha集群搭建的启动步骤

    HDFS高可用启动顺序主要分为以下几步:

    (1)启动所有journalNode进程,用来存之后namenode的元数据

    (2)格式化主namenode,并启动主namenode进程

    (3)将主namenode上的元数据信息复制到从的namenode所在节点

    (4)在主namenode上格式化ZKFC,只需要在主namenode上进行即可

    (5)停掉所有Journalnode进程和主namenode

    (6)使用start-dfs.sh脚本一次性启动所有HDFS的进程

    Yarn高可用启动顺序主要分以下几步:

    (1)直接在主的ResourceManager上利用start-yarn.sh脚本启动yarn集群

    (2)在从的ResourceManager上手动启动从resourcemanager进程

搭建Hadoop高可用集群相关推荐

  1. hadoop 查看节点主备装填_基于ZooKeeper搭建Hadoop高可用集群

    作者博客:https://blog.csdn.net/m0_37809146/ 一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用 ...

  2. 一次性搭建Hadoop高可用集群

    前期准备: 1.修改Linux主机名 2.修改IP 3.修改主机名和IP的映射关系 /etc/hosts 注意:如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等) /etc/ho ...

  3. Windows环境下安装HBase(Hadoop3.1.3、HBase2.2.5)与Linux环境下搭建HBase高可用集群

    Windows环境下安装HBase 下载HBase 官网: https://hbase.apache.org/downloads.html 不同版本集合:https://archive.apache. ...

  4. Nginx配置——搭建 Nginx 高可用集群(双机热备)

    Nginx配置--搭建 Nginx 高可用集群(双机热备) https://blog.csdn.net/zxd1435513775/article/details/102508573?utm_medi ...

  5. Hadoop高可用集群下namenode格式化失败问题解决

    Hadoop高可用集群下namenode格式化失败问题解决 输入hdfs namenode -format报如下错误 解决方法: 1.在zookeeper目录下执行./bin/zkServer.sh ...

  6. docker搭建redis高可用集群

    目标:docker搭建redis高可用集群 1.架构:六个redis容器,三主三从,主从复制,主机宕机从机自动替代 2.网络架构设计:设计一个专属redis的docker网络 docker netwo ...

  7. 搭建Nginx高可用集群(keepalived+双机热备)

    一.Nginx高可用 首先了解一下什么是高可用,高可用是分布式系统架构中必须考虑的因素. 我们都知道,使用nginx的反向代理和负载均衡可以解决tomcat等web容器的单点故障以及高并发等问题. 反 ...

  8. 零基础带你一步步搭建Nacos高可用集群(史上最详细,赛过教科书!)为此我准备了三台云服务器+云数据库

    容我先说一句:节日快乐!永远九岁的我们当然不能错过,奥里给!{容我先说一句:节日快乐!永远九岁的我们当然不能错过,奥里给!}容我先说一句:节日快乐!永远九岁的我们当然不能错过,奥里给! 如果你不懂jd ...

  9. 搭建Eureka高可用集群

    做的快哭了已经 文章目录 Eureka可用高集群的搭建 一.Eureka的工作原理 二.Eureka中服务提供者与服务消费者的关系 三.搭建Eureka-Server和Eureka-Client 四. ...

  10. 容器编排——Kubeadm在线或离线搭建kubernetes高可用集群

    目录 1.架构简介: 2.集群架构图: 3.集群服务器: 4.修改主机名称: 5.修改hosts配置文件: 6.关闭selinux: 7.关闭防火墙: 8.关闭swap: 9.设置iptables网桥 ...

最新文章

  1. Altium Designer同一个工程里不同原理图导入到不同的PCB
  2. java 泛型类使用,集合中添加不同类型数据
  3. 大富由天定,小富靠算计!
  4. virsh default启动失败原因分析及解决
  5. vue-cli 没有build如何配置_如何从零开发一个 gradle 插件(一)
  6. tomcat 8.0下载
  7. 物联网通信技术课程安排
  8. Caffe框架的使用
  9. Swift 中枚举高级用法及实践
  10. 黑苹果El Captain 10.11.2 安装
  11. 怎么彻底卸载cad2017_Win10系统怎么彻底卸载cad【图文教程】
  12. r语言如何计算t分布临界值_医学统计与R语言:超几何分布(Hypergeometric distribution)与Fisher精确检验...
  13. DLL和EXE如何读取包含在自身的资源文件
  14. Unity2D入门(二):图层layer和角色建立
  15. Untiy学习 简单的脚本方法
  16. 硬盘无法访问设备未就绪,里面的数据怎么找回
  17. x265-1.8版本-encoder/dpb.cpp注释
  18. php 判断字符串乱码,php如何检测乱码字符
  19. Win10ahci模式怎么开启?
  20. vue 仿B站下拉刷新上拉加载

热门文章

  1. java 计算间隔天数,java 计算间隔的天数
  2. 怎样查看苹果服务器验证关闭,iPhone小技巧:如何查询 iOS 系统是否已经关闭验证?...
  3. jOOQ 3.13.2 代码生成过程及解决 daos 无法生成的问题
  4. 中国出海50强,华为超越阿里得亚军,第一名居然是它?
  5. ttl传输种过期_Ping提示TTL传输中过期导致Web不能访问
  6. java 一年有多少周_Java获取一年有多少周、某周的第一天和最后一天.
  7. 多伦多大学计算机硕士读几年,多伦多大学计算机硕士申请条件
  8. 佐治亚理工的网上计算机硕士,佐治亚理工计算机硕士读几年?
  9. 《Spring实战3》第七章 使用Spring MVC构建Web应用程序
  10. 无数个骂娘的故事告诉你,千万别做技术合伙人