HDFS - 写文件

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的集群,最好是负载平衡的,这样才能尽量利用集群的优势

hadoop写文件 java_写文件 - Hadoop 学习手册_教程_Java开发社区相关推荐

  1. java中整数的整数次方_数值的整数次方 - 剑指 Offer 学习心得_教程_Java开发社区...

    数值的整数次方 代码实现: [java] view plaincopyprint? public class Test11 { /** * 实现函数double Power(double base, ...

  2. c4d完全学习手册_动态视觉设计就业班,全商业项目实训,一线制作团队10人小班授课,持续提升学习...

    CUBE专注动态视觉设计培训.CUBE依托本身设计公司制作资源优势,将培训制作完美结合,开设有北京实体培训课程以及网络案例实战课程. CUBE课程与工作要求完美对接,16周高强度集训,零基础学员毕业后 ...

  3. 软件开发人员的学习计划_经常与开发人员混在一起培养创新和学习的文化

    软件开发人员的学习计划 Without skilled developers, the Scrum Framework is no more than lipstick on a pig. Havin ...

  4. zemax光学设计超级学习手册_穿越十年的一个ZEMAX光学设计案例

    目前超过两千人的光学与光学设计方面的微信公众号,欢迎您! 穿越十年的一个ZEMAX光学设计案例 作者:窗台小绿萝 CAD,这个词已经深入到学习.工作很多年,翻译过来就是Computer Aided D ...

  5. python语言设计学习方向_学好Python开发就业方向有哪些?

    原标题:学好Python开发就业方向有哪些? 近年来,Python市场火爆,从业人员薪资不断增加,选择学Python的人也在逐年增多.然而,很多人学Python只是盲目的跟随潮流,对于Python却不 ...

  6. java web开发学习手册_【Java手册】Java开发手册_华山版(2019.06)

    版本号:1.5.0 更新日期:2019.06.19 制定团队:阿里巴巴与Java社区开发者 更新亮点:华山版,新增21条设计规约,修改描述112处,完善若干处示例 2017年春天,<阿里巴巴Ja ...

  7. JAVA学习笔记_五JAVA开发中的WEB前端技术

    css 字体属性: font-size   font-style   font-family   font-weight   font 设置字体font-family时,中文.英文字体设置时的顺序,英 ...

  8. c语言程序设计第四版乌云高娃,C语言程序设计教学课件作者第3版乌云高娃学习手册C语言程序设计教学课件作者第3版乌云高娃学习手册学习手册第10章文件及其应用课件.docx...

    C语言程序设计教学课件作者第3版乌云高娃学习手册C语言程序设计教学课件作者第3版乌云高娃学习手册学习手册第10章文件及其应用课件.docx 学习手册(1):文本文件的操作学习内容文本文件的操作学习目标 ...

  9. 学习JQuery插件开发教程

    如果你跟我一样,jQuery属于入门级的,那么我建议你看我下一篇jQuery教程:自己动手开发jquery插件 ,这篇插件比较容易理解和模范,适合新手开发jQuery插件.推荐你去看一看. 在逛cod ...

最新文章

  1. grep查找时,去掉grep本身那一条
  2. 类和对象——对象特性——this指针的用途
  3. 【android】SurfaceFlinger合成
  4. 1092 最好吃的月饼 (20 分
  5. java基础面试题:说说和的区别
  6. 高级工作流模式深入业务场景分析(1)——多路合并
  7. java 交互式 shell_Java9 Shell工具(JShell)
  8. Linux 命令(34)—— vim 命令
  9. File类之常用方法
  10. Maven—Eclipse设置Maven项目JDK版本
  11. google退出中国声明 英文版原文
  12. 华为鸿蒙用不用清理内存卡,华为这6个设置必须要关,否则天天清理内存也没用,关了再用5年...
  13. antd table input 失焦的问题
  14. OSPF网络类型以及不规则区域练习
  15. VUE学习(一)、创建一个Vue应用。
  16. 友盟集成第三方分享和登录
  17. 【Android】AppCompat V21:将 Materia Design 兼容到5.0之前的设备
  18. 【微服务】什么是微服务?微服务与分布式的区别?微服务怎么具体实践微服务?服务端发现和客户端发现...
  19. 如何利用TikTok免费流量做例如黑五类这样的产品?
  20. PC-DMIS 2019五方向测针的校验和使用

热门文章

  1. 模拟Web 服务器磁盘满故障深入解析
  2. 转: java学习路线图
  3. REDIS 高可用性部署架构图
  4. Paxos分布式一致性算法简介和Apache ZooKeeper的概念映射
  5. linux开机关机命令
  6. 2008-07-30 郁闷的旅行之一
  7. mysql数据库 web asp.net,使用基于asp.net web的应用程序的mysql数据库
  8. 电信运营商计费模型_商客通:电信400电话怎么办理
  9. mysql利用存储过程批量插入数据
  10. 字符串 拼接方法,公司内部的方法,用集合转换成拼接的字符串