ZooKeeper

企业是如何解决HDFS单点问题的?

為{幸葍}努か 提交于 2021-02-02 12:40:28
前言 在早期Hadoop刚出来的时候是没有解决HDFS单点问题的,这就意味着当NameNode的服务器宕机了就会导致整个集群瘫痪,这是非常危险的于是在Hadoop不断的更新下提出了Hadoop HA来解决NameNode单点问题,接下来我们就来聊一聊。 解决HDFS单点问题解决方案 解决HDFS点单问题其实可以部署两个NameNode,但是真正对外服务只有一个,部署两个NameNode那他们之间的元数据信息是不是需要共享元数据信息呀,不然当其中一个NameNode挂掉了元数据信息没有同步不就会有问题。 根据appche提出的解决方案目前有三种解决方案如下 方案一、目录共享 目录共享是在appche社区中提出但是现在没有引用,目录共享也是一个单点问题,如果当目录共享挂掉了是不是也会导致HDFS挂掉。所以就被一些企业抛弃了。 方案二、使用JournalNode方案 我们使用JN来保存元数据信息就不会造成单点问题,JN也是一个集群,我们一般部署JN一般会选择基数例如3,5,7,9等。JN有一个政策只要存活的节点大于 二分之一 就是一个正常的服务。 注意: 我们不要为了解决NameNode的单点问题选择的的组件也是单点问题,这个根本还是没有解决。 JN中的信息都是一样的,那为什么也是其中的一个NameNode就是写数据其中一个就是读取数据那? 其实NameNode也是有角色之分的写的为

收藏,吊打面试官的kafka知识!

此生再无相见时 提交于 2021-02-02 06:09:48
1 什么是kafka Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。 2 为什么要使用 kafka,为什么要使用消息队列 缓冲和削峰: 上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性: 项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。 冗余: 可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。 健壮性: 消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。 异步通信: 很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。 3.Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么 ISR:In-Sync Replicas 副本同步队列 AR:Assigned Replicas 所有副本

zookeeper集群的搭建

落花浮王杯 提交于 2021-02-02 05:40:28
阅读声明:以下内容是结合网上材料及工作所写的个人理解,如有不当,欢迎大家指正~~~谢谢啦 一、准备工作    由于在分布式环境中,单台ZooKeeper存在单点故障问题,所以我们必须搭建ZooKeeper集群,记录一下个人搭建记录。      ①准备3个节点   我这里选用三个虚拟机:   192.168.144.130   192.168.144.132   192.168.144.133 ②获取zookeeper的安装包   wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.7/zookeeper-3.4.7.tar.gz 二、集群搭建   选择 其中一个节点,执行以下步骤: ①解压安装包     tar -xvf zookeeper-3.4.7.tar.gz ②在zookeeper的根目录     mkdir data(用于存放数据) ③进入zookeeper的conf目录     cp zoo_sample.cfg zoo.cfg(拷贝配置模版) ④编辑配置文件   vim zoo.cfg,如下图所示。为防止图片失效,代码也粘上。        # The number of milliseconds of each tick tickTime=2000 # The number of ticks

Zookeeper集群搭建

做~自己de王妃 提交于 2021-02-02 05:26:41
本章主要讲解Zookeeper集群的搭建,搭建方式采用Docker容器的方式。 开始之间先讲解几个要点: Zookeeper文件名称为zoo.cfg 需要一个myid文件,里面只有一个数字代表serverId,该文件的位置由zoo.cfg中的dataDir属性指定 我们下面搭建一个三个节点的Zookeeper集群节点主机名称分别为zoo1,zoo2,zoo3 1.准备一份配置文件zoo.cfg,内容如下: tickTime = 2000 dataDir = /var/ lib / zookeeper / data dataLogDir = /var/ lib / zookeeper / datalog clientPort = 2181 initLimit = 5 syncLimit = 2 server . 1 = zoo1 : 2888 : 3888 server . 2 = zoo2 : 2888 : 3888 server . 3 = zoo3 : 2888 : 3888 2.准备三分serverId文件 echo 1 > / usr / local / docker_app / zookeeper / zoo1 / data / myid echo 2 > / usr / local / docker_app / zookeeper / zoo2 / data /

docker搭建zookeeper集群

筅森魡賤 提交于 2021-02-02 05:16:08
1、在官网拉取镜像 docker pull zookeeper 2、根据镜像启动zookeeper容器 docker run -itd --name zookeeper1 -h zookeeper1 -e ZOO_MY_ID=1 -e ZOO_SERVERS="server.1=zookeeper1:2888:3888 server.2=zookeeper2:28881:38881 server.3=zookeeper3:28882:38882" -p 2181:2181 -p 2888:2888 -p 3888:3888 --add-host=zookeeper1:172.17.0.5 --add-host=zookeeper2:172.17.0.6 --add-host=zookeeper3:172.17.0.7 zookeeper docker run -itd --name zookeeper2 -h zookeeper2 -e ZOO_MY_ID= 2 -e ZOO_SERVERS="server.1=zookeeper1:2888:3888 server.2=zookeeper2:28881:38881 server.3=zookeeper3:28882:38882" -p 2182:2181 -p 28881:2888 -p 38881:3888 --add-host

kafka环境搭建

