首页 > 其他分享 >HDFS 读写

HDFS 读写

时间:2023-08-24 10:33:30浏览次数:42  
标签:HDFS 副本 block1 package 读写 host2 节点 block

参考链接:http://www.cnblogs.com/laov/p/3434917.html

写流程:

比如你有一个100M的文件。则写的流程大致如下。
a,Client 将File 分块,分别为block1,和block2 (64M,和36M)
b,Client 向NameNode 发送写数据请求。
c,NameNode 获取Client 的请求,记录Block的信息,并返回可用的DataNode,以及Block该存放在那块block 上。
例如:block1(host2,host1,host3)
     block2(host7,host8,host4)
block 存放原理:
NameNode具有RackAware机架感知功能,这个可以配置。
  1,若client为DataNode节点,那存储block时,规则为:
    副本1,同client的节点上;
    副本2,不同机架节点上;
    副本3,同第二个副本机架的另一个节点上;其他副本随   机挑选。
  2,若client不为DataNode节点,那存储block时,规则为:
    副本1,随机选择一个节点上;
    副本2,不同副本1,机架上;
    副本3,同副本2相同的另一个节点上;其他副本随   机挑选。
d,Client 获取NameNode 返回的存放block 的datanode信息,开始写数据。
写数据的过程是流式的写过程。
先写第一块block1.
1,将64M的block1按照64K 的package 划分。
2,将第一个package 发送给hosts2.
3,host2接收完第一个package,向host1发送第一个package,同时client向host2 发送第二个package.
4,host1接收完第一个package,向host3发送第一个package,同时接收host2发送过来的第二个package.
5,依此类推,直至第一个block1 写完。
6,host2,host1,host3,向namenode,host2向client 发送消息,说,消息发送完了。
7,client 确认host2发来的消息后,向namenode发送消息,所block1 写完了。至此,block1 正式结束。
接着发送第二块block2,过程与block1 相同。
至此,两块block 内容写到hdfs 系统中,则写完成。
析,通过写过程,我们可以了解到:
    ①写1T文件,我们需要3T的存储,3T的网络流量贷款。
    ②在执行读或写的过程中,NameNode和DataNode通过HeartBeat进行保存通信,
    确定DataNode活着。如果发现DataNode死掉了,就将死掉的DataNode上的数据,放到其他节点去。读取时,要读其他节点去。
    ③挂掉一个节点,没关系,还有其他节点可以备份;甚至,挂掉某一个机架,也没关系;其他机架上,也有备份。

读流程

a. client向namenode发送读请求。
b. namenode查看Metadata信息,返回fileA的block的位置。
    block1:host2,host1,host3
    block2:host7,host8,host4
c. block的位置是有先后顺序的,先读block1,再读block2。而且block1去host2上读取;然后block2,去host7上读取

标签:HDFS,副本,block1,package,读写,host2,节点,block
From: https://www.cnblogs.com/r1ng/p/17653521.html

相关文章

  • idea安装bigdata tool 插件 HDFS客户端
    在idea里面下载bigdatatool插件使用hdfs客户端一、下载hadoop安装包,并将文件解压二、在idea的插件里面找到bbigdatatool插件并进行安装 如果在idea里面下载比较慢,可以在官网下载 BigDataTools-IntelliJIDEsPlugin|Marketplace(jetbrains.com) 在idea设置里面......
  • HDFS的文件系统操作命令
    下面分享一下最近学到的HDFS的有关文件系统操作shell命令一、创建文件夹hadoopfs-mkdir[-p]<path>...hdfsdfs-mkdir[-p]<path>...#hadoopfs-mkdir-p/ijc/bigdata#hdfsfs-mkdir-p/jc/hadoop二、查看指定目录下内容hadoopfs-ls[-h][-R][<path>.......
  • HDFS集群启停命令
    HDFS集群启停命令:一键启停脚本#启动$HADOOP_HOME/sbin/start-dfs.sh#停用$HADOOP_HOME/sbin/stop-dfs.sh独立进程启程#脚本一hadoop-daemon.sh(start|status|stop)(namenode|secondarynamenode|datanode)#举例:hadoop-daemon.shstartdatanode#脚本二hdfs--dae......
  • 在VMware虚拟机集群上部署HDFS集群
    本篇博客跟大家分享一下如何在VMware虚拟机集群上部署HDFS集群一·、下载hadoop安装包进入官网:https://hadoop.apache.org 下载hadoop安装包由于ApacheHadoop是国外网址,下载安装包对于网络要求较高 二、上传压缩包,进行解压在进行解压之前,保证自己已经完成vmwa的黄静配置......
  • shell编程之存储读写测试实战脚本
    Shell编程是一种在命令行环境中编写程序的技术,常用于Linux和Unix系统。它主要使用Shell脚本语言来编写程序。Shell编程常用于系统管理、自动化任务、批处理等领域。常用的Shell脚本语言包括Bash、Csh、Tcsh和Zsh等。Bash是最常用的Shell编程语言,它是大多数Linux和Unix系统的默认S......
  • Hadoop学习笔记、知识点搭建速过、包含Hadoop集群搭建、HDFS、IDE操作hadoop,DFSShell
    大数据概述......
  • C#程序配置读写例子 - 开源研究系列文章
            今天讲讲关于C#的配置文件读写的例子。        对于应用程序的配置文件,以前都是用的ini文件进行读写的,这个与现在的json类似,都是键值对应的,这次介绍的是基于XML的序列化和反序列化的读写例子。对于ini文件,操作系统已经提供了API的操作函数,但是这个ini......
  • 【问题】分布式事务的场景下如何保证读写分离的数据一致性
    我的理解这个题目可以获得以下关键字:分布式处理、读写分离、数据一致性。那么就从”读写分离“做切入口吧,按我的理解其实就是在保证数据一致性的前提下两个(或以上)的数据库分别肩负不同的数据处理任务。太过久远的就不说了,最近几年其实都用的MySQL比较多。那么就基于MySQL我用......
  • HDFS shell 常用命令
    创建多级目录(-p):hadoopfs-mkdir-p/test/a/b 展示目录:hadoopfs-ls/ 递归展示:hadoopfs-ls-R/ 从HDFS上下载文件到本地:hadoopfs-get/test/a/b/h.txthadoopfs-copyToLocal  /test/a/b/h.txt 从本地上传文件到HDFS:hadoopfs-copyFromLocalhello......
  • 【FPGA】 DDR3读写(基于User Interface)
    【FPGA】DDR3读写(基于UserInterface)DDR3概述DDR3(doubledatarate3synchronousdynamicRAM)第三代双倍数据速率同步动态随机存储器同步:数据的速去和写入时钟同步动态:数据掉电无法保存,需要周期性刷新才能保持数据随机存取:能够对任意地址进行操作双倍数据速率:时钟的......