目录

前言

一、HADOOP HA之NameNode HA集群配置

1、修改hadoop-env.sh

2、修改core-site.xml

3、修改hdfs-site.xml

4、修改workers

5、同步配置文件

6、启动zookeeper集群

7、启动journalnode

8、格式化namenode

9、同步元数据

10、格式化ZKFC

11、启动HDFS

二、HADOOP HA之NameNode HA集群应用

1、查看两个NameNode的运行状态

(1)命令行  (nn2是 NameNode的名字,可以换成nn1)

(2)Hadoop的Web UI界面

2、关闭集群中的原Active NameNode,查看原Standby NameNode的运行状态

3、重新启动原Active NameNode,依次查看原Active NameNode和原Standby NameNode的运行状态

问题

1、Active NameNode关闭后Standby NameNode没有自动切换成Active NameNode

2、两个NameNode的运行状态都是Standby

3、Standby NameNode启动不了

参考


前言

本文只讲解HADOOP HA的NameNode HA集群配置与应用,Yarn HA不作讲解。

集群基础环境准备:

1、已经搭建好Hadoop和zookeeper集群

2、在本地主机的 /etc/hosts文件修改集群各个主机名和IP的映射关系(访问Hadoop的Web UI界面时需要)

3、配置好ssh免登陆


一、HADOOP HA之NameNode HA集群配置

找到你配置hadoop的目录,想不起来可以用which hadoop命令行查看,在bin的同级目录etc下找到hadoop配置文件所在目录,进行修改配置文件。

1、修改hadoop-env.sh

vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk-8u162-linux-x64/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/opt/module
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

把jdk和hadoop的配置路径换成你自己的,可以用which java和which hadoop命令行查看。

2、修改core-site.xml

vi core-site.xml
<configuration><!-- HA集群名称,该值要和hdfs-site.xml中的配置保持一致 --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- hadoop本地磁盘存放数据的公共目录 --><property><name>hadoop.tmp.dir</name><value>file:/home/hadoop/tmp</value></property><!-- 传输文件大小配置 --><property><name>io.file.buffer.size</name><value>131702</value></property><!-- ZooKeeper集群的地址和端口--><property><name>ha.zookeeper.quorum</name><value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value></property></configuration>

我Hadoop集群的主机名是hadoop1、hadoop2、hadoop3(记得完成主机名和ip地址映射,不然会出问题),换成你自己集群的主机名。

3、修改hdfs-site.xml

vi hdfs-site.xml
<configuration><!-- 配置namenode和datanode的工作目录-数据存储目录 --><property><name>dfs.namenode.name.dir</name><value>file:/home/hadoop/hdfs_name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/home/hadoop/hdfs_data</value></property><!-- 指定副本数 --><property><name>dfs.replication</name><value>2</value></property><!-- 启用webhdfs --><property><name>dfs.webhdfs.enabled</name><value>true</value></property><!--指定hdfs的nameservice为mycluster,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- mycluster下面有两个NameNode,分别是nn1,nn2 --><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- nn1的RPC通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop1:8020</value></property><!-- nn1的http通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop1:9870</value></property><!-- nn2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop2:8020</value></property><!-- nn2的http通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop2:9870</value></property><!-- 指定NameNode的edits元数据在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/mycluster</value></property><!-- 指定JournalNode在本地磁盘存放数据的位置 --><property><name>dfs.journalnode.edits.dir</name><value>/home/hadoop/data/journaldata</value></property><!-- 开启NameNode失败自动切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 指定该集群出故障时,哪个实现类负责执行故障切换 --><property><name>dfs.client.failover.proxy.provider.mycluster</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>

集群的主机名和存放数据的目录换成你自己的。

4、修改workers

vi workers
hadoop1
hadoop2
hadoop3

换成你自己集群的主机名。

5、同步配置文件

返回上一层目录,把hadoop目录下的配置文件同步给集群中的其他主机,-r后加目录路径,@后加主机名,如果新建了存放数据的目录也要同步给集群中的其他主机。

