ZooKeeper

史上最强zookeeper详解 Zookeeper 1、Zookeeper快速入门 1.1、Zookeeper 概述 Zookeeper 是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理数据,接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。 1.2、Zookeeper 的特点 1):Zookeeper :一个领导者 (Leader),多个跟随者 (Follower)组成的集群。 2):集群中只要有半数以上节点存活,Zookeeper 阅读详情

Zookeeper

什么是Zookeeper?

◆ Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务

◆ 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等
这里写图片描述

为什么使用Zookeeper?

◆ 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
◆ 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制
◆ 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
◆ ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用

Zookeeper能帮我们做什么?

◆ Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等.
◆ HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.

ZooKeeper 安装步骤

1.上传zk安装包

2.解压

3.配置(先在一台节点上配置)

3.1添加一个zoo.cfg配置文件
$ZOOKEEPER/conf
mv zoo_sample.cfg zoo.cfg

3.2修改配置文件(zoo.cfg)
dataDir=/home/hadoop/opt/modules/zookeeper-3.4.5/data

server.1=master:2888:3888
server.2=slave01:2888:3888
server.3=slave02:2888:3888

3.3在(dataDir=/home/hadoop/opt/modules/zookeeper-3.4.5/data)创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)
echo “1” > myid

3.4将配置好的zk拷贝到其他节点

scp -r /home/hadoop/opt/modules/zookeeper-3.4.5/ slave01:/home/hadoop/opt/modules/
scp -r /home/hadoop/opt/modules/zookeeper-3.4.5/ salve02:/home/hadoop/opt/modules/

3.5注意:在其他节点上一定要修改myid的内容
在slave01应该讲myid的内容改为2 (echo “2” > myid)
在slave02应该讲myid的内容改为3 (echo “3” > myid)

4.启动集群
分别启动zk
./zkServer.sh start

Zookeeper的特性

◆ Zookeeper是简单的
◆ Zookeeper是富有表现力的
◆ Zookeeper具有高可用性
◆ Zookeeper采用松耦合交互方式
◆ Zookeeper是一个资源库

zookeeper的最主要功能

1、保管客户端提交的数据(极其少量的数据)
每一份数据在zookeeper叫做一个znode
znode之间形成一种树状结构(类似于文件树)
比如:
/lock(znode名) host001(znode中存的数据)

/lock/last_acc(znode名) host008(znode中存的数据)

zookeeper的配置

zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg。其中各配置项的含义,解释如下:

1.tickTime:CS通信心跳时间
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000

2.initLimit:LF初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5

3.syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2

4.dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/home/michael/opt/zookeeper/data

5.clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181

6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B

server.1=master:2888:3888
server.2=slave01:2888:3888
server.3=slave02:2888:3888

Zookeeper的数据模型

◆ 层次化的目录结构,命名符合常规文件系统规范
◆ 每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
◆ 节点Znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点
◆ Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本
◆ 客户端应用可以在节点上设置监视器
◆ 节点不支持部分读写,而是一次性完整读写

Zookeeper的节点

◆ Znode有两种类型,短暂的(ephemeral)和持久的(persistent)
◆ Znode的类型在创建时确定并且之后不能再修改
◆ 短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点
◆ 持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除
◆ Znode有四种形式的目录节点,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL

Zookeeper的角色

◆ 领导者(leader),负责进行投票的发起和决议,更新系统状态
◆ 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票
◆ Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度
◆ 客户端(client),请求发起方

Zookeeper的顺序号

◆ 创建znode时设置顺序标识,znode名称后会附加一个值
◆ 顺序号是一个单调递增的计数器,由父节点维护
◆ 在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

Zookeeper的读写机制

◆ Zookeeper是一个由多个server组成的集群
◆ 一个leader,多个follower
◆ 每个server保存一份数据副本
◆ 全局数据一致
◆ 分布式读写
◆ 更新请求转发,由leader实施

Zookeeper的保证

◆ 更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行
◆ 数据更新原子性,一次数据更新要么成功,要么失败
◆ 全局唯一数据视图,client无论连接到哪个server,数据视图都是一致的
◆ 实时性,在一定事件范围内,client能读到最新数据

Zookeeper工作原理

