heartbeat

9.5任务

坚强是说给别人听的谎言 提交于 2020-12-27 07:43:29
18.1 集群介绍 一台机器完成不了的任务我们交给一大群机器去做,集群就好比一个堆叠起来的计算机。 集群根据功能划分两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务。(保证服务的可用性) 实现高可用的开源软件有:heartbeat、keepalived。 heartbeat在centos6上bug比较多,而且不再更新了,更推荐keepalived。 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2个。 实现负载均衡的开源软件有LVS、keepalived、haproxy、nginx,商业的有F5、Netscaler。LVS是非常出名的一款做负载均衡的软件。商业软件的稳定性和应对高访问量是值得肯定的,开源软件的稳定性等就会取决于你的服务器的性能了。 18.2 keepalived介绍 在这里我们使用keepalived来实现高可用集群,因为heartbeat在centos6上有一些问题,影响实验效果。heartbeat在切换主从的时候有延时,做高可用集群的时候还是推荐使用keepalived。 keepalived通过VRRP(Virtual Router Redundancy Protocl

DOIT20-HDP02

情到浓时终转凉″ 提交于 2020-12-18 13:04:15
1 HDFS的shell客户端 [root@linux01 ~]# hdfs dfs Usage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>] [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] <path> ...] [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>] [-createSnapshot <snapshotDir> [<snapshotName>]]

聊聊心跳机制及netty心跳实现

╄→尐↘猪︶ㄣ 提交于 2020-12-18 03:37:29
  我们在使用netty的时候会使用一个参数,ChannelOption.SO_KEEPALIVE为true, 设置好了之后再Linux系统才会对keepalive生效,但是linux里边需要配置几个参数,tcp_keepalive_time, tcp_keepalive_invl, tcp_keepalive_probes,如果不配置的时候都会是默认值。   tcp_keepalive_time 即给一个TCP连接发送心跳包最后的时间间隔某一段时间后继续发送心跳包,允许空闲的时间,然后再次发送心跳包,默认时间为7200秒,即2个小时发一次心跳包。 tcp_keepalive_invl,发送存活探测时候未收到对方回执的时候,需要间隔一段时间继续发送。默认为75秒。   tcp_keepalive_probes,如果发了存活探测的时候没有收到对方的回执,那么需要继续发送探测的次数,此时默认值为9次,也就是未收到回执的时候需要发送9次。   再理一次,间隔tcp_keepalive_time之后发送心跳探测,如果未收到对方回执的时候,需要间隔tcp_keepalive_invl设置的时间继续发送,一共需要发送tcp_keepalive_probes的次数。   这个是Linux系统的配置,如果要使用Linux的此功能需要设置SO_KEEPALIVE为true,同时设置其他几个参数

Scalability of Kafka Messaging using Consumer Groups

 ̄綄美尐妖づ 提交于 2020-11-18 20:11:54
May 10, 2018 By Suhita Goswami No Comments Categories: Data Ingestion Flume Kafka Use Case Traditional messaging models fall into two categories: Shared Message Queues and Publish-Subscribe models. Both models have their own pros and cons. Neither could successfully handle big data ingestion at scale due to limitations in their design. Apache Kafka implements a publish-subscribe messaging model which provides fault tolerance, scalability to handle large volumes of streaming data for real-time analytics. It was developed at LinkedIn in 2010 to meet its growing data pipeline needs. Apache Kafka

震惊了,原来这才是Kafka的“真面目”!

为君一笑 提交于 2020-11-17 22:22:24
Kafka 是一个分布式消息队列,具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。 image.png Kafka 对外使用 Topic 的概念,生产者往 Topic 里写消息,消费者从中读消息。 为了做到水平扩展,一个 Topic 实际是由多个 Partition 组成的,遇到瓶颈时,可以通过增加 Partition 的数量来进行横向扩容。单个 Parition 内是保证消息有序。 每新写一条消息,Kafka 就是在对应的文件 append 写,所以性能非常高。 Kafka 的总体数据流是这样的: image.png 大概用法就是,Producers 往 Brokers 里面的指定 Topic 中写消息,Consumers 从 Brokers 里面拉取指定 Topic 的消息,然后进行业务处理。 图中有两个 Topic,Topic0 有两个 Partition,Topic1 有一个 Partition,三副本备份。 可以看到 Consumer Gourp1 中的 Consumer2 没有分到 Partition 处理,这是有可能出现的,下面会讲到。 关于 Broker、Topics、Partitions 的一些元信息用 ZK 来存,监控和路由啥的也都会用到 ZK。 生产

Hadoop V2 yarn与Hadoop V1 MapReduce对比

为君一笑 提交于 2020-10-25 10:43:22
对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架 1、Hadoop v1 1.1 Hadoop v1 MapReduce 架构图 1.2 Hadoop v1 MapReduce程序的流程及设计思路 首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有 job 失败、重启等操作。 TaskTracker 是 Map-reduce 集群中每台机器都有的一个部分,他做的事情主要是监视自己所在机器的资源情况。 TaskTracker 同时监视当前机器的 tasks 运行状况。TaskTracker 需要把这些信息通过 heartbeat 发送给 JobTracker,JobTracker 会搜集这些信息以给新提交的 job 分配运行在哪些机器上。上图虚线箭头就是表示消息的发送 - 接收的过程。 1.3 Hadoop v1 MapReduce程序问题 JobTracker 是 Map-reduce 的集中处理点,存在单点故障。 JobTracker 完成了太多的任务,造成了过多的资源消耗,当 map-reduce job

重新discovery coordinator,然后JoinGroup + SyncGroup

时光总嘲笑我的痴心妄想 提交于 2020-10-22 17:53:03
在前面我们讲过,KafkaProducer是线程安全的,同时其内部还有一个Sender,开了一个后台线程,不断从队列中取消息进行发送。 而consumer,是一个纯粹的单线程程序,后面所讲的所有机制,包括coordinator,rebalance, heartbeat等,都是在这个单线程的poll函数里面完成的。也因此,在consumer的代码内部,没有锁的出现。 //客户端线程 while (true) { ConsumerRecords<String, String> records = consumer.poll(100); 。。。 } 1 2 3 4 5 有兴趣朋友可以关注公众号“架构之道与术”, 获取最新文章。 或扫描如下二维码: 何为coordinator? 去Zookeeper依赖 在0.9以前的client api中,consumer是要依赖Zookeeper的。因为同一个consumer group中的所有consumer需要进行协同,进行下面所讲的rebalance。 但是因为zookeeper的“herd”与“split brain”,导致一个group里面,不同的consumer拥有了同一个partition,进而会引起消息的消费错乱。为此,在0.9中,不再用zookeeper,而是Kafka集群本身来进行consumer之间的同步

keepalived高可用服务安装

淺唱寂寞╮ 提交于 2020-10-18 14:02:10
keepalived 介绍: 1 ,仅仅进行vip 资源的切换就可以实现apache 之间的高可用 2, 在开源里,最常用的一个是heartbeat,一个是keepalived,单纯跑ip 的话vip 的话keepalived 更简单,heartbeat也简单,但是如果配合存储,数据库这种有数据流向的高可用,或者是管理资源服务的时候,和web 服务更紧密,如控制web 的开或者关,这种更紧密合作的时候,heartbeat 更合适,如果是轻量级,只是飘ip,迁移ip 的话,keepalived 更合适简单。 keepalived通过内核管理lvs ,所以没装lvs,就没装kernel-devel,需要先安装yum install kernel-devel configure 完看有没有下面三个yes 的 Use VRRP Framework : Yes Use VRRP VMAC : Yes Use VRRP authentication : Yes 来源: oschina 链接: https://my.oschina.net/u/4320183/blog/4293512

Apache 2.4的反向代理和负载均衡

此生再无相见时 提交于 2020-10-02 10:54:04
文章内容参考自官方文档: http://httpd.apache.org/docs/2.4/howto/reverse_proxy.html 像nginx一样, Apache httpd也提供了反向代理(Reverse Proxy)并能实现负载均衡(Load Balance)。 Apache httpd配置中需要开启以下模块: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so # 这个也要开启, 否则httpd启动报错 LoadModule slotmem_shm_module modules/mod_slotmem_shm.so # 以下负载均衡策略按需开启 LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule lbmethod_bytraffic

Hadoop服务配置热替换框架的设计实现

心不动则不痛 提交于 2020-10-02 10:28:05
文章目录 前言 服务热替换更新需要解决的问题点 Hadoop服务热替换更新配置框架代码实现 引用 前言 在分布式系统中,根据不同的运行情况进行服务配置项的更新修改,重启是一件司空见惯的事情了。但是如果说需要重启的服务所需要的cost非常高的时候,配置更新可能就不能做出频繁非常高的操作行为了。比如某些分布式存储系统比如HDFS NameNode重启一次,要load元数据这样的过程,要花费小时级别的启动时间,当其内部存储了亿级别量级的文件数的时候。那很显然对于这种高cost重启的服务来说,我们不能每次依赖重启做快速的配置更新,使得系统服务能使用新的配置值进行服务。于是一个新的名词在这里诞生了:服务的配置热替换更新。简单理解即我们可以通过RPC命令来动态地更改服务内部加载的某项配置值,然后让其使用新的配置值生效运行。本文笔者来聊聊Hadoop内部是如何实现了这么一套配置热替换更新的框架实现的。 服务热替换更新需要解决的问题点 要实现服务配置的热替换更新,我们首选需要知道有哪些主要的问题点,需要我们去考虑到。 第一点,如何让服务能够感知到那些“更新”了的配置。 这里一般有下面两种做法: 1)以命令行参数的形式,传入需要动态更新的配置key以及对应的value。 2)修改服务本地配置文件,然后触发一个动态刷config的命令到服务。 上述方案第二种比第一种更好一些,因为第一种命令行执行完后