Zookeeper 基础

Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.

Zookeeper 直译过来是 动物园管理员 说白了就是用来管理Hadoop(大象),Hive(蜜蜂) 的分布式协调服务

Zookeeper 提供两种服务 –>管理(存储,读取)用户程序提交的数据; –>为用户程序提供数据节点监听服务;

NameNode管理元数据的机制

当NameNode收到更新元数据请求

首先更新内存中元数据信息

记录操作日志 edits

定期合并(checkpoint) edits 到 fileimage

客户端向HDFS写数据的流程

HDFS集群分为两大角色:

NameNode DataNode (Secondary NameNode)

NameNode负责管理集群的元数据

DataNode负责管理用户的文件数据块

文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上

每一个文件块可以有多个副本,并存放在不同的datanode上

HDFS读数据流程

  1. 客户端向NameNode请求下载文件A
  2. NameNode从元数据中读取A文件所在位置,副本数量 返回给客户端
  3. 客户端向最近DataNode请求下载block1 建立下载通道
  4. 开始传输数据
  5. 传输完成后客户端找第二个block数据所在DataNode中的位置
  6. 最后所有块在客户端合并