◆ Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。
◆ 一旦leader已经和多数的follower进行了状态同步后,他就可以开始广播消息了,即进入广播状态。这时候当一个server加入zookeeper服务中,它会在恢复模式下启动,发现leader,并和leader进行状态同步。待到同步结束,它也参与消息广播。Zookeeper服务一直维持在Broadcast状态,直到leader崩溃了或者leader失去了大部分的followers支持。
◆ 广播模式需要保证proposal被按顺序处理,因此zk采用了递增的事务id号(zxid)来保证。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64为的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch。低32位是个递增计数。
◆ 当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的server都恢复到一个正确的状态。

Leader选举

◆ 每个Server启动以后都询问其它的Server它要投票给谁。
◆ 对于其他server的询问,server每次根据自己的状态都回复自己推荐的leader的id和上一次处理事务的zxid(系统启动时每个server都会推荐自己)
◆ 收到所有Server回复以后,就计算出zxid最大的哪个Server,并将这个Server相关信息设置成下一次要投票的Server。
◆ 计算这过程中获得票数最多的的sever为获胜者,如果获胜者的票数超过半数,则改server被◆ 选为leader。否则,继续这个过程,直到leader被选举出来。
◆ leader就会开始等待server连接
◆ Follower连接leader,将最大的zxid发送给leader
◆ Leader根据follower的zxid确定同步点
◆ 完成同步后通知follower 已经成为uptodate状态
◆ Follower收到uptodate消息后,又可以重新接受client的请求进行服务了

这里写图片描述

这里写图片描述


ZooKeeper典型应用场景

ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将结合作者身边的项目例子,系统地对ZK的应用场景进行一个分门归类的介绍。
值得注意的是,ZK并非天生就是为这些应用场景设计的,都是后来众多开发者根据其框架的特性,利用其提供的一系列API接口(或者称为原语集),摸索出来的典型使用方法。

数据发布与订阅(配置中心)

发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。

• 应用中用到的一些配置信息放到ZK上进行集中管理。这类场景通常是这样:应用在启动的时候会主动来获取一次配置,同时,在节点上注册一个Watcher,这样一来,以后每次配置有更新的时候,都会实时通知到订阅的客户端,从来达到获取最新配置信息的目的。
• 分布式搜索服务中,索引的元信息和服务器集群机器的节点状态存放在ZK的一些指定节点,供各个客户端订阅使用。
• 分布式日志收集系统。这个系统的核心工作是收集分布在不同机器的日志。收集器通常是按照应用来分配收集任务单元,因此需要在ZK上创建一个以应用名作为path的节点P,并将这个应用的所有机器ip,以子节点的形式注册到节点P上,这样一来就能够实现机器变动的时候,能够实时通知到收集器调整任务分配。
• 系统中有些信息需要动态获取,并且还会存在人工手动去修改这个信息的发问。通常是暴露出接口,例如JMX接口,来获取一些运行时的信息。引入ZK之后,就不用自己实现一套方案了,只要将这些信息存放到指定的ZK节点上即可。
注意:在上面提到的应用场景中,有个默认前提是:数据量很小,但是数据更新可能会比较快的场景。

负载均衡

这里说的负载均衡是指软负载均衡。在分布式环境中,为了保证高可用性,通常同一个应用或同一个服务的提供方都会部署多份,达到对等服务。而消费者就须要在这些对等的服务器中选择一个来执行相关的业务逻辑,其中比较典型的是消息中间件中的生产者,消费者负载均衡。

消息中间件中发布者和订阅者的负载均衡,linkedin开源的KafkaMQ和阿里开源的metaq都是通过zookeeper来做到生产者、消费者的负载均衡。这里以metaq为例如讲下:
生产者负载均衡:metaq发送消息的时候,生产者在发送消息的时候必须选择一台broker上的一个分区来发送消息,因此metaq在运行过程中,会把所有broker和对应的分区信息全部注册到ZK指定节点上,默认的策略是一个依次轮询的过程,生产者在通过ZK获取分区列表之后,会按照brokerId和partition的顺序排列组织成一个有序的分区列表,发送的时候按照从头到尾循环往复的方式选择一个分区来发送消息。
消费负载均衡:
在消费过程中,一个消费者会消费一个或多个分区中的消息,但是一个分区只会由一个消费者来消费。MetaQ的消费策略是:
• 每个分区针对同一个group只挂载一个消费者。
• 如果同一个group的消费者数目大于分区数目,则多出来的消费者将不参与消费。
• 如果同一个group的消费者数目小于分区数目,则有部分消费者需要额外承担消费任务。
在某个消费者故障或者重启等情况下,其他消费者会感知到这一变化(通过 zookeeper watch消费者列表),然后重新进行负载均衡,保证所有的分区都有消费者进行消费。