cd ..scp -r hadoop root@hadoop2:$PWD

6、启动zookeeper集群

在集群中的每台主机上启动zookeeper,在zookeeper安装目录下输入:

bin/zkServer.sh start

查看状态:一般是一个leader,两个follower

bin/zkServer.sh status

7、启动journalnode

在集群中的每台主机上启动journalnode,用jps命令行查看进程,可以看到JournalNode进程

hdfs --daemon start journalnode
jps

8、格式化namenode

格式化和启动namenode,在hadoop1上执行命令:

hdfs namenode -format
hdfs --daemon start namenode

9、同步元数据

在hadoop2上执行命令:

hdfs namenode -bootstrapStandby

10、格式化ZKFC

在哪台主机上执行,哪台主机就将成为第一次的Active Namenode

hdfs zkfc -formatZK

11、启动HDFS

在hadoop1上执行命令:

start-dfs.sh

二、HADOOP HA之NameNode HA集群应用

1、查看两个NameNode的运行状态

有两种方式可以查看:

(1)命令行  (nn2是 NameNode的名字,可以换成nn1)

hdfs haadmin -getServiceState nn2

(2)Hadoop的Web UI界面

在浏览器网址栏输入:http://hadoop1:9870/  和  http://hadoop2:9870/

我是用docker在虚拟机里搭建hadoop集群的,所以用虚拟机主机里的浏览器查看,如果是开了三台虚拟机搭建hadoop集群的话,在电脑本地的浏览器查看即可。如果用主机名+端口访问不了,应该是主机号和ip地址映射没做好,可以直接用ip地址+端口号访问;如果还是访问不了那就是配置文件没改好,或者是防火墙没关闭等等。

2、关闭集群中的原Active NameNode,查看原Standby NameNode的运行状态

hadoop1的NameNode原来是Active NameNode,hadoop2的NameNode原来是Standby NameNode,所以在hadoop1中关闭NameNode,输入:

hdfs --daemon stop namenode

也可以用jps查看进程号,kill -9 进程号,结束NameNode进程。刷新网页后,发现hadoop1的NameNode访问不了,hadoop2的NameNode变成了Active NameNode。

3、重新启动原Active NameNode,依次查看原Active NameNode和原Standby NameNode的运行状态

在hadoop1中输入:

hdfs --daemon start namenode

刷新网页后,hadoop1的NameNode可以访问且变成了Standby NameNode,hadoop2的NameNode是Active NameNode。

问题

1、Active NameNode关闭后Standby NameNode没有自动切换成Active NameNode

解决方法:CentOS可能没有自带fuster 程序,但是在hdfs-site.xml中用到了fuster 程序,所以得自己安装(每台主机上都要安装),安装完如果还是不行,可以重启所有虚拟机再试试。

yum -y install psmisc

2、两个NameNode的运行状态都是Standby

解决方法:强制选定一个NameNode为Active NameNode,nn1是名称节点的名字,换成你选定的

NameNode的名字

hdfs haadmin -transitionToActive --forcemanual nn1

3、Standby NameNode启动不了

解决方法:从Active NameNode拉取FSimage和元数据,再启动Standby NameNode

hdfs namenode -bootstrapStandby

参考

黑马程序员:HADOOP HA集群搭建

