搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
羊村懒王
这个屌丝很懒,什么也没留下!
关注作者
热门标签
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
深入浅出 Kubernetes 项目网关与应用路由_kubesphere设置后端项目路由
2
头条巨量快手广点通等平台APP&API回传事件注册激活-转化联调-API对接原理代码分析和功能实现_快手注册 api
3
什么是数据库的事务???_数据库中b是啥子
4
锁开销和上下文切换开销_线程上下文切换开销
5
如何在鼠标点击指定元素以外的元素时 触发事件
6
leetcode 30. Substring with Concatenation of All Words_30.聽substring with concatenation of all words
7
通用Sql返回自增长insert后的id_sql insert 返回生成的id
8
redis中scan使用之java(api)和scala(api)_jedispoolutil.scan
9
Jetpack 架构组件你了解多少?_jetpack组件
10
macOS 中 Cornerstone 的"Clean"操作和终端的"svn cleanup"命令无效了怎么办?_cornerstone clean up
当前位置:
article
> 正文
Zookeeper_nn2 active
作者:羊村懒王 | 2024-03-20 23:51:48
赞
踩
nn2 active
====zookeeper==============================================
ZooKeeper -- 动物园管理员
hadoop -- 大象
Hive -- 蜜蜂
pig -- 猪
HBase -- 马
...
** apache的顶级开源项目
** zookeeper.apache.org
** 开源、分布式集群
** 服务器数量是2n+1,允许服务器宕机个数为n(不影响整个集群的功能) 3台 5台 7台
** 为分布式应用提供协调服务
** 选举算法:
** 活动的投票数量过半就是leader
** 正常情况下,集群会选择出一个leader服务器,其他服务器角色是follower
zookeeper功能:
** 配置管理(Configuration Management)
** 集群管理(Group Membership)
** 共享锁(Locks)/同步锁
** 统一命名服务(Name Service)
角色:
leader : 做决定、做决策
follower : 接受客户端请求, 投票
====zookeeper安装=======================
1、解压
$ tar zxvf /opt/softwares/zookeeper-3.4.5.tar.gz
2、修改配置文件
$ mkdir /opt/modules/zookeeper-3.4.5/zkData
$ cp -a zoo_sample.cfg zoo.cfg
修改:dataDir=/opt/modules/zookeeper-3.4.5/zkData
3、启动
$ bin/zkServer.sh start
$ bin/zkServer.sh status
----zookeeper集群-----------------
规划:
blue01 blue02 blue03
zookeeper zookeeper zookeeper
清理:
1.停止服务
$ bin/zkServer.sh stop
2.重建zkData目录
$ rm -rf zkData
$ mkdir zkData
配置:
1、配置zoo.cfg
dataDir=/opt/modules/zookeeper-3.4.5/zkData
同时添加下面三条:(2888端口用来通讯,3888用来选举)
server.1=192.168.122.128:2888:3888
server.2=192.168.122.130:2888:3888
server.3=192.168.122.131:2888:3888
2、在zkData目录下添加myid文件 (注意:一定要在linux里创建)
$ vi zkData/myid
1
3、把zookeeper目录拷贝给其他集群服务器
$ scp -r zookeeper-3.4.5/ blue02.mydomain:/opt/modules/
$ scp -r zookeeper-3.4.5/ blue03.mydomain:/opt/modules/
4、修改另外两条机器的myid文件
blue02 为 2
blue03 为 3
5、依次启动所有集群服务
$ bin/zkServer.sh start
$ bin/zkServer.sh status
=========================================================================
冷备:实时或者周期性从业务服务器备份重要数据,
当该业务服务器宕机时,手动启动备份服务器
** 业务切换间隔时间比较长
热备:实时备份业务服务器备份重要数据,
当该业务服务器宕机时,集群会自动切换业务服务器,从而替换掉宕机的服务器
** 业务切换间隔时间比较短(秒级)
====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/tmm/.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.zkfs提供了下面的功能:
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 与 hadoop 2 的区别?
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/羊村懒王/article/detail/276868
推荐阅读
article
DDSP
-
SVC
-
3.0
完全指南:一步步教你用AI
声音
开启音乐之旅_
ddsp
svc怎么
训练
新
模型
...
本教程教你怎么使用工具
训练
数据集推理出你想要转换的
声音
音频,并且教你处理剪辑伴奏和
训练
后的音频合并一起,快来试试看把!要...
赞
踩
article
python3
做
微信
小
程序
自动化测试...
python3
做
微信
小
程序
自动化测试_
微信
小
程序
自动化测试
微信
小
程序
自动化测试 ...
赞
踩
article
Altium
AD20
常用
的
操作
快捷键
,
个人总结精炼版
,
全干货超实用_
ad20
快捷键
...
器件摆放、选择、单位左键长按选中+Space:器件旋转左键长按选中+x:左右翻转左键长按选中+y:上下翻转Shift+T...
赞
踩
article
Android
开发
之
自定义
控件
属性
篇(
Kotlin
)_
kotlin
自定义
属性
...
自定义
属性
篇以前在用Java
开发
的时候就想写个教程,心想在自己头上的阵地还没完全失守之前,总得给后来者传授点经验,装逼也...
赞
踩
article
cocos
creator
2.43 通过cc.
assetManager
.
loadBundle
动态加...
1.选中
预制
体资源文件夹,并在属性检查器窗口中勾选 『配置为Bundle』,然后点击应用 Bundle名默认为文件夹名,...
赞
踩
article
从失望到精通:
AI
大
模型
的掌握与运用
技巧
_
如何
学习
ai
大
模型
...
曾经有一批强
大
的
AI
模型
摆在我面前,我却未曾珍惜,知道发现别人能够轻松驾驭它发挥巨
大
价值,才后悔莫及,如果上天给我重...
赞
踩
article
滑动
窗口
算法
详解(
LeetCode
题目归纳+
代码
模板+
代码
实现+个人感悟)_
matlab
使用
滑动
窗口
...
初步掌握
滑动
窗口
算法
思想,并动手做题实践!_
matlab
使用
滑动
窗口
找子
序列
matlab
使用
滑动
窗口
找子
序列
...
赞
踩
article
人工智能
大
语言
模型
微调
技术:
SFT
监督
微调
、
LoRA
微调
方法、P-
tuning
v2
微调
方法、...
人工智能
大
语言
模型
微调
技术:
SFT
监督
微调
、
LoRA
微调
方法、P-
tuning
v2
微调
方法、
Freeze
监督微...
赞
踩
article
Airtest
从入门
到
放弃?不要急
,
这份免费
的
“超长”攻略请收好
!
_
airtest
官网
...
此文章来源于项目官方公众号:“
Airtest
Project”版权声明:允许转载
,
但转载必须保留原链接;请勿用作商业或者非...
赞
踩
article
基于
SpringBoot
+
Vue
+
uniapp
微信小
程序
的
二手物品
交易平台的详细设计和实现...
基于
SpringBoot
+
Vue
+
uniapp
微信小
程序
的
二手物品
交易平台的详细设计和实现基于
SpringBoot
+Vu...
赞
踩
article
项目
中
疑难
Crash
问题
集锦...
iOS App运行
中
遇到
Crash
的情况相信大家都遇到过,开发和者测试
中
遇到了可能很方便的办法就是直接拿着设备连接一下,...
赞
踩
article
大
模型
LLM-
微调
经验分享&总结_
大
模型
预
训练
和
微调
技术
及心得...
模型
越
大
对显卡的要求越高,目前主流对
大
模型
进行
微调
方法有三种:Freeze方法、P-Tuning方法和Lora方法。笔者...
赞
踩
article
python
创意
小作品-
Python
竟能画这么漂亮
的
花
,
帅呆了
(代码分享)...
阅读本文大概需要3分钟关于函数和模块讲了这么久,我一直想用一个好玩有趣
的
小例子来总结一下,同时也作为实战练习一下。趣味编...
赞
踩
article
荣耀
80
系列,折叠手机
magic
Vs
安装
套件
谷歌
服务框架,GMS,Google
Play
商店_
荣耀
...
荣耀
已经发布了
荣耀
80
,
荣耀
80
Pro,
荣耀
80
se,
荣耀
折叠手机
magic
Vs。拿到手已经知道
荣耀
80
系列的
谷歌
...
赞
踩
article
Flutter
移动框架_
google
移动框架
flutter
...
自己最近花了点时间看了下这个框架,比RN流畅。环境搭建就不说了,网上多的是,本人也就整理了几个常用的命令,最主要请看掘...
赞
踩
article
mac
电脑安装
Android
studio
_
mac
android
studio
...
1.安装
Android
studio
在官网下载安装包https://developer.
android
.google.c...
赞
踩
article
大
语言
模型
Lora
参数
微调
过程(附完整
代码
)
_
lora
微调
代码
...
大
语言
模型
微调
过程
_
lora
微调
代码
lora
微调
代码
这是一个金...
赞
踩
article
深圳
牵头
打造
鸿蒙
原生
应用软件
生态
| 百能云芯...
此外,计划还包括建设2家以上以
鸿蒙
原生
应用软件
开发为主的专业产业园,培育1000多家具有
鸿蒙
开发人才资质的软件企业,推动...
赞
踩
article
使用
LoRA
在 vi
ggo
数据集上
微调
Microsoft
phi
-2 小语言模型_
phi
...
接下来,我们将看到有关如何
使用
HuggingFace 中的
phi
-2 进行提示的分步 Python 代码,然后我们将...
赞
踩
article
自动化
脚本
编程
框架(
代码
篇)_
自动化
编程
代码
...
以C语言为例,介绍一套
脚本
自动化
编程
框架,用于整合这些紊乱的
编程
风格,让
代码
更有可读性,使得
脚本
程序
代码
无论是执行流程还...
赞
踩
相关标签
人工智能
微信小程序
小程序
pcb
硬件
altium
ad pcb
kotlin
android
开发语言
javascript
canvas
算法
leetcode
c++
自然语言处理
大语言模型
LoRA
SFT
P-tuning V2
Freeze
python
Airtest
spring boot
vue.js