命名服务(Naming Service)

命名服务也是分布式系统中比较常见的一类场景。在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。被命名的实体通常可以是集群中的机器,提供的服务地址,远程对象等等——这些我们都可以统称他们为名字(Name)。其中较为常见的就是一些分布式服务框架中的服务地址列表。通过调用ZK提供的创建节点的 API,能够很容易创建一个全局唯一的path,这个path就可以作为一个名称。

阿里巴巴集团开源的分布式服务框架Dubbo中使用ZooKeeper来作为其命名服务,维护全局的服务地址列表,
点击这里查看Dubbo开源项目。在Dubbo实现中:

服务提供者在启动的时候,向ZK上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址,
这个操作就完成了服务的发布。
服务消费者启动的时候,订阅/dubbo/${serviceName}/providers目录下的提供者URL地址, 
并向/dubbo/${serviceName} /consumers目录下写入自己的URL地址。
注意,所有向ZK上注册的地址都是临时节点,这样就能够保证服务提供者和消费者能够自动感应资源的变化。
另外,Dubbo还有针对服务粒度的监控,方法是订阅/dubbo/${serviceName}目录下所有提供者和消费者的信息。

分布式通知/协调

ZooKeeper中特有watcher注册与异步通知机制,能够很好的实现分布式环境下不同系统之间的通知与协调,实现对数据变更的实时处理。使用方法通常是不同系统都对ZK上同一个znode进行注册,监听znode的变化(包括znode本身内容及子节点的),其中一个系统update了znode,那么另一个系统能够收到通知,并作出相应处理

• 另一种心跳检测机制:检测系统和被检测系统之间并不直接关联起来,而是通过zk上某个节点关联,大大减少系统耦合。
• 另一种系统调度模式:某系统有控制台和推送系统两部分组成,控制台的职责是控制推送系统进行相应的推送工作。管理人员在控制台作的一些操作,实际上是修改了ZK上某些节点的状态,而ZK就把这些变化通知给他们注册Watcher的客户端,即推送系统,于是,作出相应的推送任务。
• 另一种工作汇报模式:一些类似于任务分发系统,子任务启动后,到zk来注册一个临时节点,并且定时将自己的进度进行汇报(将进度写回这个临时节点),这样任务管理者就能够实时知道任务进度。
总之,使用zookeeper来进行分布式通知和协调能够大大降低系统之间的耦合

集群管理与Master选举

• 集群机器监控:这通常用于那种对集群中机器状态,机器在线率有较高要求的场景,能够快速对集群中机器变化作出响应。这样的场景中,往往有一个监控系统,实时检测集群机器是否存活。过去的做法通常是:监控系统通过某种手段(比如ping)定时检测每个机器,或者每个机器自己定时向监控系统汇报“我还活着”。 这种做法可行,但是存在两个比较明显的问题:
1. 集群中机器有变动的时候,牵连修改的东西比较多。
2. 有一定的延时。

利用ZooKeeper有两个特性,就可以实时另一种集群机器存活性监控系统:
1. 客户端在节点 x 上注册一个Watcher,那么如果 x?的子节点变化了,会通知该客户端。
2. 创建EPHEMERAL类型的节点,一旦客户端和服务器的会话结束或过期,那么该节点就会消失。

