搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
一日一技:Python + Excel——飞速处理数据分析与处理_excel+python
2
Oracle中的分组查询、子查询、多表连接_oracle中多个子查询并排显示
3
MacBook M1 32G配置大语言模型_macos amd 大语言模型
4
利用百度文字识别API获取视频图片上的文字信息_视频内容识别 api
5
基于JavaWeb+SpringBoot+Vue房屋租赁系统微信小程序系统的设计和实现_房屋管理页面 小程序
6
面试-mysql篇-慢查询优化_慢查询type属性
7
vsftpd 配置:chroot_local_user与chroot_list_enable详解
8
运用WinDbg分析崩溃转储dmp文件的基本配置和简单命令(win7下)_windbg image file path
9
Sante DICOM Viewer CD/DVD患者读取器
10
oracle心得3--多表查询@分组查询@子查询讲解与案例分析@经典练习题
当前位置:
article
> 正文
hadoop HA(热备)_热备关系 hadoop
作者:笔触狂放9 | 2024-03-20 23:52:48
赞
踩
热备关系 hadoop
冷备:实时或者周期性从业务服务器备份重要数据,
当该业务服务器宕机时,手动启动备份服务器
** 业务切换间隔时间比较长
热备:实时备份业务服务器备份重要数据,
当该业务服务器宕机时,集群会自动切换业务服务器,从而替换掉宕机的服务器
** 业务切换间隔时间比较短(秒级)
==================NameNode HA===============================
Namenode 要考虑热备HA --- 借助zookeeper
hadoop 0.2+ 1.0+ 不支持配置HA
** 借助keepalived + drbd
hadoop 2.0+ 支持配置HA
** 借助zookeeper
思考问题:
如何保证两台namenode服务器的元数据保持一致?
** 专业的存储设备: 比较昂贵
** NFS : 成本低、效率也比较低
** QJM (Quorum Journal Manager) 分布式日志系统
----Namenode HA部署-------------
目标: 防止单个Namenode宕机后,整个HDFS集群无法访问
规划:
blue01 blue02 blue03
Namenode Namenode
datanode datanode datanode
journalnode journalnode journalnode
zookeeper zookeeper zookeeper
** 备注:建议在配置前,把之前服务器配置备份一次,方便以后使用
$ cp -ra hadoop-2.5.0/ cluster-hadoop-2.5.0/
1、配置hdfs-site.xml(替换掉原来的内容)
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<!--声明集群名称-->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!--声明集群有几个namenode节点-->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>blue01.mydomain:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>blue02.mydomain:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>blue01.mydomain:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>blue02.mydomain:50070</value>
</property>
<!--声明journalnode集群服务器-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://blue01.mydomain:8485;blue02.mydomain:8485;blue03.mydomain:8485/mycluster</value>
</property>
<!--声明journalnode服务器数据存储目录-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/modules/hadoop-2.5.0/data/jn</value>
</property>
<!--访问代理类: client通过代理类访问active namenode -->
<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>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/tom/.ssh/id_rsa</value>
</property>
</configuration>
2、配置core-site.xml,修改如下属性 ----->替换
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
3、拷贝文件给其他服务器
$ rm -rf data/ --删除三台服务器的数据目录
$ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml blue02.mydomain:/opt/modules/hadoop-2.5.0/etc/hadoop/
$ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml blue03.mydomain:/opt/modules/hadoop-2.5.0/etc/hadoop/
4、启动服务
1、在各个JournalNode节点上,输入以下命令启动journalnode服务
$ sbin/hadoop-daemon.sh start journalnode
2、在[nn1]上,对其进行格式化,并启动
$ bin/hdfs namenode -format
$ sbin/hadoop-daemon.sh start namenode
3、在[nn2]上,同步nn1的元数据信息,并启动
$ bin/hdfs namenode -bootstrapStandby
$ sbin/hadoop-daemon.sh start namenode
4、查看每个服务器进程信息(如果有问题,就把datanode和zookeeper也启动起来)
在[nn1]上
$ jps
3796 JournalNode
3917 NameNode
在[nn2]上
$ jps
2910 JournalNode
3046 NameNode
打开浏览器:
http://192.168.122.128:50070/
http://192.168.122.130:50070/
** 此时两个namenode都是standby
5、手动把nn1设置为active
$ bin/hdfs haadmin -transitionToActive nn1
** 再次查看http://192.168.122.128:50070/,变为active
5、启动故障自动转移功能
** 借助zookeeper
** 选举某台namenode为active
** 监控namenode的状态信息
** 如果active的namenode宕机,zookeeper会自动切换服务器状态(standby-->active)
** zkfc (ZK Failover Controllers) 客户端程序
a)
在hdfs-site.xml文件里,添加如下属性:
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
PS:
1.dfs.ha.automatic-failover.enabled —– 启动自动failover。自动failover依赖于zookeeper集群和ZKFailoverController(ZKFC),
后者是一个zookeeper客户端,用来监控NN的状态信息。每个运行NN的节点必须要运行一个zkfc。
2.zkfc提供了下面的功能:
Health monitoring zkfc:定期对本地的NN发起health-check的命令,如果NN正确返回,那么这个NN被认为是OK的。否则被认为是失效节点。
ZooKeeper session management: 当本地NN是健康的时候,zkfc将会在zk中持有一个session。
如果本地NN又正好是active的,那么zkfc还有持有一个”ephemeral”的节点作为锁,一旦本地NN失效了,那么这个节点将会被自动删除。
ZooKeeper-based election: 如果本地NN是健康的,并且zkfc发现没有其他的NN持有那个独占锁。
那么他将试图去获取该锁,一旦成功,那么它就需要执行Failover,然后成为active的NN节点。Failover的过程是:第一步,对之前的NN执行fence,如果需要的话。第二步,将本地NN转换到active状态。
启动zkfc的方法如下:hadoop-daemon.sh start zkfc。不过,通过start-dfs.sh会自动启动该进程,一般无需手动起停。
b)
在core-site.xml里添加如下属性:
<property>
<name>ha.zookeeper.quorum</name>
<value>blue01.mydomain:2181,blue02.mydomain:2181,blue03.mydomain:2181</value>
</property>
c)
拷贝文件给后面两台服务器:
$ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml blue02.mydomain:/opt/modules/hadoop-2.5.0/etc/hadoop/
$ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml blue03.mydomain:/opt/modules/hadoop-2.5.0/etc/hadoop/
6、启动响应服务
1、关闭所有HDFS服务
在[nn1]执行:
$ sbin/stop-dfs.sh
2、启动三个节点上的zookeeper
3、初始化HA在Zookeeper中状态
在[nn1]执行:
$ bin/hdfs zkfc -formatZK
4、启动HDFS服务
在[nn1]执行:
$ sbin/start-dfs.sh
blue01:
6049 NameNode
7755 DataNode
7942 JournalNode
7441 QuorumPeerMain
8104 DFSZKFailoverController
blue02:
6856 DFSZKFailoverController
6486 QuorumPeerMain
6660 DataNode
6752 JournalNode
6591 NameNode
blue03:
5588 DataNode
5674 JournalNode
5492 QuorumPeerMain
7、测试观察
http://192.168.122.128:50070/ --active
http://192.168.122.130:50070/ --standby
模拟nn1故障:
杀掉nn1上面的namenode、关闭网卡 ...
$ kill -9 6049
通过浏览器观察nn2的状态 standby --> active
=================resourcemanager HA==================
hadoop 2.x
YARN HA部署:
目标: 防止单个resourcemanager宕机以后,整个YARN集群失效
zookeeper集群:
** 监控resourcemanager的状态[是否宕机]
** 故障转移
** 保存resourcemanager的状态信息
** 任务运行的状态(进度)
** 资源分配的状态
集群规划:
blue01 blue02 blue03
resourcenanager resourcenanager
nodemanager nodemanager nodemanager
zookeeper zookeeper zookeeper
----部署-------------
1.配置yarn-site.xml文件:
** 历史日志服务配置存在问题,需要调整(自己尝试)
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--启用resourcemanager ha-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定两台resourcemanager的cluster-id-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>blue02.mydomain</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>blue03.mydomain</value>
</property>
<!--指定zookeeper集群的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>blue01.mydomain:2181,blue02.mydomain:2181,blue03.mydomain:2181</value>
</property>
<!--启用自动恢复-->
<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>
<!--启用日志聚合功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--日志保存时间,单位秒-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
</configuration>
2.复制配置文件给其他服务
$ scp -r etc/hadoop/yarn-site.xml blue02.mydomain:/opt/modules/hadoop-2.5.0/etc/hadoop/
$ scp -r etc/hadoop/yarn-site.xml blue03.mydomain:/opt/modules/hadoop-2.5.0/etc/hadoop/
3.启动各个服务器的服务
** zookeeper
** HDFS
** resourcemanager和nodemanager
在blue02:
$ sbin/start-yarn.sh
在blue03:
$ sbin/yarn-daemon.sh start resourcemanager
4.测试:
** 检查状态
$ bin/yarn rmadmin -getServiceState rm1
active
$ bin/yarn rmadmin -getServiceState rm2
standby
** 运行一个jar包进行测试
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /input /output
** 在job运行的同时,把active服务器的resourcemanager进程杀掉,观察job任务运行状态
$ kill -9 8179
注意:会抛出如下异常,但是仍能得到正确的结果,想想为什么?
java.net.ConnectException: Call From blue02.mydomain/192.168.122.130 to blue02.mydomain:8032 failed on connection exception: java.net.ConnectException: 拒绝连接;
===================================================
PS:
面试题:
hadoop1 与 hadoop2 的区别?
1、hadoop1里没有yarn,jobtracker和tasktracker集成在mapreduce
hadoop2单独把任务管理和资源管理抽出来命名为yarn, resourcemanager和nodemanager
2、hadoop1里没有Namenode HA和resourcemanager HA,存在单点故障
3、hadoop2在性能和安全性方面有所加强
hadoop(HDFS)如何保证数据安全?
1、HDFS采用的是分布式架构,datanode数据存储采用block的形式,把文件存入分布式文件系统
2、每个block默认有3个副本,第一个副本本地机器,第二个副本放在同机架的不同服务器,第三个副本放置在不同机架的其他服务器
3、hdfs集群设计了safemode安全模式,当集群坏块太多,触发了阀值整个集群会进入安全模式,只能读,不能写;
启动过程中也会进入安全模式,等待datanode向namenode发送块报告和心跳
4、HDFS里面的文件也有类似linux系统的权限
5、针对HDFS和YARN的高可用,设计HA功能
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/276873
推荐阅读
article
Zookeeper
+
Hadoop
+
Spark
+
Flink
+
Kafka
+Hbase+
Hive
完全分布...
Hadoop
+
Spark
+
Flink
+
Zookeeper
+
Kafka
+Hbase+
Hive
完全
分布式
高可用集群搭建_如何...
赞
踩
article
hadoop
-
zookeeper
-
hive
-
flume
-
kafka
-
hbase
集群,解决登录报错,C...
1.克隆虚拟机之前清理垃圾[root@
hadoop
201 ~]# rm -rf anac
on
da-ks.cfg inst...
赞
踩
article
Hadoop
授权
令牌
解释(原标题
Hadoop
Delegation
Tokens
Explaine...
转载:https://blog.cloudera.com/hadoop-delegation-tokens-explai...
赞
踩
article
Hadoop
完全
分布式
搭建
(超详细)_
hadoop
基础全
分布式
环境
搭建
及应用...
到此为止,我们的
Hadoop
完全
分布式
就已经
搭建
完成啦!_
hadoop
基础全
分布式
环境
搭建
及应用
hadoop
基础全分...
赞
踩
article
【
Hadoop
】完全
分布式
集群
搭建_
hadoop
完全
分布式
集群
搭建...
一学就会,
Hadoop
完全
分布式
(
集群
)搭建_
hadoop
完全
分布式
集群
搭建
hadoop
完全
分布式
集群
搭建 ...
赞
踩
article
【
Hadoop
】_
hadoop
平台
...
1、
Hadoop
是一个适合海量数据的分布式存储和分布式计算的
平台
。HDFS:是一个分布式存储框架,适合海量数据存储Map...
赞
踩
article
Linux、
Spark
、Hadoop、Hbase、Hive、
kafka
...常用操作命令_hadoo...
Linux、
Spark
、Hadoop、Hbase、Hive、
kafka
...常用操作命令一、linux*shell命令二...
赞
踩
article
Hadoop
集群常用命令_usage:
hadoop
[--
config
confdir
] [com...
hadoop
常用命令命令格式[root@namenode0
hadoop
-common]#
hadoop
Usage:...
赞
踩
article
hadoop
启动
指令_
hadoop
单独
启动
datanode
命令...
start-all.sh
启动
所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、...
赞
踩
article
linux下
h
a
doop
集群常用命令_查看集群中/
wcinput
/
word
.
txt
文件
内容,用以下(...
1.上传
文件
1)
h
a
doop
fs -put
word
s.
txt
/p
a
th/to/input/ 2)h
dfs
dfs
...
赞
踩
article
Hadoop 跨
集群
访问
...
[原文地址]跨
集群
访问
发表于 2015-06-01 | 简单总结下跨
集群
访问
的多种方式。跨
集群
访问
HDFS直接给出HDF...
赞
踩
article
Hadoop
集群
间
访问
_
不同
的
hadoop
集群
可以互相
访问
吗?...
hadoop
distcphdfs://master1:9999/foo/barhdfs://master2:9999/b...
赞
踩
article
Hadoop
Dynamometer
工具
详细教程
,
填坑日记_
dynamometer
hadoop
...
Dynamometer
工具
使用步骤
Dynamometer
介绍准备"材料"原理注意事项流程1.fsimage2.hadoo...
赞
踩
article
Hadoop
2.7
.1 使用
minicluster
进行
单元测试
...
目的是要跑通这个
单元测试
:hadoop-hdfs/src/test/java/org/apache/hadoop/hdf...
赞
踩
article
《
Hadoop
-权威指南》阅读笔记
第三章
HDFS
分布式
文件
存储系统
...
多用户写入,任意修改
文件
HDFS
中的
文件
可能只有一个writer,而且写操作总是将数据添加在
文件
的末尾。它不支持具有多个...
赞
踩
article
hadoop
-
hdfs
运行原理_
hdfs
dfsadmin
-rollingupgrade prep...
发现了一个好文章,转给下方便自己看,大家最好去原文看。地址https://www.cnblogs.com/luengmi...
赞
踩
article
Hadoop
HDFS
深入解析_
dfs
.webh
dfs
.enabled...
文件系统早在 1965 年开发的 Multies ( UNIX 的前身)就详细地设计了文件系统,这使得文件系统成为多用户...
赞
踩
article
Hadoop
HDFS
概述_
hdfs
block
pool...
在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统。_h...
赞
踩
article
Hadoop
-
HDFS
核心知识笔记整理_
hdfs
中
索引
的
概念...
本文内容主要从《
Hadoop
技术内幕:深入解析
Hadoop
Common和
HDFS
架构设计与实现原理》一书
中
摘录总结成文...
赞
踩
article
大
数据
:
Hadoop
(
HDFS
的
设计
思路、
设计
目标、架构、
副本
机制、
副本
存放策略)......
一、
HDFS
的
设计
思路 1)思路切分
数据
,并进行多
副本
存储; 2)如果文件只以多
副本
进行存储,而不进行切分,会有什么问...
赞
踩
相关标签
hadoop
分布式
spark
flink
zookeeper
hive
hbase
mysql
linux
kafka
hdfs
1024程序员节
大数据
Hadoop