好程序员大数据分享 HDFS读写两步教程

185 篇文章 3 订阅
8 篇文章 0 订阅

一、HDFS读写之前提

NameNode(元数据节点):存放元数据(名称空间、副本数、权限、块列表、集群配置信息),不包含数据节点。元数据节点将文件系统元数据存储在内存中。

1.DataNode(数据节点):真正存储数据的地方,以数据块为单位。默认数据块大小为128M。数据节点周期性的将所有存储块信息发送给元数据节点。客户端通过和NameNode节点沟通后,再向数据节点对数据读出或写入。

2.SecondaryNameNode(从元数据节点):并不是元数据节点的备用节点,而是配合元数据节点工作,与元数据节点有不同的工作。SecondaryNameNode周期性地将元数据节点的命名空间镜像文件和修改日志合并,帮助元数据节点将内存中元数据信息存储到磁盘上。

3.Client(客户端):客户端就是需要获取HDFS系统中文件的应用程序和接口,引发HDFS的读/写等操作。

值得注意的是:

1.namenode实际客户端只上传一个datanode,其余两个是namenode完成的。让datenote自己复制的。然后复制完成以后逐级返回结果给namenode。如果2,3datanode复制失败,再有namenode分配新的datanode地址。对于客户端来说默认上传一个datanode就可以了,其余的由datanode自己复制。

2.datanode切片是由客户端完成的。datanode第二三个副本的上传和第一个上传是异步的。

二、HDFS中的写流程:

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的服务器

三、hdfs中的读流程:

1.跟namenode通信查询元数据,找到文件块所在的datanode服务器。

2.挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流。

3.datanode开始发送数据。(从磁盘里面读取数据放入流,以packet为单位来做校验)

4.客户端以packet为单位接收,先在本地缓存,然后写入目标文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个开源的大数据框架,它可以帮助处理和存储大规模数据集。作为一名好的程序员,在大数据领域掌握Hadoop是非常重要的。 首先,好的程序员需要了解Hadoop的基本概念和架构。Hadoop采用分布式文件系统和分布式计算模型,可以将数据存储在多个节点上进行并行处理。程序员需要了解Hadoop的组成,如HDFS(分布式文件系统),YARN(资源管理器)和 MapReduce(计算框架)等,以便能够正确地配置和管理Hadoop集群。 其次,好的程序员需要熟练掌握Hadoop的编程模型和编程语言。Hadoop使用Java作为主要编程语言,程序员需要熟悉Java并掌握Hadoop相关的API。此外,Hadoop还支持其他编程语言如Python和Scala,程序员可以根据自己的需求选择合适的语言进行开发。 另外,好的程序员需要了解Hadoop生态系统中的其他工具和技术。Hadoop生态系统包含了许多与Hadoop配套的工具,如Hive、Pig、Spark等。这些工具可以帮助程序员更方便地进行大数据处理和分析。对于好的程序员来说,了解并熟练使用这些工具是非常必要的。 最后,好的程序员需要具备解决实际问题和优化性能的能力。Hadoop是一个非常强大的工具,但是在处理大规模数据时可能会面临一些挑战,如数据倾斜、性能瓶颈等。好的程序员需要能够分析和解决这些问题,并进行性能优化,以确保Hadoop集群的稳定运行。 总之,作为好的程序员,在大数据领域掌握Hadoop是非常重要的。通过了解Hadoop的概念和架构、熟练掌握Hadoop的编程模型和编程语言、了解Hadoop生态系统中的其他工具和技术,以及具备解决实际问题和优化性能的能力,程序员可以更好地利用Hadoop进行大数据处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值