配置高可用(名称节点高可用)

news/2024/10/30 9:32:29/

本文详细配置名称节点的高可用,什么是高可用可参考官方文档

说在前面
  • 工作环境:VMware® Workstation 12 Pro 12.5.6 build-5528349
  • linux版本:CentOS-7-x86_64-Minimal-1611.iso
  • JDK版本:jdk-8u65-linux-x64.tar.gz
  • Hadoop版本:hadoop-2.7.6.tar.gz
关于高可用
  • 满足 24 * 365

    一年365天不间断运行

  • 满足 99.999% (5个9)

    一年最多宕机 365 * 24 * 0.0001 = 1 小时

生产环境介绍

本文配置供需要5台主机,具体情况如下

  • 两个名称节点(s201, s205)
s201:192.168.32.201    //NameNode
s201:192.168.32.205    //NameNode
  • 三个数据节点
s202:192.168.32.202    //DataNode
s203:192.168.32.203    //DataNode
s204:192.168.32.204    //DataNode
详细配置如下
1. 新增数据节点主机(s205),配置ssh
  • 生成秘钥对,然后将公钥发给其他主机(s201, s202, s203, s204)
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa$>cd ~/.ssh
$>cat id_rsa.pub >> authorized_keys
$>chmod 644 authorized_keys//重命名
$>mv id_rsa.pub id_rsa.pub.s205.0$>scp id_rsa.pub.s205.0 centosmin0@s201:/home/centosmin0/.ssh/authorized_keys
$>scp id_rsa.pub.s205.0 centosmin0@s202:/home/centosmin0/.ssh/authorized_keys
$>scp id_rsa.pub.s205.0 centosmin0@s203:/home/centosmin0/.ssh/authorized_keys
$>scp id_rsa.pub.s205.0 centosmin0@s204:/home/centosmin0/.ssh/authorized_keys
  • 将s201主机的公钥发送给主机s205
$>scp id_rsa.pub centosmin0@s205:/home/centosmin0/.ssh/authorized_keys
2. 配置高可用生产环境
  • 从原生产环境(full)中复制出高可用生产环境(ha):
$> cp -r /soft/hadoop/etc/full ha
  • 将原生产环境(full)的符号链接指向高可用生产环境(ha):
xcall.sh "ln -sfT /soft/hadoop/etc/ha /soft/hadoop/etc/hadoop"
  • 使用批处理脚本分发给其他主机
3. 配置core-site.xml和hdfs-site.xml文件(s201)
  • core-site.xml
<!-- 配置hdfs文件系统名称服务 -->
<property><name>fs.defaultFS</name><value>hdfs://mycluster</value>
</property>
  • hdfs-site.xml
<!-- 配置nameservice -->
<property><name>dfs.nameservices</name><value>mycluster</value>
</property><!-- myucluster下的名称节点两个id -->
<property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value>
</property><!-- 配置每个nn的rpc地址 -->
<property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>s201:8020</value>
</property>
<property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>s205:8020</value>
</property><!-- 配置webui端口 -->
<property><name>dfs.namenode.http-address.mycluster.nn1</name><value>s201:50070</value>
</property>
<property><name>dfs.namenode.http-address.mycluster.nn2</name><value>s205:50070</value>
</property><!-- 名称节点共享编辑目录 -->
<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://s202:8485;s203:8485;s204:8485/mycluster</value>
</property><!-- java类,client使用它判断哪个节点是激活态 -->
<property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property><!-- 脚本列表或者java类,在容灾情况下保护激活态的nn -->
<property><name>dfs.ha.fencing.methods</name><value>sshfence</value>
</property>
<property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/centosmin0/.ssh/id_rsa</value>
</property><!-- 配置JN存放edit的本地路径 -->
<property><name>dfs.journalnode.edits.dir</name><value>/home/centosmin0/hadoop/journal</value>
</property>
  • 将文件呢分发给其他主机(s202, s203, s204, s205, s206)
4. 部署细节
  • 在jn节点(每个数据节点就素一个jn节点)启动jn进程(s202, s203, s204)
$>hadoop-daemon.sh start journalnode

