首页 > 其他分享 >Zookeeper之HA

Zookeeper之HA

时间:2024-08-02 21:51:06浏览次数:14  
标签:hdfs Zookeeper hadoop dfs master node1 namenode HA

HA步骤

配置之前先拍摄快照(重要)

快照名称设置为 Zookeeper

  • 配置免密登录

    # 在node1节点执行
    ssh-keygen -t rsa
    # 三次回车之后
    ssh-copy-id node1
    ssh-copy-id node2
    ssh-copy-id master
    
  • 关闭所有Hadoop

    # 关闭Hadoop
    stop-all.sh
    
  • 在core-site.xml中添加如下配置:

    -- 注意需要将原先的9000修改成cluster
    <property>
            <name>fs.defaultFS</name>
           <!-- <value>hdfs://master:9000</value> -->
            <value>hdfs://cluster</value>
    </property>
    
    <property>
                  <name>ha.zookeeper.quorum</name>
                  <value>master:2181,node1:2181,node2:2181</value>
    </property>
    
  • 在hdfs-site.xml中添加如下配置:

    <!-- //////////////以下为HDFS HA的配置////////////// -->
    <!-- 指定hdfs的nameservices名称为mycluster -->
    <property>
    <name>dfs.nameservices</name>
    <value>cluster</value>
    </property>
    
    <!-- 指定cluster的两个namenode的名称分别为nn1,nn2 -->
    <property>
    <name>dfs.ha.namenodes.cluster</name>
    <value>master,node1</value>
    </property>
    
    <!-- 配置nn1,nn2的rpc通信端口 -->
    <property>
    <name>dfs.namenode.rpc-address.cluster.master</name>
    <value>master:8020</value>
    </property>
    <property>
    <name>dfs.namenode.rpc-address.cluster.node1</name>
    <value>node1:8020</value>
    </property>
    
    <!-- 配置nn1,nn2的http通信端口 -->
    <property>
    <name>dfs.namenode.http-address.cluster.master</name>
    <value>master:9870</value>
    </property>
    <property>
    <name>dfs.namenode.http-address.cluster.node1</name>
    <value>node1:9870</value>
    </property>
    
    <!-- 指定namenode元数据存储在journalnode中的路径 -->
    <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://master:8485;node1:8485;node2:8485/cluster</value>
    </property>
    
    <!-- 指定journalnode日志文件存储的路径 -->
    <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/usr/local/soft/hadoop-2.7.6/data/journal</value>
    </property>
    
    <!-- 指定HDFS客户端连接active namenode的java类 -->
    <property>
    <name>dfs.client.failover.proxy.provider.cluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    <!-- 配置隔离机制为ssh -->
    <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
    </property>
    
    <!-- 指定秘钥的位置 -->
    <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
    </property>
    
    <!-- 开启自动故障转移 -->
    <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
    </property>
    
    <!-- 关闭权限验证 -->
    <property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
    </property>
    
  • 在hadoop-env.sh添加环境变量配置

    export HDFS_ZKFC_USER=root
    export HDFS_JOURNALNODE_USER=root
    
  • 上传配置文件至master的 /usr/local/soft/hadoop-3.1.3/etc/hadoop 并分发其他节点

    cd /usr/local/soft/hadoop-3.1.3/etc/hadoop
    scp hdfs-site.xml root@node1:`pwd`
    scp hdfs-site.xml root@node2:`pwd`
    scp core-site.xml root@node1:`pwd`
    scp core-site.xml root@node2:`pwd`
    scp hadoop-env.sh root@node1:`pwd`
    scp hadoop-env.sh root@node2:`pwd`
    
  • 删除所有节点中的tmp目录

    # 在master node1 node2 节点删除
    rm -rf /usr/local/soft/hadoop-3.1.3/data
    
  • 启动Zookeeper三台都需要启动

    zkServer.sh start
    zkServer.sh status
    
  • 配置node1、node2 环境变量添加 HADOOP_HOME

    vim /etc/profile
    # 添加:
    # HADOOP_HOME
    export HADOOP_HOME=/usr/local/soft/hadoop-3.1.3
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    
    source /etc/profile
    
  • 启动JN 存储hdfs元数据

    三台JN上执行 启动命令: 
     	hadoop-daemon.sh start journalnode
    
  • 格式化 在一台NN上执行(在master上执行)

    hdfs namenode -format
    # 并启动NameNode
    hadoop-daemon.sh start namenode
    
  • 执行同步 没有格式化的NN上执行 在另外一个namenode上面执行(在node1上执行)

    hdfs namenode -bootstrapStandby
    
  • 格式化ZK 在已经启动的namenode上面执行(在master上执行)

    # 保证Zookeeper启动状态
    hdfs zkfc -formatZK
    
  • 启动整个集群

    start-all.sh
    

