Hadoop之HA高可用

  • 1、集群规划
  • 2、前提
  • 3、免密配置
  • 4、修改hadoop配置文件
    • 4.1、hdfs高可用
      • 1、修改core-site.xml 添加如下配置文件
      • 2、修改hdfs-site.xml文件,添加如下内容
      • 3、将修改后的文件同步到另外两台机器
      • 4、删除之前hadoop的存储文件
      • 5、启动JN 存储hdfs元数据
      • 6、格式化namenode
      • 7、执行同步
      • 8、格式化ZK
      • 9、启动hdfs集群
    • 4.2、yarn高可用
      • 1、修改yarn-site.xml文件,并添加如下内容
      • 2、mapred-site.xml文件,并添加如下内容
      • 3、启动yarn
      • 4、在另外一台主节点上启动RM(node1)
  • 5、测试高可用
    • 1、在浏览器查看
    • 2、手动杀死master中的namenode进程
    • 3、再次访问wed界面
    • 4、重新启动master上的namenode

1、集群规划

ZooKeeper NameNode DataNode ResourceManager NodeManage JN ZKFC
master 1 1 1 1 1
node1 1 1 1 1 1 1 1
node2 1 1 1 1

2、前提

1、Zookeeper集群安装完毕
2、jdk安装完成等等

3、免密配置

注意:两台NameNode机器 (master、node1)都需要配置免密登录


4、修改hadoop配置文件

4.1、hdfs高可用

1、修改core-site.xml 添加如下配置文件

<configuration><property><name>fs.defaultFS</name><value>hdfs://cluster</value></property><property><name>hadoop.tmp.dir</name><value>/usr/local/soft/hadoop-2.7.6/tmp</value></property><property><name>fs.trash.interval</name><value>1440</value></property><property><name>ha.zookeeper.quorum</name><value>master:2181,node1:2181,node2:2181</value></property>
</configuration>

2、修改hdfs-site.xml文件,添加如下内容

<configuration><!-- 指定hdfs元数据存储的路径 --><property><name>dfs.namenode.name.dir</name><value>/usr/local/soft/hadoop-2.7.6/data/namenode</value></property><!-- 指定hdfs数据存储的路径 --><property><name>dfs.datanode.data.dir</name><value>/usr/local/soft/hadoop-2.7.6/data/datanode</value></property><!-- 数据备份的个数 --><property><name>dfs.replication</name><value>1</value></property><!-- 关闭权限验证 --><property><name>dfs.permissions.enabled</name><value>false</value></property><!-- 开启WebHDFS功能(基于REST的接口服务) --><property><name>dfs.webhdfs.enabled</name><value>true</value></property><!-- //以下为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>nn1,nn2</value></property><!-- 配置nn1,nn2的rpc通信端口 --><property><name>dfs.namenode.rpc-address.cluster.nn1</name><value>master:8020</value></property><property><name>dfs.namenode.rpc-address.cluster.nn2</name><value>node1:8020</value></property><!-- 配置nn1,nn2的http通信端口 --><property><name>dfs.namenode.http-address.cluster.nn1</name><value>master:50070</value></property><property><name>dfs.namenode.http-address.cluster.nn2</name><value>node1:50070</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>
</configuration>

3、将修改后的文件同步到另外两台机器

注意:此时只是core-site.xml与hdfs-site.xml两个配置文件与单namenode的hadoop集群不同,其它配置文件和单节点的相同,已经省略!!!

scp -r /usr/local/soft/hadoop-2.7.6/etc/hadoop/ node1:/usr/local/soft/hadoop-2.7.6/etc/

4、删除之前hadoop的存储文件

rm -rf /usr/local/soft/hadoop-2.7.6/tmp
启动Zookeeper集群,三台机器都要启动
zkServer.sh start

5、启动JN 存储hdfs元数据

三台三台机器 都要执行命令
hadoop-daemon.sh start journalnode
jps查看进程