image

  • 启动jn之后,在两个NN(名称节点)之间进行disk元数据同步

    1. 如果是全新集群,先format文件系统,只需要在一个nn上执行
    [s201]
    $>hadoop namenode -format
    
    1. 如果将非HA集群转换成HA集群,复制原NN的metadata到另一个NN

      步骤一:清除原来的dfs
      [s201]

      $>scp -r /home/centos/hadoop/dfs centos@s206:/home/centos/hadoop/
      

      步骤二:在新的NN(未格式化的NN)上运行以下命令(s205),实现待命状态引导(注意:需要启动s201的名称节点,提示是否格式化,选择N)

    ```$>hdfs namenode -bootstrapStandby```![image](http://pcx55bat1.bkt.clouddn.com/ha2.png)
    

    步骤三:在一个NN上执行以下命令,完成edit日志到jn节点的传输

    $>hdfs namenode -initializeSharedEdits
    
    步骤四:启动所有节点
    
         [s201]$>hadoop-daemon.sh start namenode		//启动名称节点$>hadoop-daemons.sh start datanode		//启动所有数据节点[s205]$>hadoop-daemon.sh start namenode		//启动名称节点```
    ![image](http://pcx55bat1.bkt.clouddn.com/ha3.png)
  • HA管理

$>hdfs haadmin -transitionToActive nn1				//切成激活态
$>hdfs haadmin -transitionToStandby nn1				//切成待命态
$>hdfs haadmin -transitionToActive --forceactive nn2//强行激活
$>hdfs haadmin -failover nn1 nn2					//模拟容灾演示,从nn1切换到nn2

webui下成功状态:
s201:active状态(激活状态)

image

s205:standby状态(待命状态)

image

待命状态下无法访问文件系统:

image


http://www.ppmy.cn/news/416599.html

相关文章

Echarts柱状图,曲线图

实现地址 var yMax 5; var dataShadow []; var data [4.2, 3.8, 4.8, 3.5, 2.9, 2.8, 3, 5]for (var i 0; i < data.length; i) {dataShadow.push(yMax); } option {grid: {bottom: "15%"},tooltip: {trigger: "axis",axisPointer: {type: "…

多表连接面试题:ERROR:Not unique table/alias

class_info idclass_name2s2045s2051s2077s203 match_info idhost_idguest_idmatch_timematch_result1212018-12-1045:622272018-12-1655:503 4 5 1、题目需求&#xff1a;已知某学校组织篮球比赛&#xff0c;现在有两张表class_info 和 match_info&#xff0c;需要通…

Fatal signal XX (SIGSEGV) 常见解决思路 backtrace

Fatal signal XX (SIGSEGV)常用解决思路 ****例如&#xff1a;**** 1、log信息&#xff1a; (摘自网络) 02-13 14:56:12.140 6180 11596 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 11596 (pool_albumlabel) 02-13 14:56:12.149 4549 4579 D ForegroundUtils: …

Android中使用addr2line来分析native信息

系统&#xff1a;Ubuntu12.04 手机系统&#xff1a;Android5.0 在Android的开发过程中有会有很多的native bug必须要用addr2line来分析&#xff0c;并且这个工具也非常的好用。下面我们来看看具体的使用。 烧录到手机上的版本和你电脑上的编译出的版本要一致&#xff0c;这个…

替换pdf中的文字

在项目中经常会有一种需求&#xff0c;给定一个pdf模板&#xff0c;向里面空格中填充文字。若文字长度是固定的或长度变化不大&#xff0c;可以直接使用pdf模板来替换&#xff1b;若需要替换的新文字长度变动比较大&#xff0c;最好的办法是先做好一个word版的目标&#xff0c;…

【开源】壁纸软件,给自己电脑设计专属特效

喜欢图形学的朋友可以了解下&#xff0c;shader开发专属特效 技术点&#xff1a;wpf&#xff0c;dx&#xff0c;shader 软件环境&#xff1a;net core 3.1 平台&#xff1a;windows 用途&#xff1a;给电脑桌面设计一个自己想要的壁纸特效 特殊说明&#xff1a;部分原生特效需…

win10用html文件做壁纸,利用win10自带工具制作动态壁纸的简单方法

微软在最强大操作系统利用win10自带工具制作动态壁纸的简单方法的详细介绍。 利用win10自带工具制作动态壁纸的简单方法&#xff1a; 把图片做成动态壁纸&#xff0c;总共分4步&#xff1a;1、准备素材&#xff0c;2、素材导入&#xff0c;3、调整效果&#xff0c;4、导出视频。…