首页 > 其他分享 >数据是如何写入到Hadoop HDFS中的?

数据是如何写入到Hadoop HDFS中的?

时间:2024-05-28 17:33:30浏览次数:13  
标签:HDFS 写入 Hadoop DataNode NameNode 数据 客户端

胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专家称号。

目录

1.客户端发起写入请求

2.与NameNode交互

3.数据流的建立

4.数据的分割与写入

5.数据块的复制与存储

6.写入完成

7.关闭资源


数据写入Hadoop HDFS的过程是一个分布式的操作,涉及多个组件和步骤。以下是一个清晰、归纳性的描述。

1.客户端发起写入请求

客户端首先通过调用DistributedFileSystem对象的create()方法来创建一个文件输出流对象,准备写入数据。

HadoopHDFS中,DistributedFileSystem类是一个关键的类,它代表了一个分布式的文件系统,并提供了与HDFS进行交互的API

2.与NameNode交互

(1)DistributedFileSystem对象会向NameNode发起RPC调用,请求创建新文件。

(2)NameNode会检查该文件是否已经存在,并验证客户端是否有权限新建文件。

(3)如果检查通过,NameNode会为新建文件记录一条元数据信息;否则,文件创建失败,并向客户端抛出异常。

3.数据流的建立

(1)一旦NameNode同意创建文件,DistributedFileSystem会向客户端返回一个FSDataOutputStream输出流对象。

(2)客户端通过这个输出流对象开始写入数据。FSDataOutputStream内部封装了一个DFSOutputStream对象,该对象负责处理与DataNodeNameNode之间的通信。

4.数据的分割与写入

(1)当客户端调用FSDataOutputStreamwrite()方法写入数据时,DFSOutputStream会将数据分成一个个数据包(默认大小为64KB),并将这些数据包写入一个内部的数据队列(Data queue)。

(2)DFSOutputStream内部有一个DataStreamer类,用于请求NameNode分配新的数据块,并将数据块写入到DataNode

5.数据块的复制与存储

(1)客户端向NameNode请求上传第一个数据块,并获得一个可用的DataNode列表。

(2)客户端选择一个DataNode作为数据管道的首个节点,并开始上传数据块。这个数据块会被复制到其他DataNode上(默认为3个副本),以实现数据的冗余和容错。

(3)此过程重复进行,直到所有数据都被写入并复制到多个DataNode上。

6.写入完成

(1)一旦所有数据块都成功上传,客户端会通知NameNode文件写入完成。

(2)NameNode更新文件的元数据信息,包括数据块的位置和副本信息。

7.关闭资源

数据写入完成后,客户端关闭FSDataOutputStream输出流对象,释放相关资源。

这个过程是HDFS分布式文件系统的核心功能之一,它确保了数据的高可靠性和容错性。通过将数据分割成多个数据块,并复制到多个DataNode上,HDFS能够在部分节点发生故障时仍然保持数据的完整性和可用性。

标签:HDFS,写入,Hadoop,DataNode,NameNode,数据,客户端
From: https://blog.csdn.net/huxian1234/article/details/139269371

相关文章

  • Hadoop HDFS NameNode核心原理分析
    胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,SpringCloudAlibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电......
  • 边缘计算|Hadoop——边缘计算,有没有对应的软件?例如数据中心或云计算环境进行数据处理
    边缘计算确实没有直接对应于Hadoop这样的单一软件框架,因为边缘计算更多的是一个概念或技术架构,它涵盖了在网络的边缘(即设备或数据源附近)进行数据处理和计算的能力。然而,这并不意味着边缘计算没有相应的软件支持或解决方案。在边缘计算环境中,通常会使用各种软件、工具和框架来支持......
  • Java-生成固定长度的随机字符串、随机字符串开头的ID、写入文件、读取文件
    packagecom.sgcc;importjava.io.*;importjava.text.DecimalFormat;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclassMain{publicstaticStringgenerateMixedString(intlength){Randomrandom=ne......
  • 边缘计算|Hadoop——边缘计算和Hadoop是什么关系?
    边缘计算和Hadoop之间存在关联,但它们是两种不同的技术,分别应用于不同的计算场景。以下是它们之间关系的详细解释:定义与功能:边缘计算:边缘计算是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。它降低了延迟,节省了带宽,并允......
  • hadoop3.2.3+flink1.13.0+hbase2.4.8集群搭建
    hadoop3.2.3+flink1.13.0+hbase2.4.8集群搭建hadoop3.2.3+flink1.13.0+hbase2.4.8集群搭建1.准备3台centos7服务器配置hosts(可能需要重启才生效)/etc/hosts192.168.10.209master192.168.10.155slave1192.168.10.234slave2123456免密登录ssh-keygen-trsass......
  • 常用hdfs命令
    hdfsdfs-mkdir/home/hdp-ait/wangwei22hdfsdfs-ls/home/hdp-ait/wangwei22hdfsdfs-du-h/home/hdp-ait/wangwei22hdfsdfs-touchz/home/hdp-ait/wangwei22/a.txthdfsdfs-rm/home/hdp-ait/wangwei22/edges.txthdfsdfs-rm/home/hdp-ait/wangwei22/vertexs.txt......
  • 32道HDFS高频题整理(附答案背诵版)
    简述什么是HDFS,以及HDFS作用?HDFS,即HadoopDistributedFileSystem,是Hadoop分布式文件系统。它是一个专门为了存储大量数据而设计的文件系统,能够在廉价的商用硬件上提供高吞吐量的数据访问,非常适合那些有大量数据集的应用程序。HDFS的设计目标是处理大文件,它支持的文件尺......
  • 计算机毕业设计hadoop+hive知识图谱漫画推荐系统 动漫推荐系统 漫画分析可视化大屏 漫
    流程:1.DrissionPage+Selenium自动爬虫工具采集知音漫客动漫数据存入mysql数据库;2.Mapreduce对采集的动漫数据进行数据清洗、拆分数据项等,转为.csv文件上传hadoop的hdfs集群;3.hive建库建表导入.csv动漫数据;4.一半指标使用hive_sql分析得出,一半指标使用Spark之Scala完成;5.sq......
  • Hadoop创建文件、上传文件、下载文件、修改文件名、删除文件精细全流程
    目录一、起步流程1.创建配置参数对象---Configuration类(org.apache.hadoop.conf.Configuration)2.通过配置参数对象指定hdfs的地址3.创建HDFS文件系统的对象---带配置项---FileSystem类​二、具体操作(1)创建目录:/wordcount(2)下载文件:/data/input/word.txt下载到D:/hadoop......
  • Hadoop 学习
    Hadoop三种运行模式:1.本地模式(学习)1.没有HDFS,使用当前系统下的文件系统2.没有YARN,使用的是Linux中的资源3.使用了Map-ReduceFramework2.伪分布式模式(学习)1.只有单台机器2.使用HDFS、Yarn、MapReduce3.分布式模式(企业级)1.多台服务器2.集群模式,包含整......