6、格式化namenode

在一台namenode上面执行,master与node1上都可以,本文选择在master上面执行
hdfs namenode -format
启动当前的namenode
hadoop-daemon.sh start namenode


7、执行同步

在没有格式化的namenode上执行,本文没格式化的namenodenode1
node1上执行
hdfs namenode -bootstrapStandby

8、格式化ZK

在已经启动的namenode上面执行(master)
!!一定要先 把zk集群正常 启动起来
hdfs zkfc -formatZK

9、启动hdfs集群

在启动了namenode的节点上执行(master
start-dfs.sh
查看master与node1上的进程



至此,hdfs高可用搭建完成,有两个namenode,一个在master上,另一个在node1上

4.2、yarn高可用

1、修改yarn-site.xml文件,并添加如下内容

<configuration><!-- NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 配置Web Application Proxy安全代理(防止yarn被攻击) --><property><name>yarn.web-proxy.address</name><value>master:8888</value></property><!-- 开启日志 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 配置日志删除时间为7天,-1为禁用,单位为秒 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property><!-- 修改日志目录 --><property><name>yarn.nodemanager.remote-app-log-dir</name><value>/logs</value></property><!-- 配置nodemanager可用的资源内存 --><property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value></property><!-- 配置nodemanager可用的资源CPU --><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>2</value></property><!-- //以下为YARN HA的配置// --><!-- 开启YARN HA --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 启用自动故障转移 --><property><name>yarn.resourcemanager.ha.automatic-failover.enabled</name><value>true</value></property><!-- 指定YARN HA的名称 --><property><name>yarn.resourcemanager.cluster-id</name><value>yarncluster</value></property><!-- 指定两个resourcemanager的名称 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 配置rm1,rm2的主机 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>master</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>node1</value></property><!-- 配置YARN的http端口 --><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>master:8088</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>node1:8088</value></property><!-- 配置zookeeper的地址 --><property><name>yarn.resourcemanager.zk-address</name><value>master:2181,node1:2181,node2:2181</value></property><!-- 配置zookeeper的存储位置 --><property><name>yarn.resourcemanager.zk-state-store.parent-path</name><value>/rmstore</value></property><!-- 开启yarn resourcemanager restart --><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!-- 配置resourcemanager的状态存储到zookeeper中 --><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property><!-- 开启yarn nodemanager restart --><property><name>yarn.nodemanager.recovery.enabled</name><value>true</value></property><!-- 配置nodemanager IPC的通信端口 --><property><name>yarn.nodemanager.address</name><value>0.0.0.0:45454</value></property>
</configuration>

2、mapred-site.xml文件,并添加如下内容

<configuration><!-- 指定MapReduce计算框架使用YARN --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 指定jobhistory server的rpc地址 --><property><name>mapreduce.jobhistory.address</name><value>node1:10020</value></property><!-- 指定jobhistory server的http地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>node1:19888</value></property><!-- 开启uber模式(针对小作业的优化) --><property><name>mapreduce.job.ubertask.enable</name><value>true</value></property><!-- 配置启动uber模式的最大map数 --><property><name>mapreduce.job.ubertask.maxmaps</name><value>9</value></property><!-- 配置启动uber模式的最大reduce数 --><property><name>mapreduce.job.ubertask.maxreduces</name><value>1</value></property>
</configuration>

将修改的yarn-site.xml与mapred-site.xml同步到另外两台机器上

scp -r /usr/local/soft/hadoop-2.7.6/etc/hadoop/ node1:/usr/local/soft/hadoop-2.7.6/etc/

3、启动yarn

master启动start-yarn.sh

4、在另外一台主节点上启动RM(node1)

yarn-daemon.sh start resourcemanager


至此查看所有进程 jps,与我们集群规划的所有进程一致,Hadoop的HA高可用安装完毕


5、测试高可用

1、在浏览器查看

输入masternode1地址,
看到master处于active状态
node1处于standby状态


2、手动杀死master中的namenode进程

kill -9 2718

3、再次访问wed界面

发现node1已经处于active状态了

4、重新启动master上的namenode

hadoop-daemon.sh start namenode
查看master状态
发现其已经变成standby状态了


Hadoop之HA高可用相关推荐

  1. hadoop的HA高可用配置(没有搞完)

    hadoop的HA主要是两部分,一部分是namenode的备份,一部分是datanode备份. namenode和datanode一般尽量不在一个节点上, 这样namenode挂掉一个,还会有另外一个 ...

  2. 搭建Hadoop的HA高可用架构(超详细步骤+已验证)

    一.集群的规划 Zookeeper集群: 192.168.182.12 (bigdata12)192.168.182.13 (bigdata13)192.168.182.14 (bigdata14) ...

  3. 【Hadoop】HA高可用搭建保姆级教程(大二学长的万字笔记)

    知识目录 一.写在前面

  4. Hadoop HA 高可用集群搭建

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

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

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

  6. Hadoop HA 高可用集群启动报错 Encountered exception loading fsimage 解决方案

    笔者在搭建好Hadoop HA 高可用集群启动时报如下错误,后面是解决方案. 报错信息: 2018-08-24 11:18:07,475 INFO org.apache.hadoop.hdfs.ser ...

  7. 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/,因为原链接打不开,故在 ...

  8. 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 ...

  9. Hadoop集群高可用及zookeeper+kafka组件搭建

    目录 一.Hadoop集群高可用 1.Zookeeper概述 1)Zookeeper基本概述 3)Zab协议 3)observer 4)zookeeper集群图例 2.zookeeper集群搭建 3. ...