扶醉桌前 提交于 2021-02-02 00:51:01
官网文档: http://kafka.apache.org/082/documentation.html#brokerconfigs 修改config/server.properties文件如下: 集群后还要修改broker id和主机名 启动kafka(后台进程): $ bin/kafka-server-start.sh -daemon config/server.properties CREATE $ bin/kafka-topics.sh --create --zookeeper bigdata-hpsk01.ziboit.com:2181 --replication-factor 1 --partitions 1 --topic testTopic LIST $ bin/kafka-topics.sh --list --zookeeper bigdata-hpsk01.ziboit.com:2181/kafka SEND $ bin/kafka-console-producer.sh --broker-list bigdata-hpsk01.ziboit.com:9092 --topic testTopic $ bin/kafka-console-consumer.sh --zookeeper bigdata-hpsk01.ziboit.com:2181 --topic

kafka本地环境搭建

為{幸葍}努か 提交于 2021-02-01 17:55:04
1. 下载 2.解压后修改配置文件 #唯一编号 broker.id=1 #用来监听的地址 listeners=PLAINTEXT://127.0.0.1:9092 #日志路径 log.dirs=E:/kafka_2.13-2.7.0/kafka_2.13-2.7.0/tmp/kafka-logs #zk的连接 zookeeper.connect=localhost:2181 3.启动 1.先启动zk 2.启动kafka kafka-server-start.bat ..\..\config\server.properties #创建主题 kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kafka-test-topic #查看创建的主题 kafka-topics.bat --list --zookeeper localhost:2181 #启动生产者 kafka-console-producer.bat --broker-list localhost:9092 --topic kafka-test-topic #启动消费者 kafka-console-consumer.bat --bootstrap-server localhost

谈谈注册中心 zookeeper 和 eureka中的CP和 AP

我与影子孤独终老i 提交于 2021-02-01 11:20:14
谈谈注册中心 zookeeper 和 eureka中的CP和 AP 前言 在分布式架构中往往伴随CAP的理论。因为分布式的架构,不再使用传统的单机架构,多机为了提供可靠服务所以需要冗余数据因而会存在分区容忍性P。 冗余数据的同时会在复制数据的同时伴随着可用性A 和强一致性C的问题。是选择停止可用性达到强一致性还是保留可用性选择最终一致性。通常选择后者。 其中 zookeeper 和 eureka分别是注册中心CP AP 的两种的实践。他们都提供服务注册中心的功能。建议使用AP。不强求数据的强一致性,达成数据的最终一致性。 服务注册中心的数据也就是返回的可用服务节点(ip+端口号) 服务A开了0-9十个服务节点,服务B需要调用服务A,两次查询返回0-8,1-9 不一致的数据。产生的影响就是0 和9 节点的负载不均衡 只要注册中心在 SLA 承诺的时间内(例如 1s 内)将数据收敛到一致状态(即满足最终一致),流量将很快趋于统计学意义上的一致,所以注册中心以最终一致的模型设计在生产实践中完全可以接受。 1 eureka AP eureka 保证了可用性,实现最终一致性。 Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册或时如果发现连接失败,则会自动切换至其它节点

Nginx负载均衡

孤者浪人 提交于 2021-01-30 09:52:30
Nginx负载均衡 Nginx(反向代理服务器) 正向代理 场景:在国内是无法正常使用google.com。如果想要访问google.com,可以购买一台国外的服务器A,此时你和服务器A的网络是相通的。而服务器A又跟google.com相通, 此时可以由服务器A代理你(客户端),去访问google.com。这个过程称之为正向代理,服务端(google.com)只需要知道代理服务器的ip,不需要知道客户端的ip。 示例1: 示例2: 结论:正向代理,是用于代理客户端的。 反向代理 场景:当一个服务器接受过多来自客户端的请求时,服务器难以处理和响应这些请求,会使得整个系统性能下降。为了解决这个难题,可以提供多台部署相同应用的服务器,让客户端的请求分别发送到不同的服务器上,这样单机服务器的压力就会降低很多,整体性能便会提升。但是有一个问题,每个服务器ip都是不同的,也就是说客户端的请求要发送到多个不同的ip上。让客户手动指定ip进行请求,这种方式很不明智。首先是客户的随机性,不知道会访问哪台服务器,其次,会造成一部分服务器压力大,一部分服务器几乎没有使用,浪费资源。因此,这里就需要一个角色去代理服务器,让客户端的请求直接发送到这个角色上,由这个角色去分发请求到不同的服务器上。 这个角色就是反向代理服务器。 结论:反向代理,是用于代理服务端的。 负载均衡 场景:反向代理过程中

ZooKeeper的安装与部署

…衆ロ難τιáo~ 提交于 2021-01-30 08:38:49
本文讲述如何安装和部署ZooKeeper。 一、系统要求 ZooKeeper可以运行在多种系统平台上面,表1展示了zk支持的系统平台,以及在该平台上是否支持开发环境或者生产环境。 表1:ZooKeeper支持的运行平台 系统 开发环境 生产环境 Linux 支持 支持 Solaris 支持 支持 FreeBSD 支持 支持 Windows 支持 不支持 MacOS 支持 不支持 二、下载ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zk的机器上需要安装Java运行环境。为了正常运行zk,我们需要JRE1.6或者以上的版本。 对于集群模式下的ZooKeeper部署,3个ZooKeeper服务进程是建议的最小进程数量,而且不同的服务进程建议部署在不同的物理机器上面,以减少机器宕机带来的风险,以实现ZooKeeper集群的高可用。 ZooKeeper对于机器的硬件配置没有太大的要求。例如,在Yahoo!内部,ZooKeeper部署的机器其配置通常如下:双核处理器,2GB内存,80GB硬盘。 可以从 https://zookeeper.apache.org/releases.html 下载ZooKeeper,目前最新的稳定版本为 3.4.8 版本,用户可以自行选择一个速度较快的镜像来下载即可。 三、目录 下载并解压ZooKeeper软件压缩包后