首页 > 其他分享 >【博学谷学习记录】超强总结,用心分享 | 知识点总结1

【博学谷学习记录】超强总结,用心分享 | 知识点总结1

时间:2023-05-05 22:13:01浏览次数:43  
标签:总结 知识点 HDFS client DataNode 超强 NameNode Client 上传

【博学谷IT技术支持】

zookeeper

基础

  • 架构是:主从架构
  • 安装虚拟机必须安装jdk
  • 角色:leader, Follower ,Observer

zookeeper的特性

  1. 全局一致性
  2. 顺序性
  3. 原子性
  4. 实时性

zookeeper的watch机制

zookeeper的选举机制

hadoop

基础

主从集群
NameNode SecondaryNamenode DataNode

HDFS页面端口:9870
YARN页面端口:8088
historyServer端口:19888

hadoop启动

在node1上使用以下命令启动HDFS NameNode:
hdfs --daemon start namenode

在三台机器上使用以下命令启动HDFS DataNode:
hdfs --daemon start datanode

在node2上使用以下命令启动HDFS SecondaryNameNode:
hdfs --daemon start secondarynamenode

在node1上使用以下命令启动YARN ResourceManager:
yarn --daemon start resourcemanager

在三台机器上使用以下命令启动YARN nodemanager:
yarn --daemon start nodemanager

hdfs

HDFS来自谷歌的论文GFS

HDFS页面的端口号: 8020

特性

  • 存储能力强
  • 理论上可以无限扩展
  • 适合存储大文件
  • HDFS只支持追加写入
  • 适合离线数据存储

HDFS的架构

NameNode

1、NameNode管理整个HDFS集群
2、NameNode管理整个HDFS的所有元数据
3、Client要上传或者下载文件必须先找NameNode
4、一旦NameNode挂掉,整个HdFS集群将无法工作
5、各个DataNode隔一段时间向NameNode汇报自己的Block信息和磁盘信息

DataNode

1、DataNode是具体存数据的,HDFS所有真实数据都在DataNode存储
2、各个DataNode隔一段时间向NameNode汇报自己的Block信息和磁盘信息
3、Client在上传和下载文件时,和NameNode交流之后,真实的数据上传和下载是在Client和DataNode之间

SecondaryNameNode

辅助NameNode进行元数据管理,将NameNode内存中元数据保存到硬盘上

HDFS的读写流程

image.png

上图是HDFS的写流程图

主要步骤如下

  • client向服务器发起上传请求(RPC)
  • NameNode接受到请求之后会进行权限检查(目录是否存在权限,目录是否存在)
  • NameNode会给client反馈是否可以上传标记
  • Client会将要上传的文件安装设置的Block大小进行切片
  • Client向NameNode请求上传第一个Block
  • 当NameNode收到上传Block请求之后,会根据副本放置策略和主机的优秀程度选出最优主机
  • NameNode返回最优的主机列表给Client
  • Client和主机列表排在最前的主机建立pipeline
  • dataNode告诉应答成功
  • Client开始传输第一个Block数据,传输数据的单位是package(64K)
  • 收到一个package就会缓存datanodeDatas
  • HDFS会产生一个应答队列,从最后一个开始,收到packet,就会将一个ACK应答放入应答队列
  • Client判断应答队列的ACK是否完整,如果完整,则判断此次packet发送成功,继续发送第二个package
  • 当最后一个package发送完成之后,每一个DataNode会将缓存的Package数据存储到硬盘上,也就是一个Block
  • Client重新执行第五步,请求Namenode上传第二个block,
  • client向Namenode汇报文件上传完毕
  • NameNode更新自己内存中的元数据
写流程简单概况
  1. client向namenode发起上传请求,namenode判断权限等告诉client是否可以上传,并返回主机列表。
  2. client与主机建立pipeline,分别上传所有的block。
  3. 上传完毕汇报client,client告诉namenode更新自己内存中的元数组。

HDFS读流程

image.png

  • Client向服务端发起文件下载请求
  • 服务器做权限检查,判断文件是否存在以及权限问题
  • namenode获取该文件的block信息列表,并且对每一个block的主机进行排序(策略)
block1: node1 node3 node4
block2: node1 node2 node4
block3: node2 node3 node4
  • 将文件的block列表发送到client
block1: node1 node3 node4
block2: node1 node2 node4
block3: node2 node3 node4
  • client分别和三个block所在的主机建立管道通信
  • client分别从三台主机读取数据,读取是并行执行(读取的单位是packet,64k)
  • client将这三个block进行合并(字节数组的合并)
读流程简单概况
  1. 向namenode发起下载请求,namenode判断权限并返回主机列表
  2. client与主机列表建立pipeline并读取数据
  3. client对数据进行合并

标签:总结,知识点,HDFS,client,DataNode,超强,NameNode,Client,上传
From: https://www.cnblogs.com/neilniu/p/17375515.html

相关文章

  • 【博学谷学习记录】超强总结,用心分享 | 知识点总结2
    【博学谷IT技术支持】请简述HDFS上传文件的过程1.客户端将文件分成固定大小的block(默认128MB)2.客户端与NameNode通信,请求上传文件,并获取上传目标节点的信息3.客户端将第一个数据块上传到目标节点,并告知NameNode该节点上存储的数据块信息4.目标节点将数据块写入本地磁盘......
  • 4.5每日总结
    今天学习了HTML页面的刷新。<ahref="javascript:location.reload();">点击重新载入页面</a><ahref="javascript:history.go(0);">点击重新载入页面</a><ahref="javascript:location=location;">点击重新载入页面</a><ahref="j......
  • 5.5每日总结
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd&qu......
  • DOM操作----总结
     查找方式一:varobj=document.getElementById(id);varobj=document.getElementById('d1');obj.innerHTML='hellokitty';---innerHTML属性:可以读或者写一个节点的html内容。varobj2=document.getElementById('username');obj2.value='abc�......
  • C++ STL容器总结
    https://www.zhihu.com/question/270017615/answer/2951304955作者:linux链接:https://www.zhihu.com/question/270017615/answer/2951304955来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1什么是STL?STL(StandardTemplateLibrary),即标准模板库......
  • 每日总结-23.5.5
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd&qu......
  • Docker(容器)理论总结
    一.什么是Dockerhttps://www.docker.com/Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口2.Docker解决依......
  • 每日总结 5.5
    今天学习了HTML页面的刷新。<ahref="javascript:location.reload();">点击重新载入页面</a><ahref="javascript:history.go(0);">点击重新载入页面</a><ahref="javascript:location=location;">点击重新载入页面</a><ahref="j......
  • 每日总结2023-05-04
    Servlet获取参数值使用request.getParameter(“参数名”),返回结果为String,若需要其他数据类型需要用Integer,Double等包装类进行类型转换例如:publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException......
  • 每日总结2023-05-05
    Android加载界面  activity_main.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"......