精华内容
下载资源
问答
  • hdfs读写数据原理 简述hadoop工作原理
    2020-12-24 03:51:29

    大数据入门阶段学些什么?

    我的后端工程师已经在大数据领域工作了一年多,我将谈谈我的学习过程。

    1。使用HDFS分布式文件系统时,最好熟悉以下原则。

    2。大数据查询工具hive/Presto,语法基本相似,用于查询数据和生成报表

    3。实时数据清理工具Flink用于编写实时Kafka。将数据记录到HDFS。当然,Flink还有很多其他功能,比如数据清理和数据分析。

    4。Spark是一个分布式计算引擎,它与纱线的资源调度相配合,利用Spark进行数据清洗或机器学习模型训练。

    总而言之,我们需要学习HDFS、hive/Presto、Flink和spark。当然,Java语言和Linux命令必须。

    hdfs在写数据的过程中datanode死掉怎么办?

    数据节点在写入时未重新分配。如果一个datanode在写入过程中失败,那么已经写入的数据将被放在数据队列的顶部,而被丢弃的datanode将被移出pipline,而数据将被写入其余的datanode。写入后,namenode会收集数据节点信息,发现此文件的复制不符合配置要求(默认为3),然后查找datanode保存副本。

    hdfs数据存储在集群什么地方?

    1。存储文件时,需要指定存储路径,即HDFS的路径。

    而不是哪个节点的目录。例如,。/Hadoop FS putlocalfilehdfspat,一般操作的当前路径是/user/Hadoop,例如executing。/Hadoop FS ls。事实上,它相当于。/Hadoop FS LS/user/Hadoop 2,HDFS本身就是一个文件系统。使用它时,您不需要关心特定文件存储在哪个节点上。如果需要查询,可以通过页面查看,也可以通过API实现查询。

    kafka topic数据如何写入hdfs?

    这主要取决于您的业务场景。如果您需要实时计算,您可以读取Kafka->“计算指标-”,并通过spark将其写入HDFS。有官方的例子。如果不需要实时计算,可以通过定时任务读取卡夫卡的数据并将其写入HDFS。我还没有研究卡夫卡是否支持出版。在实际项目中,我通过Python-Kafka读取数据。

    更多相关内容
  • HDFS读写数据过程原理分析

    千次阅读 2020-05-11 18:28:03
    Hadoop HDFS读写数据过程原理分析

    Hadoop HDFS读写数据过程原理分析

            在学习hadoop hdfs的过程中,有很多人在编程实践这块不知道该其实现的原理是什么,为什么通过几十行小小的代码就可以实现对hdfs的数据的读写。
            在下面的介绍中会详细的说明该其过程实现的原理(图片选自中国大学MOOC[大数据技术原理与应用]课程)。

    一、读数据的原理分析

    在这里插入图片描述

    1. 打开文件。

            用Java导入FileSystem类,通过FileSystem.get(conf)声明一个实例对象fs,从而分布式系统底层的配置文件会被项目所调用,如core-site.xml、hdfs-site.xml;进而生成一个子类DistributedFileSystem,这时候实例对象fs与分布式系统也就紧紧相关了。
            由于我们要读数据,当然就需要使用到输入流,这时候输入流的类型是FsDataInputStream,其中封装着DFSInputStream。
            在这里为什么我们看不见或者无法调用DFSInputStream呢,因为这是Hadoop后台自动给其封装的好的,真正与Hadoop当中的名称节点进行交流的,其实是DFSInputStream,而不是FsDataInputStream。
            FsDataInputStream在项目中是干嘛呢,其实是与客户端进行交流的。

    2. 获取数据块信息

            由于FsDataInputStream内部封装了DFSInputStream,要获取项目所需要的数据被存放到哪些数据节点,因此DFSInputStream会通过conf中的配置文件信息远程与名称节点进行交流。
            通过当中的ClientProtocal.getBlockLocations()方法来向名称节点查找项目所需的数据被存放到哪些数据节点,而名称节点会把文件的开始一部分数据位置信息返回去。

    3. 读取请求

            客户端获得输入流FsDataInputStream返回的数据位置信息,就可以使用read函数读取数据
            这时候肯定不少就近客户端的存在,事实上,名称节点在返回时还包括将数据节点距离客户端的远近进行排序,而客户端会自动选择距离最近的一个数据节点进行连接,接着读取数据。

    4. 读取数据

            当客户端读取完数据后,FsDataInputStream需要关闭和数据节点的连接。

    5. 获取数据块信息

            对应刚才的第二步,我们可能只读取了文件数据的部分数据块位置信息,因此需要再次通过ClientProtocal.getBlockLocations()方法来向名称节点查找项目所需的下一个数据被存放到哪些数据节点。
    同样的,名称节点会返回下一个数据的数据节点位置信息节点列表给客户端。

    6. 读取数据

            客户端获取信息后,继续通过read函数与这些数据节点进行连接,不断循环,知道完成所有数据库的读取。

    7. 关闭文件

            客户端调用FsDataInputStream输入流的关闭操作close,关闭整个文件读取数据的过程。

    二、写数据的原理分析

    在这里插入图片描述

    1. 创建文件请求

            与读数据一样,通过FileSystem.get(conf)声明一个实例对象fs,从而分布式系统底层的配置文件会被项目所调用,如core-site.xml、hdfs-site.xml;进而生成一个子类DistributedFileSystem,这时候实例对象fs与分布式系统也就紧紧相关了。
            由于我们要写数据,当然就需要使用到输出流,这时候输出流的类型是FsDataOutputStream,其中封装着DFSOutputStream。
            在这里为什么我们看不见或者无法调用DFSOutputStream呢,因为这是Hadoop后台自动给其封装的好的,真正与Hadoop当中的名称节点进行交流的,其实是DFSOutputStream,而不是FsDataOutputStream。
            FsDataOutputStream在项目中是干嘛呢,其实是与客户端进行交流的。

    2. 创建文件元数据

            DFSOutputStream执行RPC远程调用,让名称节点在文件系统的命名空间中新建一个文件。
            名称节点不会直接创建文件,首先会进行检查,检查该文件是否已存在,接着会检查客户端是否有权限去创建该文件。如果检查通过,名称节点则会创建该文件,通过数组返回。

    3. 写入数据

            由于写数据要写入数据节点,而数据副本也会被相应写入进去,有点类似于流水线。在HDFS中有一种非常高效的写数据方式,叫作流水线的复制方式。
            将客户端要写的数据,分成一个个小的数据包,这些数据包会被放在DFSOutputStream对象的内部队列,之后DFSOutputStream向名称节点申请保存这些数据块的数据节点。

    4 写入数据包

            名称节点返回信息后,客户端可以知道写入到哪些数据节点,一个数据节点列表有很多个数据节点,这些数据节点会被排成一个队列, 并且把一个数据保存到多个数据节点上,形成数据流的管道。
            而放在队列的数据包会被再次打包成数据包,将其发送到整个数据流管道当中的第一个数据节点,接着第一个数据节点发送给第二个数据节点以此类推。因为这些数据包要重复写到这些数据块上,一模一样的数据块也叫数据副本。 这些数据节点就形成一个流水线。

    5 接收确认包

            当最后一个数据节点写好数据块后,就会返回一个确认包。最后一个数据节点发送给最后第二个数据节点以此类推,传回到第一个数据节点,再传回到客户端。

    6 关闭文件

            客户端接收到时则说明数据的整个写操作完成。完成后就可以关闭文件。

    7 写操作完成

            由此整个HDFS写操作就就完成。

            具体的代码就不一一展示了,这里主要是介绍其原理的过程分析,后续需要代码的小伙伴可以在评论区回复。

    展开全文
  • HDFS 读数据原理

    2018-07-17 11:54:55
    客户端将要读取的文件路径发送给namenode,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得...

     

    概述

    客户端将要读取的文件路径发送给namenode,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件

     

     

    1. 客户端调用 create 方法,创建一个新的文件;NameNode 会做各种校验,比如文件是否已经存在,客户端是否有权限等。
    2. 如果校验通过,客户端开始写数据到 DN(DataNode),文件会按照 block 大小进行切块,默认 128M(可配置),DataNode 构成 pipeline 管道,client 端向输出流对象中写数据,传输的时候是以比 block 更小的 packet 为单位进行传输,packet 又可拆分为多个 chunk,每个 chunk 都携带校验信息。
    3. 每个 DataNode 写完一个块后,才会返回确认信息,并不是每个 packet 写成功就返回一次确认。
    4. 写完数据,关闭文件。

     

     

    HDFS 文件操作命令有哪些?

    和 Linux 操作文件类似,只列出常见几个,和 Linux 命令的功能也是类似的,如:cp 即拷贝,rm 即删除等等。

     

    #hadoop fs [cat|chgrp|chmod|chown|count|cp|df|get|ls|put|mv|rm|mkdir|tail]

    在 HDFS 中,提供了 fsck 命令,用于检查 HDFS 上文件和目录的健康状态、获取文件的 block 块信息和位置信息等。

     

    #hdfs fsck [move|delete|files|blocks|locations|racks|blockId]

    展开全文
  • HDFS读写数据原理

    千次阅读 2017-12-26 22:04:08
    下面说下HDFS读写数据原理。1 概述 HDFS集群分为两大角色:NameNode、DataNode NameNode负责管理整个文件系统的元数据 DataNode 负责管理用户的文件数据块 文件会按照固定的大小(blocksize)切成若干块后...

    目录

    最近由于要准备面试,就把之前学过的东西好好整理下,权当是复习。
    下面说下HDFS读写数据的原理。

    1 概述

    1. HDFS集群分为两大角色:NameNode、DataNode
    2. NameNode负责管理整个文件系统的元数据
    3. DataNode 负责管理用户的文件数据块
    4. 文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上
    5. 每一个文件块可以有多个副本,并存放在不同的datanode上
    6. Datanode会定期向Namenode汇报自身所保存的文件block信息,而namenode则会负责保持文件的副本数量
    7. HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行

    2 HDFS写数据流程

    2.1 概述
    客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本
    2.2 详细步骤图
    这里写图片描述

    2.3 详细步骤解析
    1、根namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在
    2、namenode返回是否可以上传
    3、client请求第一个 block该传输到哪些datanode服务器上
    4、namenode返回3个datanode服务器ABC
    5、client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将真个pipeline建立完成,逐级返回客户端
    6、client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答
    7、当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。

    3 HDFS读数据流程

    3.1 概述
    客户端将要读取的文件路径发送给namenode,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件
    3.2 详细步骤图

    这里写图片描述
    3.3 详细步骤解析
    1、跟namenode通信查询元数据,找到文件块所在的datanode服务器
    2、挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流
    3、datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)
    4、客户端以packet为单位接收,先在本地缓存,然后写入目标文件

    展开全文
  • HDFS读取数据过程细节上比较复杂,我们先来看一看具体代码是怎样实现读取数据过程的,然后再根据代码进行分析: import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.hadoop....
  • hdfs读写文件原理

    2021-03-13 12:48:36
    hdfs数据原理hdfs数据原理图说明 1.客户端发起请求,namenode需要检测是否可以上传(磁盘大小,节点检查等) 2.namenode检查完毕,觉得可以上传,那么会返回hdfs系统的一些配置,客户端需要根据这些要求(文件块大小...
  • HDFS原理HDFS 读写数据

    千次阅读 2018-07-10 18:00:22
     HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高...
  • HDFS读取和写入数据过程的原理

    千次阅读 2019-11-04 20:34:03
    文件的写入过程 这里的FSDatainputStream改成outputstream 第一步:客户client 发送文件上传的请求给NameNode,NameNode去检查目标文件是否...第三步:NameNode根据当前配置和机架感知原理来进行分配,如返回d...
  • HDFS的读写原理

    千次阅读 2019-02-27 14:14:03
    HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。是根据google发表的论文翻版的。论文为GFS(Google File System)Google 文件系统(中文,英文)。 HDFS有很多特点: 保存多个副本,且提供容错机制...
  • 读取原理: 在Hadoop里面有一个最初的抽象基类叫FileSystem,可以去继承这个FileSystem抽象基类去实现很多具体的子类。例如去继承FileSystem实现HTTP方式访问相关文件、实现FTP方式进行读写文件,以及继承...
  • HDFS写入读取原理详解

    2020-07-07 14:17:52
    HDFS(分布式文件系统)是当下大数据处理组件Hadoop的重要组成部分,用来处理海量数据的存储问题。 企业面试常常会询问些原理方面的知识,只是知道如何操作是不行的,毕竟原理是你学会工具调优的基础,毕竟到企业级...
  • 一、操作图解: ...2、向namenode发送读取指定文件的请求,以求得到块中元数据的信息。 3、namenode如果找到元数据的信息,就会返回目标文件的元数据信息 注:对于每一个块,nameno...
  • HDFS的存储原理

    2019-12-03 22:58:52
    块block的大小默认是128M,hdfs-site.xml <property> <name>dfs.blocksize</name> <value>134217728</value> </property> 副本数默认是3,hdfs-site.xml <property>...
  • HDFS原理

    2017-02-17 13:35:52
    此图包含内容:HDFS结构/HDFS运行机制、HDFS优缺点、HDFS架构、HDFS数据存储单元(block)、HDFS设计思想、SNN合并流程、Block的副本放置策略、HDFS读流程、HDFS写流程、HDFS文件权限与安全模式,需要使用viso工具打开...
  • HDFS基本的原理

    千次阅读 2019-05-09 15:21:13
    HDFS体系结构中有两类节点,一类是NameNode,又叫"元数据节点";另一类是DataNode,又叫"数据节点"。这两类节点分别承担Master和Worker具体任务的执行节点。总的设计思想:分而治之——将大文件、大批量文件,分布式...
  • HDFS读取和写入原理

    千次阅读 2018-10-15 22:50:02
    1.HDFS读操作 1、客户端启动通过调用文件系统对象的 open() 方法读取请求;它是DistributedFileSystem 类型的对象。 2、此对象使用 RPC 连接到 namenode 并获取的元数据信息,如该文件的块的位置。 请注意,...
  • 简述HDFS原理

    2020-12-24 03:49:46
    要理解HDFS的内部工作原理,首先要理解什么是分布式文件系统。1、分布式文件系统多台计算机联网协同工作(有时也称为一个集群)就像单台系统一样解决某种问题,这样的系统我们称之为分布式系统。分布式文...
  • 浅谈HDFS读写数据过程内部原理

    千次阅读 2018-05-28 10:00:39
    深入理解HDFS读写数据过程内部原理
  • 面试完,还是不了解 HDFS 究竟是怎么设计这个写数据流程的。 其实这个里面也有很多我们值得学习的东西,比如既然写数据到 DataNode,如何保障数据一致性,如何保障数据在写的时候不丢失,重试如何做的,如何做三备份...
  • HDFS架构及原理

    2021-12-02 20:04:51
    HDFS架构及原理 1、HDFS架构及存储 HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。一个HDFS集群是由一个NameNode和一定数目的...
  • Client(客户端)对HDFS中的数据进行读写操作,分别是Client从HDFS中查找数据,即为Read()数据;Client从HDFS中存储数据,即为Write(写)... 1.HDFS数据原理  在我们把文件上传到HDFS系统中,HDFS究竟是如何存储..
  • hdfs原理

    2019-01-28 23:29:01
    hdfs写的原理,描述客户端如何将数据写的hdfs中的详细过程
  • 2.NameNode仅存储HDFS的元数据,文件系统中所有文件的目录树,并限制整个集群中的文件 3.NameNode不存储实际文件中的数据数据本身实际存储在DataNode中 4.NameNode知道HDFS中任何给定文件中的块列表及其位置 5...
  • 一、HDFS 读数据流程 (1)客户端通过 DistributedFileSystem 向 NameNode 请求下载文件,NameNode 通过查 询元数据,找到文件块所在的 DataNode 地址。 (2)挑选一台 DataNode(就近原则,然后随机)服务器,...
  • 图解HDFS存储原理

    2019-10-23 16:59:45
    1. HDFS写数据原理 2. HDFS读数据原理 3. HDFS故障类型和其检测方法 第二部分:读写故障的处理 第三部分:DataNode 故障处理 副本布局策略: ...
  • HDFS读写数据的过程

    千次阅读 2020-12-01 00:06:49
    1、数据单位:  block :文件上传前需要分块,这个块就是block,一般为128MB,可以修改。因为块太小:寻址时间占比过高。块太大:Map任务数太少,作业执行速度变慢。它是最大的  一个单位。  packet :packet...
  •  HDFS(Hadoop Distributed File System)是GFS的开源实现。 1.优点:  能够运行在廉价机器上,硬件出错常态,需要具备高容错性  流式数据访问,而不是随机读写  面向大规模数据集,能够进行批处理、能够横向...
  • HDFS读取数据流程

    2020-12-12 21:20:22
    1. 发送请求,连接namenode,执行读取数据 2. namenode接受读取请求后, 首先判断当前这个操作用户是否拥有读取权限,如果不具有直接报错。 如果有读取权限,接着判断要读取的目录下是否存在这个文件,如果不存在,...
  • 客户端写数据HDFS的流程 客户端要向HDFS数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向...
  • HDFS工作原理

    千次阅读 2021-12-02 15:33:56
    HDFS工作原理 1、NameNode 和 DataNode ​ HDFS采用master/slave架构。一个HDFS集群是由一个NameNode和一定数目的DataNode组成。NameNode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,576
精华内容 13,030
关键字:

hdfs读数据的原理