例如,监控系统在 /clusterServers 节点上注册一个Watcher,以后每动态加机器,那么就往 /clusterServers 下创建一个 EPHEMERAL类型的节点:/clusterServers/{hostname}. 这样,监控系统就能够实时知道机器的增减情况,至于后续处理就是监控系统的业务了。
• Master选举则是zookeeper中最为经典的应用场景了。
在分布式环境中,相同的业务应用分布在不同的机器上,有些业务逻辑(例如一些耗时的计算,网络I/O处理),往往只需要让整个集群中的某一台机器进行执行,其余机器可以共享这个结果,这样可以大大减少重复劳动,提高性能,于是这个master选举便是这种场景下的碰到的主要问题。
利用ZooKeeper的强一致性,能够保证在分布式高并发情况下节点创建的全局唯一性,即:同时有多个客户端请求创建 /currentMaster 节点,最终一定只有一个客户端请求能够创建成功。利用这个特性,就能很轻易的在分布式环境中进行集群选取了。
另外,这种场景演化一下,就是动态Master选举。这就要用到?EPHEMERAL_SEQUENTIAL类型节点的特性了。
上文中提到,所有客户端创建请求,最终只有一个能够创建成功。在这里稍微变化下,就是允许所有请求都能够创建成功,但是得有个创建顺序,于是所有的请求最终在ZK上创建结果的一种可能情况是这样:
/currentMaster/{sessionId}-1 ,?/currentMaster/{sessionId}-2 ,?/currentMaster/{sessionId}-3 ….. 每次选取序列号最小的那个机器作为Master,如果这个机器挂了,由于他创建的节点会马上小时,那么之后最小的那个机器就是Master了。
• 在搜索系统中,如果集群中每个机器都生成一份全量索引,不仅耗时,而且不能保证彼此之间索引数据一致。因此让集群中的Master来进行全量索引的生成,然后同步到集群中其它机器。另外,Master选举的容灾措施是,可以随时进行手动指定master,就是说应用在zk在无法获取master信息时,可以通过比如http方式,向一个地方获取master。
• 在Hbase中,也是使用ZooKeeper来实现动态HMaster的选举。在Hbase实现中,会在ZK上存储一些ROOT表的地址和 HMaster的地址,HRegionServer也会把自己以临时节点(Ephemeral)的方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的存活状态,同时,一旦HMaster出现问题,会重新选举出一个HMaster来运行,从而避免了 HMaster的单点问题

分布式队列

队列方面,简单地讲有两种,一种是常规的先进先出队列,另一种是要等到队列成员聚齐之后的才统一按序执行。对于第一种先进先出队列,和分布式锁服务中的控制时序场景基本原理一致,这里不再赘述。
第二种队列其实是在FIFO队列的基础上作了一个增强。通常可以在 /queue 这个znode下预先建立一个/queue/num 节点,并且赋值为n(或者直接给/queue赋值n),表示队列大小,之后每次有队列成员加入后,就判断下是否已经到达队列大小,决定是否可以开始执行了。这种用法的典型场景是,分布式环境中,一个大任务Task A,需要在很多子任务完成(或条件就绪)情况下才能进行。这个时候,凡是其中一个子任务完成(就绪),那么就去 /taskList 下建立自己的临时时序节点
(CreateMode.EPHEMERAL_SEQUENTIAL),当 /taskList 发现自己下面的子节点满足指定个数,就可以进行下一步按序进行处理了。

hbase 访问zookeeper的问题 坑 1、 Configuration config = HBaseConfiguration.create(); 书上说是会自动加载hbase-site.xml里面配置的zookeeper 配置 但是实际上是访问的是localhost本地的zookeeper2181端口 2、因此如果本地不是zookeeper server 的话就无法访问hbase 了 3、解决办法通过参数传给程序 例子: 阅读详情

相关推荐

【ANSYS APDL】提取结构刚度矩阵完整过程--附Python代码实现

ANSYS的结构刚度矩阵提取中一些操作技巧

m0_61038364的博客 1万+

zookeeper安装以及使用

1、zookeeper简介zookeeper(以下简称ZK)是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop、Hbase、Kafka、Jstorm等开源软件的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZK的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功......

燕少江湖 3万+

ZYNQ千兆网UDP通信实战:从Vivado配置到LWIP优化全流程(附避坑指南)

本文详细介绍了在ZYNQ平台上实现千兆以太网UDP通信的全流程,包括Vivado硬件配置、LWIP协议栈优化及实战代码示例。通过关键参数调整和性能优化,系统吞吐量可提升至850Mbps以上,适用于高速网络通信场景。

weixin_29161785的博客 232

zookeeper快速入门一:zookeeper安装与启动

本文是《zookeeper你想要的全都有系列》之快速入门中的第一篇,欢迎大家观看与指出不足。 写在前面: 不影响教程,笔者安装zookeeper用的是WSL(windows下的linux子系统),当然你想直接在windows上用zookeeper也是可以的。 如果你也想用wsl,可以参考这篇文章Windows10安装Linux系统(WSL) 目录 一、zookeeper下载 二、安装zookeeper 三、linux下启动zookeeper 四、windows下启动zookeeper 进入

马不腾的博客 4万+

fNIRS 公开数据集整理

关注“心仪脑”查看更多脑科学知识的分享。 关键词:数据整理、fNIRS 之前我们向大家推送了 Public Neuroscience Dataset 系列主题的第一期:《EEG公开数据集》,我们同时意识到大家对于神经科学公开数据集的需求。本期是该系列主题的第二期,我们在延续第一期初衷的基础上,整理了功能性近红外光谱(fNIRS)技术的公开数据集。 fNIRS 是一种非侵入性、便携且价格低廉的光学神经成像技术,它具有可观的空间和时间分辨率。因fNIRS技术问世较EEG晚了许多,所以应用此技术开展研究发.

