1.hadoop集群有主集群和备用集群
主集群有一个namenode(活跃的),一个namenode(非活跃的),两者通过 zookeeper协调管理者,还有3个datanode。
备用集群有namenode和3个datanode。
主集群会将信息一般通过外网同步到备用集群,会有一定的延迟。比如主集群在北京,备用集群在四川。
2.安全模式
集群启动的时候检查block块是否有丢失
3.将文件上传到hdfs集群的过程(hdfs文件上传过程)写流程
客户端上有一个200M文件,在客户端创建一个fs建立连接。
集群上有1个namenode,3个datanode。
①fs请求namenode,请求上传文件,并说明文件路径data/xxx.txt
②namenode检查路径是否存在,并告知客户端可以上传
200M文件以128M分块
③fs向集群请求上传第一块数据
④集群中namenode返回可以上传的主机名和端口号(放到哪个datanode)
⑤fs与返回的datanode建立连接,所有的datanode之间直接建立连接
⑥从最后一个datanode开始向上一个datanode返回连接成功,datanode向fs返回连接成功
⑦fs将第一块数据传到datanode,datanode再传到其他datanode
⑧传输第二块文件重复3-7
⑨整个文件传输完,进行反馈。
⑩在namenode上记录data/xxx.txt每个块的存放位置,如:block01:hadoop02,hadoop03,hadoop04; block02:hadoop03,hadoop04,hadoop05
3.从集群上读取文件的过程 读流程
客户端上创建一个fs建立连接。
集群上有1个namenode,3个datanode。
①fs请求namenode,请求读取文件,并说明读取的文件路径data/xxx.txt
②在namenode查找目录树,找到data/xxx.txt的每个块存放位置,并返回元数据信息
③fs请求第一块数据,与相应的datanode建立连接,datanode返回建立连接成功
④datanode将第一块数据传输到客户端
⑤重复3-4,将第二块数据传输到客户端
4.元数据存储机制
内存中有一份完整的元数据metadata
磁盘有一个“准完整”的元数据镜像fsimage,文件在namenode的工作目录中
用于衔接内存metadata和持久化元数据镜像fsimage之间的操作日志edits
(客户对hdfs的文件进行新增或者修改操作,记录先被记入到edits文件中,当客户端操作成功后,相应的元数据会更新到内存metadata中)
5.第二名称节点secondary namenode
①客户端进行操作(上传数据,删除文件,修改名字),在namenode中存储元数据信息,并在namenode中打印日志(edits.inprogress)和镜像文件(fsimage),每过一段时间将镜像文件和日志文件中内容传到secondary namenode。在namenode中有一个seen_txid文件:记录下载log位置
②在secondary namenode中有了镜像文件和日志文件,将镜像文件和日志文件加载到内存中,从日志文件中解析出数据,并修改secondary namenode中的内存元数据,从内存中生成镜像文件传到namenode
10