搜索
查看
编辑修改
首页
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
硬件工程师成长之路(3)——PCB设计_硬件pcb学习教程
2
学习Vue前所一定要知道的事?怎么学?推荐教程?_学习vue之前要学习什么
3
MySQL主从延迟问题排查_查询从库耗时吗
4
Java测试类的编写与使用_java测试类怎么写
5
HTML简易的用户名密码登录页面_艾孜尔江撰_简单账号密码登陆页面html代码
6
HBase数据一致性和容错_hbase支持哪种类型的数据一致性?
7
python open函数文本操作详解_python open wt
8
阿里云代理仓库地址
9
出现INSTALL_FAILED_UPDATE_INCOMPATIBLE错误原因_the application could not be installed: install_fa
10
【精华】AIGC之大语言模型及实践应用_aigc大语言模型模型文件
当前位置:
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博客】
推荐阅读
article
Python
办公自动化
,
有效
告别
繁琐操作
,
955不是梦
,
建议
收藏!...
Python
办公自动化
,
有效
告别
繁琐操作
,
955不是梦
,
建议
收藏!
Python
办公自动化
,
有效
告别
繁琐操作
,
955不是梦...
赞
踩
article
苹果笔记本
android
studio
安装
教程,MAC
下
如何
安装
AndroidStudio
_andr...
7、接
下
来显示的是刚才勾选的配置设置,如若无误,点击 finish, 如果需要修改点击 Previous。9、至此,软件...
赞
踩
article
2022最新手机设备标识码(
IMEI
、
MEID
、
UDID
、
UUID
、
ANDROID
_ID、GAID、...
将获取的
UUID
永久存储在设备的KeyChain中,这个方法在应用第一次启动时,将获取的
UUID
存储进KeyChain中...
赞
踩
article
ios
开发
之
crash
日志
收集,以及分析...
2019独角兽企业重金招聘Python工程师标准>>> ..._如何收集
ios
crash
信息如...
赞
踩
article
【
Tools
】
CCS
v4的
工程
怎么用
CCS
5.5
.0打开?_
ccs
的
project
下没有impo...
一、
CCS
5.5
.0导不进
CCS
v4
工程
首先在网上找到如下的操作,但是不行。点击任务栏---projet;下面有"imp...
赞
踩
article
4、
HBase
分布式
数据库
_
hbasefilestream
...
一、
HBase
定义
HBase
是一个高可靠性、高性能、面向列、可伸缩的
分布式
存储系统。适合于存储大表数据(表的规模可...
赞
踩
article
playwright
基础教程
_
playwright
教程...
1、使用 Playwright 的录制功能来自动生成测试脚本。Playwright 提供了一个录制工具,可以在浏览器中执...
赞
踩
article
2
0
2
10
3
17_
2
3
期_集成
学习
(上)_
Task0
2
_
sklearn
构建完整
机器
学习
模型
_用
py
计...
二、Sklearn构建完整
机器
学习
模型
目录二、Sklearn构建完整
机器
学习
模型
来源
2
.1
机器
学习
项目通常步骤
2
.
2
...
赞
踩
article
一文速览
深度
伪造
检测
(
Detection
of
Deepfakes
):未来技术的
守门人
_深伪
检测
...
在数字化时代的高速公路上,
深度
伪造技术(Deepfake)如同一辆无人驾驶的跑车,其速度惊人,潜力巨大,同时也带来了潜在...
赞
踩
article
解决
xcode
运行
不了
iPhone
15
iOS
17.1
设备的问题
_
xcode
不能
运行
...
最近要查看一下ios
17.1
的设备的性能,但是当前版本的Xcode
运行
不了。
_
xcode
不能
运行
xcode
不能
运行
...
赞
踩
article
cocos
构建
Android
项目
Android
studio
gradle
8.0 报错_nam...
记录一下踩坑 今天用
cocos
构建 了一个
Android
项目 然后用
Android
studio
打开 TestPro...
赞
踩
article
AD软件——把
原理
图
库
和
PCB
元件
库
封装
模型
关联起来_ad中
pcb
库
与
原理
图
库
关联...
S1:
原理
图
库
-> Properties(属性) -> Parameters(参数) -> Add -> Footpr...
赞
踩
article
j
a
v
a
的
优先级
队列
PriorityQueue
_
priorityqueue
q =...
介绍J
a
v
a
中
PriorityQueue
通过二叉小顶堆实现,可以用一棵完全二叉树表示。一个基于
优先级
堆的无界
优先级
队列。...
赞
踩
article
关于
nodejs
的
npm
命令
无
反应
的
解决方案
_
npm
命令
不返回任何内容...
如果你是在安装cordova
的
时候可能会出现参考了网上
的
博主文章总结下来: 1,
npm
命令
完全无
反应
,不是加载
的
状态,而...
赞
踩
article
camel
-
Case
(骆驼
拼写法
)_
camel
case...
camel
Case
camel
Case
叫做“骆驼
拼写法
”,是指在英语中,依靠单词的大小写拼写复合词的做法。中文名骆驼拼写...
赞
踩
article
Spring
Boot
+java基于vue的房源
房产
房屋
中介
系统
q0s34_springboot+v...
在软件开发过程中,解决技术问题使用的方法是文献法,通过查阅图书馆资料和网络在线文献等,解决在软件开发过程中的技术问题,比...
赞
踩
article
IDEA
插件
系列(
1
)
CamelCase
插件
——驼峰
转换
...
CamelCase
插件
。在 kebab-case、SNAKE_CASE、PascalCase、camelCase、sna...
赞
踩
article
Python
Apex
YOLO
V5
6.2
目标
检测 全过程记录_
apex
ai
自瞄...
博文目录本来是打算照着B站教程从Yolov5-5.0开始的, 依赖安装好后, 在运行的时候有一堆报错, 解决一个又出一个...
赞
踩
article
【
分布式
训练
】基于
Pytorch
的
分布式
数据
并行
训练
_
pytorch
并行
训练
...
加速神经网络
训练
的最简单方法是使用GPU,它在神经网络中常见的计算类型(矩阵乘法和加法)上提供了比CPU更大的加速。随着...
赞
踩
article
使用
pnpm
搭建
monorepo
项目...
在软件开发中,随着项目的逐渐庞大和复杂化,管理多个相关联的代码库就变成了一项挑战。这时,Monorepo(单体代码仓)应...
赞
踩
相关标签
python
excel
开发语言
数据分析
自动化
android studio
android
java
移动开发
操作系统
xcode
HBase 分布式数据库
自动化测试
单元测试
职场和发展
程序人生
程序员
机器学习
笔记
人工智能
网络安全
pytorch
深度学习
图像处理