大数据的那些面试题及答案(一) ---阿善有用

摘要:
当数据丢失不是问题时,MemoryChannel适用。然而,当Zookeeper工作时,一个节点是Leader,另一个是Follower。领导人是通过内部选举机制临时选出的。服务器3已启动。根据之前的理论分析,服务器3成为服务器1、2和3的领导者。与上述不同的是,三个服务器在此时选举它,因此它成为此次选举的领导者。将注册的侦听事件添加到Zookeeper中的注册侦听器列表中。

文章目录

1. Flume系列:

1.Channel Selectors有几种类型,它们的区别是什么?
答:有两种。Replicating Channel Selector(默认的)和Multiplexing Channel Selector。
(1)Replicating Channel Selector会将source过来的events发往所有的channel
(2)Multiplexing Channel Selector,可以选择将source过来的events发往哪些channel。
2.Flume 的 Channel有几种,它们的区别是什么?
答:有两种。Memory Channel和File Channel
(1)Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。(如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。)
(2)File Channel将所有事件==写到磁盘。==因此在程序关闭或机器宕机的情况下不会丢失数据

2. zookeeper系列

1.请简述zookeeper的选举机制
(1)半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper 适合安装奇数台服务器。
(2)Zookeeper 虽然在配置文件中并没有指定 Master 和 Slave。但是,Zookeeper 工作时,是有一个节点为 Leader,其他则为 Follower,Leader 是通过内部的选举机制临时产生的
(3)以一个简单的例子来说明整个选举的过程。
假设有五台服务器组成的 Zookeeper 集群,它们的 id 从 1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的。假设这些服务器依序启动,会发生什么,如图
zookeeper的选举机制

  • 服务器 1 启动,此时只有它一台服务器启动了,它发出去的报文没有任何响应,
    所以它的选举状态一直是 LOOKING 状态。
  • 服务器 2 启动,它与最开始启动的服务器 1 进行通信,互相交换自己的选举结果,
    由于两者都没有历史数据,所以 id 值较大的服务器 2 胜出,但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是 3),所以服务器 1、2 还是继续保持LOOKING 状态。
  • 服务器 3 启动,根据前面的理论分析,服务器 3 成为服务器 1、2、3 中的老大,
    而与上面不同的是,此时有三台服务器选举了它,所以它成为了这次选举的 Leader。
  • 服务器 4 启动,根据前面的分析,理论上服务器 4 应该是服务器 1、2、3、4 中最
    大的,但是由于前面已经有半数以上的服务器选举了服务器 3,所以它只能接收当小弟的命了。
  • 服务器 5 启动,同 4 一样当小弟。
    个人总结选举机制类似于投票,每台服务器先给自己投一票,如果投票结果小于总服务器数量的半数以上,则竞选leader失败,然后再将票投给myid比自己大的服务器,直到某台服务器的投票结果大于总数的半数以上,则该服务器被荣幸选为leader,一旦leader选出,接下来的服务器只能是follower了。除非这个leader坏掉,再重新进行下一轮选举。
    2.zookeeper的监听器原理
    (1)首先要有一个main()线程
    (2)在main线程中创建Zookeeper客户端,这时就会创建两个线 程,一个负责网络连接通信(connet),一个负责监听(listener)。
    (3)通过connect线程将注册的监听事件发送给Zookeeper。
    (4)在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
    (5)Zookeeper监听到有数据或路径变化,就会将这个消息发送 给listener线程。 (6)listener线程内部调用了process()方法。
    监听器原理
  • 3.常见的监听有哪些?
    (1)监听节点数据的变化
    get path [watch]
    (2)监听子节点增减的变化
    ls path [watch]
    4.机器中为什么会有leader?
    分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,于是就需要进行leader选举
    5.ZooKeeper 的部署方式有哪几种?
    部署方式:单机模式、集群模式
    6.zookeeper集群中的角色有哪些?
    Leader 和 Follower
    7.集群最少需要几台机器?
    3台
    8.ZooKeeper 的常用命令
    ls create get delete set…
    9.zookeeper的应用场景及具体介绍

    1 概述
    Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目。

    2 Zookeeper工作机制在这里插入图片描述
    3 特点
    1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
    2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。(如果有四台机器,挂掉两台,不能正常服务,因为存活机器没有达到半数以上)
    3)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。(有几个节点备份几份数据,而hdfs默认备份3份
    4)更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行。
    5)数据更新原子性,一次数据更新要么成功,要么失败。(此处和事务的特点之原子性类似
    6)实时性,在一定时间范围内,Client能读到最新数据。(因为zookeeper存放的数据量少)
    4 zookeeper数据结构
    ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一 个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识
    数据结构图
    5 应用场景
    提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。

    • zookeeper统一命名服务
      在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。 例如:IP不容易记住,而域名容易记住统一命名服务
    • zookeeper统一配置管理
    • 分布式环境下,配置文件同步非常常见。
      (1)一般要求一个集群中,所有节点的配置信息是 一致的,比如 Kafka 集群。
      (2)对配置文件修改后,希望能够快速同步到各个 节点上。
    • 配置管理可交由ZooKeeper实现。
      (1)可将配置信息写入ZooKeeper上的一个Znode。
      (2)各个客户端服务器监听这个Znode
      (3)一旦Znode中的数据被修改,ZooKeeper将通知 各个客户端服务器。

    统一配置管理

    • zookeeper统一集群管理

    • 分布式环境中,实时掌握每个节点的状态是必要的。
      (1)可根据节点实时状态做出一些调整。

    • ZooKeeper可以实现实时监控节点状态变化
      (1)可将节点信息写入ZooKeeper上的一个ZNode。
      (2)监听这个ZNode可获取它的实时状态变化。
      统一集群管理

    • zookeeper服务器动态上下线
      客户端能实时洞察到服务 器上下线的变化
      服务器动态上下线

    • zookeeper软负载均衡
      在Zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求
      软负载均衡

    • 6.zookeeper的节点类型

    • 持久(Persistent):客户端和服务器端断开连接后,创建的节点不删除
      (1)持久化目录节点客户端与Zookeeper断开连接后,该节点依旧存在
      (2)持久化顺序编号目录节点客户端与Zookeeper断开连接后,该节点依旧存 在,只是Zookeeper给该节点名称进行顺序编号

    • 短暂(Ephemeral):客户端和服务器端断开连接后,创建的节点自己删除
      (1)临时目录节点客户端与Zookeeper断开连接后,该节点被删除
      (2)临时顺序编号目录节点客户端与Zookeeper断开连接后, 该节点被删除 , 只是 Zookeeper给该节点名称进行顺序编号。

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

