HDFS的I/O主要是三个方面:
  一致性
  HDFS在一致性上面主要是通过校验和(checksum)来实现;从client发起写入的时候会校验一下文件内容,但是发生在pipeline的最后一个节点的时候。为什么没有在最早的一个节点来校验呢?因为在复制到后续节点的时候可能发生丢包导致异常情况;在最后一个节点做了这件事情就保证了pipeline的这一条线任何一点有问题都会回滚;
  可以不用checksum,这个是通过client端使用的类决定的;如果采用的是RawLocalFileSysem则是禁用checkSum,如果采用的是CheckSumFileSystem(本身这个类抽象类,继承类是LocalFileSystem),则是代表启用Checksum;如果采用RawLocalFileSystem则是关闭checksum;

  压缩
  好处是存储方面:节省空间,传输:加速网络传输。压缩就存在解码问题,交给Codec来处理;在Hadoop里面有Cachec Pool的对象,避免频繁创建Codec对象影响性能。
  压缩要考虑一个问题,就是文件的分片;如果一种压缩方式不支持分片,那么map就无法并行进行处理一个压缩块了,现在只有bzip2是支持分片的,其他的gizp,LZO等都不支持分片;这个要考虑;
  MapReduce的处理流程处处都是和压缩有关系,比如mapreduce从hdfs中读取数据是要解压缩,处理完是后,作为中间结果保存是要进行压缩(不强制,可配置),shuffle传输过程直接处理压缩的中间结果,然后到了reduce端在进行解压缩。

  序列化
  到底什么是序列化?将结构化的对象转变为字节流(二进制)就是序列化。为什么要序列化,因为要存储和传输;序列化包括两方面,一方面是要转化为字节流,另外一方面就是要通过格式来整合值;只有这样才能够序列化之后反序列化;还有都把那些内容序列化等,这些细节处理很多序列化框架处理都是不一样;比如java原生的序列化就会把类名也给序列化;但是Writable则不会做这件事情。所以序列化一般都是经历两个过程,首先是将结构化的对象转化为某种格式,然后再对格式进行转化;比如对象的xml序列化,首先根据注解将对象转为xml格式,然后再对xml进行字节流处理。这个格式就是为了在反序列化的时候遵循的原则;比如文本文件,\r就是换行。
  序列化的框架包括:
  1)Writable,writable是mapreduce里面标准的序列化的处理类;
  2)AVRO,是Hadoop之父Doug Cutting主持开发的,一种跨语言性很好的IDL语言(可以根据文件生成java类)。其实Parquet出来之后,其优势是明显优于AVRO的,但是在Hadoop权威指南中,AVRO仍然放在的第一的位置上面描述;AVRO是json格式(序列化格式为JSON,类似于xml),压缩自选。
  3)Parquet,一种列式存储序列化格式;性能很高;
  4)Sequence File,一种可以适合于存储二进制字段的序列化类型,SequenceFiles是格式的;就是通过这种格式,保证了Sequence File相对高效的读取;文本文件只有回车特殊字符,导致再度取得时候要不断分析当前字节是否是回车,这种模式对于一行字符数不多的文本文件来讲是可以接受的,但是如果是blob这种大数据的存储,这种遍历的模式已经不再使用;但是SequenceFile不同,格式中专门定义了长度为,可以合理的跳转到相应的位置,这就是协议(格式)的优势。
  那么关于AVRO和SequenceFile的差别是什么Doug Cutting在内部一封邮件中解释了一下,手下是AVRO的互操作性很好 ,IDL语言,可以支持python,c++,Java,c等;第二个就是AVRO是有版本的(Versioning),对于数据结构的修改AVRO可以进行记录。