psybrain的博客 4272

基于ENVI5.6与SARscape的哨兵一号时序InSAR实战:从数据准备到PS/SBAS结果解译

本文详细介绍了基于ENVI5.6与SARscape软件,利用哨兵一号(Sentinel-1)卫星数据,进行PS-InSAR与SBAS-InSAR时序分析,以监测地表形变的完整实战流程。内容涵盖从数据下载、软件配置、预处理、核心处理步骤到结果解译与质量评估,重点解析了PS与SBAS方法的关键参数设置、常见问题及解决方案,旨在帮助用户掌握从数据准备到成果分析的完整技术链条。

oo7890的博客 636

Zookeeper详解(最详细的zookeeper解析+项目实例)

zooKeeper 是一个开放源码的分布式协调服务,主要为了解决分布式架构下数据一致性问题, 它是集群的管理者, 监视着集群中各个节点的状态,根据节点提交的反馈进行下一步合理操作。 最终, 将简单易用的接口和性能高效、 功能稳定的系统提供给用户

weixin_64105389的博客 2万+

一个中科大差生的8年程序员工作总结

今年终于从大菊花厂离职了,离职前收入大概60w不到吧,在某乎属于比较差的,今天终于有空写一下自己的职场故事,也算是给自己近8年的程序员工作做个总结复盘。近8年有些事情做对了,也有更多事情做错了,在这里记录一下,希望能够给后人一些帮助吧,也欢迎私信交流。文笔不好,见谅,有些细节记不清了,如果有出入,就当是我编的这个故事吧。 PS:有几个问题先在这里解释一下,评论就不一一回复了 1、关于差生,我本人在科大时确实成绩偏下,差生主要讲这一点,没其他意思。 2、因为买房是我人生中的大事,我认为需要记录和总结一下

陈小房的自我修炼 5万+

Zookeeper简单使用

Zookeeper 1)初识 Zookeeper 1.1)Zookeeper概念 •Zookeeper 是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务。 •Zookeeper 翻译过来就是 动物园管理员,他是用来管 Hadoop(大象)、Hive(蜜蜂)、Pig(小 猪)的管理员。简称zk •Zookeeper 是一个分布式的、开源的分布式应用程序的协调服务。 •Zookeeper 提供的主要功能包括: •配置管理 •分布式锁 •集群管理 2)ZooKeeper 安装与配置 2.

1663988740 840

DeepLabv3+改进68:全网首发-添加DBlock模块 |高效且鲁棒的多任务低光图像修复神经网络

本文提出了一种高效鲁棒的多任务低光图像修复神经网络DarkIR,针对夜间或昏暗条件下图像存在的噪点、光线不足和模糊问题。不同于现有方法分别处理去模糊和低光增强任务,该模型采用新的注意力机制增强CNN感受野,在降低计算成本的同时,在LOL-Blur、LOLv2和Real-LOLBlur数据集上取得最优结果,并能良好泛化到真实夜间图像。

AIcurator的博客 326

RK3399平台开发系列讲解(内核入门篇)1.1、通过sysfs清楚了解设备的系统状况

文章目录1、不敢高声语,恐惊天上人:sysfs目的2、窥一斑而知全豹:sysfs目录介绍3、千丝万缕:sysfs中要素的关系4、数据观星:sysfs中相关结构体 1、不敢高声语,恐惊天上人:sysfs目的 我们想通过sys下面的目录和文件清楚的了解跑Liunx系统的嵌入式设备的系统状况。 2、窥一斑而知全豹:sysfs目录介绍 sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件.

内核笔记 1万+

【Zookeeper】Windows下安装Zookeeper(全面)

【Zookeeper】Windows下安装Zookeeper(全面)

weixin_57259781的博客 1万+

用 SAP XCO XLSX 模块优雅读 Excel:坐标、选择模式与实战案例全解析

SAP ABAP Cloud 中的 XCO XLSX 模块为 Excel 文件处理提供了官方解决方案。文章介绍了三个核心概念:通过 XCO_CP_XLSX=>DOCUMENT 获取文档句柄;使用 CL_XCO_XLSX_COORDINATE 坐标系统定位单元格;利用 Selection Pattern 精确读取数据区域。这些功能在 RAP 批量导入等业务场景中尤为实用,相比传统方案更加简洁可靠。文章还分享了真实项目中的最佳实践,如动态列定位和相对偏移技巧,帮助开发者构建更健壮的 Excel 导入逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