HADOOP HA之NameNode HA集群配置与应用相关推荐

  1. yarn 更新_【HDFS篇13】HA高可用 --- YARN-HA集群配置

    放弃很简单,但坚持一定很酷 YARN-HA集群配置 YARN-HA工作机制 1.官方文档 http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop ...

  2. Hadoop HA on Yarn——集群配置

    集群搭建 因为服务器数量有限,这里服务器开启的进程有点多: 机器名 安装软件 运行进程 hadoop001 Hadoop,Zookeeper NameNode, DFSZKFailoverContro ...

  3. Hadoop Ha集群配置

    为什么要配置HDFS HA?   首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HD ...

  4. hadoop2.610集群配置(包含HA和Hbase )

    .修改Linux主机名 2.修改IP 3.修改主机名和IP的映射关系 ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等) /etc/hosts里面要配 ...

  5. Hadoop 2.0集群配置详细教程

    Hadoop 2.0集群配置详细教程 前言 Hadoop2.0介绍 Hadoop是 apache 的开源 项目,开发的主要目的是为了构建可靠,可拓展 scalable ,分布式的系 统, hadoop ...

  6. greenplum配置高可用_高可用hadoop集群配置就收藏这一篇,动手搭建Hadoop(5)

    01 ssh免密安装 02 jdk安装 03 hadoop伪分布式安装 04 hadoop全分布式 完成了前面四步,现在做hadoop的高可用.其实和之前的lvs的高可用差不多的.如果我们有两个nam ...

  7. hadoop3.1.1 HA高可用分布式集群安装部署

    1.环境介绍 涉及到软件下载地址:https://pan.baidu.com/s/1hpcXUSJe85EsU9ara48MsQ 服务器:CentOS 6.8 其中:2 台 namenode.3 台 ...

  8. Hadoop-HDFS详解与HA,完全分布式集群搭建(细到令人发指的教程)

    前言 本篇篇幅较长,有许多集群搭建干货,和枯燥乏味但是面试可能问到的理论知识. 思来想去不知道怎样才能鼓励自己加油学习,想想要面对的生活还是假吧意思打开学习视频吧. 目录 一.引入 hdfs是什么 h ...

  9. hadoop 3.1.1的集群搭建并完成高可用配置(详细版)

    一.简介 hadoop是Apache基金会的一个顶级项目,最早期版本是十多年前发布的,随着飞速的迭代更新,2018年已经更新到了3.1.1版本.网络上大多数都是旧版本的配置,本文却是最新版本的hado ...

最新文章

  1. 【图论】【二叉树】以先序字符串方式建立二叉树
  2. Java代码优化:使用构造函数和使用一个setter的效率差别
  3. python脚本调用外部程序的若干种方式以及利弊
  4. tokudb 分形树_分形树Fractal tree介绍——具体如何结合TokuDB还没有太懂,先记住其和LSM都是一样的适合写密集...
  5. 表关联使用INNER JOIN实现更新功能
  6. 小哥哥你有98K吗?利用Python制作一款多功能变声器!
  7. 【转】wpa_supplicant与wpa_cli之间通信过程
  8. tomcat https 启用8443加证书
  9. 常见查找算法之—二分查找
  10. 灰色系统理论及其应用 (七) :道路交通事故灰色 Verhulst 预测模型
  11. 计算机学院毕业设计题库,计算机信息工程学院毕业设计课题审题表
  12. 如何走向真正的智能?
  13. 计算机突然无法连接网络,win7电脑突然不能上网的四种解决方案
  14. BLDC反电势过零检测计算
  15. tomcat配置监控界面
  16. 发明专利申请流程和时间
  17. pdfminer __init__() got an unexpected keyword argument ‘codec‘解决方案
  18. taro UI webpack5组件引入不起作用
  19. 净利润高速增长,新零售时代沃尔玛如何继续引领潮流?
  20. 转:为何德鲁克终生不谈如何管理下属?

热门文章

  1. 华为认证是自学还是报班合适
  2. Webpack 安装css-loader和style-loader报错
  3. Oracle的profile
  4. CommandName属性和CommandArgument属性[转]
  5. 三年级学生计算机学情分析,小学三年级信息技术教学计划范文
  6. var与varchar
  7. [重庆思庄每日技术分享]-oracle11g到ORACLE 816的dblink访问报 ORA-03150错误
  8. 8月教材有变,如何应对PMP考试
  9. CreatorPrimer | 飞机大战(一)
  10. AVFoundation开发秘籍笔记-02播放和录制音频