关闭

[置顶] 【Hadoop--03】HDFS写文件

标签: hdfs
416人阅读 评论(0) 收藏 举报
分类:

这里写图片描述

1.客户端将文件写入本地磁盘的N#x4E34;时文件中

2.当临时文件大小达到一个block大小时,HDFS client通知NameNode,申请写入文件

3.NameNode在HDFS的文件系统中创建一个文件,并把该block id和要写入的DataNode的列表返回给客户端

4.客户端收到这些信息后,将临时文件写入DataNodes

4.1 客户端将文件内容写入第一个DataNode(一般以4kb为单位进行传输)
4.2 第一个DataNode接收后,将数据写入本地磁盘,同时也传输给第二个DataNode
4.3 依此类推到最后一个DataNode,数据在DataNode之间是通过pipeline的方式进行复制的
4.4 后面的DataNode接收完数据后,都会发送一个确认给前一个DataNode,最终第一个DataNode返回确认给客户端
4.5 当客户端接收到整个block的确认后,会向NameNode发送一个最终的确认信息
4.6 如果写入某个DataNode失败,数据会继续写入其他的DataNode。然后NameNode会找另外一个好的DataNode继续复制,以保证冗余性
4.7 每个block都会有一个校验码,并存放到独立的文件中,以便读的时候来验证其完整性
5.文件写完后(客户端关闭),NameNode提交文件(这时文件才可见,֘#x5982;果提交前,NameNode垮掉,那文件也就丢失了。fsync:只保证数据的信息写到NameNode上,但并不保证数据已经被写到DataNode中)

Rack aware(机架感知)

通过配置文件指定机架名和DNS的对应关系

假设复制参数是3,在写入文件时,会在本地的机架保存一份数据,然后在另外一个机架内保存两份数据(同机架内的传输速度快,从而提高性能)

整个HDFS的集群,最好是负载平衡的,这样才能尽量利用集群的优势

0
0
查看评论

java hadoop hdfs 上写文件

项目中会用到往hdfs 上写文件  ,为下面kafka 往hdfs 上写文件做基础。 实例如下: 1、配置文件:com/xiefg/config/system.properties    #以下是安装 hadoop 配置文件的路径 core.path=/...
  • u010011737
  • u010011737
  • 2017-02-06 11:20
  • 1181

HDFS读写文件的过程

HDFS写入流程 1、 使用HDFSᨀ供的客户端Client, 向远程的Namenode发起RPC请求 2、 Namenode会检查要创建的文件是否已经存在, 创建者是否有权限进行操作, 成功则会为文件创建一个记录, 否则会让客户端抛出异常; 3、 当客户端开始写入文件的时候, 客户端会将文件...
  • sunspeedzy
  • sunspeedzy
  • 2017-04-03 14:34
  • 892

Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)

一、综述      HDFS写文件是整个Hadoop中最为复杂的流程之一,它涉及到HDFS中NameNode、DataNode、DFSClient等众多角色的分工与合作。      首先上一段代码,客户端是如何写文件的:Configurat...
  • lipeng_bigdata
  • lipeng_bigdata
  • 2016-12-19 16:12
  • 1530

HDFS写文件过程分析

HDFS是一个分布式文件系统,在HDFS上写文件的过程与我们平时使用的单机文件系统非常不同,从宏观上来看,在HDFS文件系统上创建并写一个文件,流程如下图(来自《Hadoop:The Definitive Guide》一书)所示: 具体过程描述如下: Client调用Distribu...
  • linuxheik
  • linuxheik
  • 2016-04-16 13:58
  • 890

Hadoop之HDFS文件读写过程

一、HDFS读过程       1.1 HDFS API 读文件  Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Pat...
  • u013800147
  • u013800147
  • 2015-05-22 16:04
  • 7871

HDFS读写文件实例与解析

使用实例: 1.项目结构(引入包hadoop-0.20.2-core.jar和commons-logging.jar) 2.代码 HdfsCommon.java public class HdfsCommon { private Configuration co
  • whuqin
  • whuqin
  • 2011-08-29 17:49
  • 18727

HDFS读写文件流程

1.HDFS写流程: 客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后,客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本如图: 写详...
  • qq_20641565
  • qq_20641565
  • 2016-11-24 23:49
  • 5350

Java读写HDFS文件

一、依赖包maven路径     org.apache.hadoop    hadoop-client    2.7.3    runti...
  • chongxin1
  • chongxin1
  • 2017-08-26 17:47
  • 634

HDFS 中向 DataNode 写入数据失败了怎么办

如果向DataNode写入数据失败了怎么办? 如果这种情况发生,那么就会执行一些操作: ① Pipeline数据流管道会被关闭,ACK queue中的packets会被添加到data queue的前面以确保不会发生packets数据包的丢失 ② 在正常的DataNode节点上的以保存好的blo...
  • HeatDeath
  • HeatDeath
  • 2018-01-09 14:06
  • 97

权限导致对hdfs文件读写错误

原文地址:http://www.verydemo.com/demo_c372_i12845.html error:org.apache.oozie.action.ActionExecutorException: JA002: org.apache.hadoop.security.AccessC...
  • u010571535
  • u010571535
  • 2014-10-11 17:54
  • 1010
    个人资料
    • 访问:454619次
    • 积分:8871
    • 等级:
    • 排名:第2582名
    • 原创:400篇
    • 转载:2篇
    • 译文:0篇
    • 评论:54条
    加朋友
    我的微信:laidefa
    加入群
    数据分析[1群] qq群:697118923 数据挖掘[1群] qq群:331583141
    最新评论