标签:hdfs,Zookeeper,hadoop,dfs,master,node1,namenode,HA
From: https://www.cnblogs.com/justice-pro/p/18339667

相关文章

  • Datawhale AI夏令营(AI+生命科学)深度学习-Task3直播笔记
    机器学习lgm上分思路    1、引入新特征(1)对于Task2特征的再刻画        GC含量是siRNA效率中的一个重要且基本的参数,可以作为模型预测的特征。这是因为低GC含量会导致非特异性和较弱的结合,而高GC含量可能会阻碍siRNA双链在解旋酶和RISC复合体作用下的解旋。......
  • Java HashMap 源码解读笔记(二)--xunznux
    文章目录HashMapputVal插入新值方法方法解读1.7和1.8有哪些区别resize重新哈希方法treeifyBin树化方法treeify树化方法untreeify链化方法HashMap本文主要是用于记录我在阅读Java1.8的HashMap源码所做的笔记。对于源码中的注释会进行翻译下来,并且会对其中部......
  • Java HashMap 源码解读笔记(一)--xunznux
    文章目录HashMap介绍实现说明:源码解读静态常量和内部节点类Node静态工具方法属性字段Fields未完待续。。。HashMap本文主要是用于记录我在阅读Java1.8的HashMap源码所做的笔记。对于源码中的注释会进行翻译下来,并且会对其中部分源码进行注释。这一篇文章主要......
  • charles教程与篡改接口数据
    charles简介Charles是一款常用的网络代理工具,可以用来监控、调试和分析网络请求和响应数据。它可以截取HTTP和HTTPS流量,在代理服务器和目标服务器之间建立连接,允许用户便捷地查看和记录网络通信数据,包括请求URL、请求头部、请求体、响应头部、响应体等信息。使用Ch......
  • c primer plus 第三章 数据与C 3.43 char类型
    一、什么是char?**char类型用于储存字符,char是整数类型(char实际储存的是整数而不是字符)char通过转换ASCII编码来表示字母、标点或符号。eg:char=‘A’等于char=65**C语言把一字节定义位char类型占用的位数,即8bit,因此各种系统都能使用char类型二、char的使用与特性1、声明char......
  • 大数据场景下的Zookeeper集群的搭建
    本篇文件将介绍如何搭建zookeeper集群,并集合大数据相关组件介绍zookeeper的功能一、Zookeeper是做什么的,我们搭建它有什么用处Zookeeper是一个分布式的服务管理框架,它负责存储和管理大家都关心的数据,基于观察者涉及模式,Zookeeper接受观察者的注册,一旦这些数据的状态发生了变......
  • 打靶记录5——靶机hard_socnet2
    靶机:https://download.vulnhub.com/boredhackerblog/hard_socnet2.ova目标:取得root权限涉及攻击方法主机发现端口扫描SQL注入文件上传蚁剑上线XMLRPC命令执行逆向工程动态调试漏洞利用代码编写方法CVE-2021-3493缓冲器溢出漏洞学习目标希望通过今天学习......
  • ShardingSphere实战(3)- 快速实现分库分表
    上篇博客,我们讲了ShardingSphere实战(2)-水平分表,这篇博客,我们继续实现分库以及解决前面遗留的问题。一、绑定表基于上篇博客配置的前提下(上篇博客的最后放上了完整的配置,需要的可以去看看,这里就不重复写上去了),加上绑定表的配置:#绑定表关系spring.shardingsphere.shar......
  • MHA高可用配置及故障切换
    目录MHA高可用配置及故障切换MHA定义MAH的组成MHA特点MHA工作原理实验:搭建MySQLMHA案例拓扑图案例实施四台服务器关闭防火墙防护,连接所有会话101、102、103、104设置host文件安装MySQL数据库连接会话102、103、104设置主库配置从服务器配置启动修改登录密码......
  • .Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor
    〇、前言本文首先简单介绍了Dockerfile内容和常用命令;然后是在Windows环境Dockerdesktop的安装和配置;最后创建了WebAPI示例项目,并简单说明了从构建到推送至Harbor镜像仓库的步骤。一、关于Dockerfile1.1Dockerfile文件示例#Seehttps://aka.ms/customizecont......