3.spark系列

1.storm和SparkStreaming的区别
(1)处理效率不同,storm可以实现mm级响应,streaming是m级,无法实现mm级的流计算
优点:底层基于内存和DAG,架构在Sparkcore基础上
(2)SparkStreaming构建在Spark上,一方面是因为Spark的低延迟执行引擎可以用于实时计算,另一方面,相比于storm,RDD数据集更容易做高效的容错处理
(3)SparkStreaming采用的小批量处理的方式使得它可以同时兼容和实时数据处理的逻辑和算法,因此,方便了一些需要历史数据和实时数据联合分析的特定应用场合

4.Mysql系列

1.五大约束

  • 主键约束(Primay Key) 唯一性,非空性(惟一地指定一行记录)
  • 唯一约束 (Unique)唯一性,可以空,但只能有一个
  • 检查约束 (Check) 对该列数据的范围、格式的限制(如:年龄、性别等)
  • 默认约束 (Default ) 该数据的默认值
  • 外键约束 (Foreign Key) 需要建立两表间的关系并引用主表的列

2.数据库设置约束条件有什么好处?
数据库约束是为了防止数据库中存在不正确的数据保证数据的完整性

免责声明:文章转载自《大数据的那些面试题及答案(一) ---阿善有用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用PHP编写Android应用程序 狼人:Centos中安装ENVI5.1下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Centos7离线部署redis集群

  目录 一、安装redis需要的依赖 二、安装redis 三、部署redis集群 一、安装redis需要的依赖 1、安装GCC   1、检查是否安装gcc     命令: gcc  -v     如果能输出gcc版本信息,,说明安装了gcc。反之需要安装gcc   2、安装gcc     2.1创建目录/usr/local/gccSrc     2.2...

Openfire配置过程,以及与php交互注意事项。

使用 XMPP 构建一个基于 web 的通知工具 转 使用 XMPP 构建一个基于 web 的通知工具 使用 XMPP、PHP 和 JavaScript 编写实时 web 应用程序 Ben Werdmuller, 顾问和作者, Freelance Ben Werdmuller 是一位 Web 策划师和开发人员,他专注于开放源码平台。他是开源社交网络框架...

一文读懂MQTT协议

1  概述MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低...

ASP.Net Core 中使用Zookeeper搭建分布式环境中的配置中心系列一:使用Zookeeper.Net组件演示基本的操作

前言:马上要过年了,祝大家新年快乐!在过年回家前分享一篇关于Zookeeper的文章,我们都知道现在微服务盛行,大数据、分布式系统中经常会使用到Zookeeper,它是微服务、分布式系统中必不可少的分布式协调框架。它的作用体现在分布式系统中解决了配置中心的问题,以及解决了在分布式环境中不同进程之间争夺资源的问题,也就是分布式锁的功能以及分布式消息队列功能等...

从浏览器输入网址到页面显示的全过程

【前言】从全局来讲,当键入一个url时,肯定是需要从服务器请求某个页面或某条数据然后显示到用户自己的电脑屏幕上。这个过程中其实包括:DNS对url域名的解析(在url中解析出服务器所在的IP地址,有的url也包括端口),计算机网络中的五层协议层传输,代理服务器的响应、缓存或者负载均衡、最终html/css/js文件的解析与展现。从后端到前端,这只是概括,接...

Redis——集群(cluster)

前言 在前面的文章中,已经介绍了Redis的几种高可用技术:持久化、主从复制和哨兵,但这些方案仍有不足,其中最主要的问题是存储能力受单机限制,以及无法实现写操作的负载均衡。 Redis集群解决了上述问题,实现了较为完善的高可用方案。本文将详细介绍集群。 主要内容包括:集群的作用;集群的搭建方法及设计方案;集群的基本原理;客户端访问集群的方法;以及其他实践中...