最新文章

  1. 营销自动化的4大预测分析错误
  2. SAP QM 执行事务代码QP01,系统报错 -Material type FOOD is not defined for task list type Q-
  3. python语言入门p-MicropPython的学习,如何从0到1?
  4. [gic]-ARM gicv3/gicv4的详细介绍-2020/08
  5. 我尽力了,为啥还是Bug不断?
  6. http下载异常_百度网站抓取异常的原因有哪些?有什么影响和解决方法?
  7. 用sc命令查询系统状态
  8. (转)收集 Spring Boot 相关的学习资料,Spring Cloud点这里 重点推荐:Spring Boot 中文索引...
  9. Auto Highlight for Mac(Safari文本自动高亮插件)
  10. php 判断输入字符串,php 判断(输入框) 字符串函数
  11. 第58章、拍照功能实现(从零开始学Android)
  12. url 转码 java_URL 转码遇到的坑
  13. 微信公众平台开发(十二) 发送客服消息
  14. 计算机安装xp蓝屏怎么办,重装xp系统一直蓝屏重启循环怎么回事
  15. 设置网站ico图标的两种方法
  16. win10+Python3.7.3+OpenCV3.4.1入门学习(八)————8.7 礼帽运算
  17. 电子烟“致癌”?美国癌症协会:危害显著低于普通香烟
  18. 接天莲叶无穷碧,映日荷花别样红 1
  19. 人机交互学习-6 交互式系统的设计
  20. 计算机网络实验mooc,MOOC计算机网络第三单元测验(哈尔滨工业大学)

热门文章

  1. LB集群——LVS负载均衡介绍(DR模式、TUN模式、NAT模式)
  2. 高精度人员定位系统源码,采用vue+spring boot框架,支持二次开发
  3. 已解决 文件右键转圈圈,电脑卡死
  4. 磁盘阵列与磁带库备份的优缺点
  5. Adobe XD CC 2020中文版
  6. java 数组的排列组合_java数组排列组合问题汇总
  7. 用 Python 带你游览女神世界,海量视频数据一键保存
  8. DataReader转换DataTable
  9. 改变模型锚点的4种方法
  10. 常见的网络攻击攻防方法