Zookeeper

Zookeeper笔记

panzhengxiang的博客 2351

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ZooKeeper 安装完整版——ZooKeeper3.4.6

@羲凡——只为了更好的活着 ZooKeeper 安装完整版——ZooKeeper3.4.6 1.下载地址如下: https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/ 2.安装 第1步:在deptest3 机器的 /usr/local/package 目录下解压 zookeeper-3.4.6.tar.gz tar -zxf zook...

@羲凡—只为更好的活着 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Zookeeper 和 SASL

关键字:Zookeeper 和 SASL 介绍 这是一个描述ZooKeeper和SASL(Simple Authentication and Security Layer)整合建议的设计文档。 JIRA 和 源代码 JIRA问题ZOOKEEPER-938,来自JIRA的可用补丁。 请注意:这个JIRA文章只描述了客户端-服务器的相互认证。服务器-服务器的相互认证存在单独的JIRA:Z...

赵士杰的博客 5206

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Zookeeper】Zookeeper入门解析

一、ZooKeeper概述 1.Zookeeper简介 (1)Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题 (2)ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群...

Together 7205

Zookeeper【安装篇】01:Zookeeper【单机】【手动】安装部署

Zookeeper【单机】【手动】安装部署

weixin_40612128的博客 5459

设置Zookeeper开机自启

首先在 /etc/init.d/ 目录下创建启动文件 zookeeper: 写入内容: #!/bin/bash # chkconfig: 2345 20 90 # description: zookeeper source /etc/profile case $1 in start) su - hadoop -c "${ZOOKEEPER_HOME}/bin/zkServer.sh start" if [ "$?" = "0" ] then echo "zookeeper is r

少弋弋的专栏 1258

Python Zookeeper 注册和发现服务

#!/usr/bin/env python # -*- coding: utf-8 -* import time import random import logging from kazoo.client import KazooClient from kazoo.exceptions import NodeExistsError from kazoo.client import Kazoo...

Through Da Storm 3274

ZooKeeper集群安装

目录JDK安装Zookeeper集群安装 ZooKeeper(动物园管理者)简称 ZK,是一个分布式的,开放源码的分布式应用程序协调服务组件,它的应用场景如下: 1、服务注册 2、分布式锁 3、配置管理 4、集群Master 选举 安装zookeeper集群,本文环境信息说明如下:系统CentOS7IP192.168.136.128hostnamexjw128jdk版本jdk1.8.0_181zookeep

xujinwei_gingko的专栏 1366

zookeeper安装教程

zookeeper安装教程

m0_64825044的博客 1460

Zookeeper搭建集群

Zookeeper集群环境搭建 1.每台服务器节点上安装jdk1.8环境 使用java -version命令测试 java -version 2.每台服务器节点上安装Zookeeper 1.下载并且安装zookeeper安装包 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeep...

qq_39380737的博客 2656

Apache Zookeeper :安装zookeeper步骤

前提 安装zookeeper的注意事项: 安装前需要安装好jdk 检测集群时间是否同步 检测防火墙是否关闭 检测主机 ip映射有没有配置 下载 下载安装包、解压 下载地址: CDH版本:http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.14.0.tar.gz apache版本:https://archive.apache.o...

4888

zookeeper 安装

安装 Hbase的Master需要zookeeper的支持,所以在集群上安装zookeeper。 将zookeeper下载解压到指定的文件夹,修改以下配置后分发到其它的节点。 修改zoo.cfg 这里主要添加了data和logs的路径以及三个服务器ip和端口 tickTime=2000 dataDir=/usr/local/zookeeper/zookeeper-3.4.5/data dataLo...

得克特 820

Zookeeper中解决zookeeper.out文件输出位置问题

使用过 Zookeeper 的小伙伴都知道,Zookeeper 中运行日志 zookeeper.out 文件的输出路径默认为启动脚本的当前路径,导致Zookeeper 集群启动失败想看日志时总是不记得输出日志在哪儿,不方便查看日志文件,所以需要修改日志输出位置及方式,方便查看日志。......

qq_45124566的博客 2720
上一篇: hadoop-mapreduce
下一篇: HBase
gamedev˚
博客等级 码龄12年 280粉丝 293原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值