HDFS(二)的更多相关文章

  1. HDFS(二) 底层通信原理——RPC 及 动态代理

    一.RPC(Remote Procedure Call  ) :远程过程调用 1.RPC是远程过程调用协议,实现调用者和被调用者二地之间的连接和通信.其基本通信模型是基于client/server进程 ...

  2. HDFS二.HDFS实现分布式文件存储---体系结构

    单击模式(Standalone): 单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置.在这种默认模式下所有3个XML文件均为 ...

  3. Hadoop 学习之路(六)—— HDFS 常用 Shell 命令

    1. 显示当前目录结构 # 显示当前目录结构 hadoop fs -ls <path> # 递归显示当前目录结构 hadoop fs -ls -R <path> # 显示根目录 ...

  4. windows上传文件到 linux的hdfs

    一.windows上传文件到 linux的hdfs 1.先在 centos 上开启 hdfs, 用 jps 可以看到下面信息, 说明完成开启 2.在win上配置 hadoop (https://www ...

  5. 将爬取的实习僧网站数据传入HDFS

     一.引言: 作为一名大三的学生,找实习对于我们而言是迫在眉睫的.实习作为迈入工作的第一步,它的重要性不言而喻,一份好的实习很大程度上决定了我们以后的职业规划. 那么,一份好的实习应该考量哪些因素呢? ...

  6. 什么是HDFS?算了,告诉你也不懂。

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上一篇已经讲解了「大数据入门」的相关基础概念和知 ...

  7. 【Spark】Spark-shell案例——standAlone模式下读取HDFS上存放的文件

    目录 可以先用local模式读取一下 步骤 一.先将做测试的数据上传到HDFS 二.开发scala代码 standAlone模式查看HDFS上的文件 步骤 一.退出local模式,重新进入Spark- ...

  8. hbase优化之region合并和压缩

    HBASE操作:(一般先合并region然后再压缩) 一 .Region合并: merge_region   'regionname1','regionname2' ,'true'  --true代表 ...

  9. Apache Druid架构原理与应用场景

    为了帮助卖家提高运营水平,卖家管理后台会展示一些访客.订单等趋势和指标数据,如PV,UV,转化率,GMV等: 这些指标的计算依靠前端埋点和订单详情等数据,其特点是数据量大,并有一定的实时性要求. Dr ...

  10. Hadoop专有名词

    Hadoop专有名词 一. HDFS 二. MapReduce 1.MRAppMaster:MapReduce Application Master 负责整个过程调度和协调的 2.MapTask:在M ...

随机推荐

  1. hdu3544找规律

    如果x>1&&y>1,可以简化到其中一个为1的情况,这是等价的,当其中一个为1(假设为x),另一个一定能执行y-1次, 这是一个贪心问题,把所有的执行次数加起来比较就能得到 ...

  2. Redis原理与实践总结

    Redis原理与实践总结 本文主要对Redis的设计和实现原理做了一个介绍很总结,有些东西我也介绍的不是很详细准确,尽量在自己的理解范围内把一些知识点和关键性技术做一个描述.如有错误,还望见谅,欢迎指 ...

  3. Python之如何删除pandas DataFrame的某一/几列

    删除pandas DataFrame的某一/几列: 方法一:直接del DF['column-name']   方法二:采用drop方法,有下面三种等价的表达式: 1. DF= DF.drop('co ...

  4. Day16 Django深入讲解

    参考博客: http://www.cnblogs.com/yuanchenqi/articles/6083427.html http://www.cnblogs.com/yuanchenqi/arti ...

  5. 【Error】:10061由于目标计算机积极拒绝,无法连接

    之前Windows上连接mongodb的时候首先用mongod.exe启动程序之后,用mongo.exe来连接数据库.但是在连接的时候,出现如下错误: error:10061 由于目标计算机积极拒绝, ...

  6. jquery基础 笔记一

    一. 1. vsdoc: 在Visual Studio中需要引入此版本的jquery类库才能启用智能感知.如:jquery-1.3.2-vsdoc2.js<body> <div id ...

  7. hdu3829

    题解: 对于每一个孩子裂点+建边 如果i孩子讨厌的和j孩子喜欢的相同,那么建边 然后跑最大独立集 代码: #include<cstdio> #include<cstring> ...

  8. hdu 6059 Kanade's trio(字典树)

    Kanade's trio Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)T ...

  9. C++面向对象高级编程(二)基础篇

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 概要 知识点1.重载成员函数 知识点2 . return by value, return by reference 知识点3 重载非成员函数 ...

  10. Android程序员学WEB前端(7)-CSS(2)-伪类字体文本背景边框-Sublime

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/76618373 觉得博文有用,请点赞,请评论,请关注,谢谢!~ 伪类: <!DOC ...