Hadoop I/O操作原理整理

I/O操作中的数据检查

  校验和方式是检查数据完整性的重要方式。一般会通过对比新旧校验和来确定数据情况,如果两者不同则说明数据已经损坏。比如,在传输数据前生成了一个校验和,将数据传输到目的主机时再次计算校验和,如果两次的校验结果不同,则说明数据已经损坏。因为Hadoop采用HDFS作为默认的文件系统,因此具有两方面的数据完整性。

1、本地文件I/O的检查

   本地文件系统的数据完整性由客户端负责,重点是在存储和读取文件时进行校验和的处理。每当Hadoop创建文件a时,Hadoop就会同时在同一文件夹下创建隐藏文件a.crc,这个文件记录了文件a的校验和。针对数据文件的大小,每512字节Hadoop就会生成一个32位的校验和(4字节)。

2、对HDFS的I/O数据进行检查

  DataNode接收数据后,存储数据前。它接收数据一般有两种情况:一是用户从客户端上传数据;二是DataNode从其他DataNode上接收数据。Hadoop不会在数据每流动到一个DataNode时都检查校验和,它只会在数据流动到最后一个节点时检验校验和。

3、在MapReduce程序中使用压缩

  设置Map处理后数据的压缩代码示例如下:

JobConf conf = new JobConf();
conf.setBoolean("mapred.compree.map.output",true);
//设置output输出压缩
conft.setBoolean("mapred.output.compress",true);
conf.setClass("mapred.output.compression.codec",GzipCodec.class,CompressionCodec.class);

4、数据的I/O中序列化操作

  序列化是将对象转化为字节流的方法,或者说用字节流描述对象的方法。与序列化相对的是反序列化,反序列化是将字节流转化为对象的方法。序列化有两个目的:进程间通信;数据持久性存储

Hadoop采用RPC来实现进程间通信,一般而言,RPC的序列化机制有以下特点:

  紧凑:紧凑的格式可以充分利用带宽,加快传输速度。

  快速:能减少序列化和反序列化的开销,这会有效减少进程间通信的时间。

  可扩展:可以逐步改变。

  在Hadoop中,并没有采用JAVA提供的序列化机制,而是自己重新写了一个序列化机制Writables。Writables具有紧凑、快速的优点。但不易拓展。

Text

  这是Hadoop中对string类型的重写,但是又与其有一些不同。Text使用标准的UTF-8编码,同时Hadoop使用变长类型VInt来存储字符串,其存储上线是2GB。Text类型与String类型的主要差别在于:

  1、 Stirng的长度定义为String包含的字符个数;Text的长度定义为UTF-8编码的字节数。

  2、String内的indexOf()方法返回的是char类型字符的索引。Text的find()方法返回的是字节偏移量。

  3、String的charAt()方法返回的是指定位置的char字符;而Text的charAT()方法需要指定偏移量。

SequenceFile类

  SequenceFile记录的是key/value对的列表,是序列化之后的二进制文件,因此是不能直接查看的。可通过:hadoop fs -text mySequenceFile查看

参考:《Hadoop实战》

时间: 2024-08-24 03:04:37

Hadoop I/O操作原理整理的相关文章

Hadoop每日一讨论整理版

这是我在几个QQ群发起的Hadoop每日一讨论小活动,每天中午2点左右发出一个关于Hadoop的知识片段,在此做一个整理. [每日一讨论]之计算框架(2013-5-21) 就计算框架而言,Hadoop目前比较成熟的只有离线计算框架MapReduce(通常运行时间在1min以上),以及构建在MapReduce之上支持sql的Hive.随着发展,实时计算(通常运行时间在0~5s)有了需求,于是诞生了仿照Google dremel实现的Apache Drill和Cloduera impala,Twit

解决Hadoop一些小问题(整理版)

1 dfsadmin -setQuota的问题 dfsadmin -setQuota 限制文件数量 dfsadmin -setSpaceQuota 限制磁盘空间 2 解决Hadoop小文件问题? 数据块的默认大小是64M,如果一个文件的大小小于64M,那么它就属于Hadoop的小文件. 这样会浪费空间,所以要使用archive的方式来实现归并小文件.数据块的大小可以使用 dfs.block.size这个属性进行配置. 3 start-dfs.sh的告警信息 unable to load nati

学习Hadoop生态系统最值得一读的书籍

学习大数据的处理,有必要读一下有关大数据的书籍.这里,我列举了几本书,仅供参考. 1 ZooKeeper: Distributed Process Coordination 这本书针对的是初级或者高级的开发,面向Zookeeper编程的工程师们.如果你的工程中(如HBase)涉及到Zookeeper的应用,有必要了解一下Zookeeper的管理知识和一些基本解决Zookeeper问题的能力.这本书里,鼓励读者查阅Zookeeper的源码,并给予有价值的反馈. 2 Apache Sqoop Coo

Hadoop入门学习笔记---part1

随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力,好好做.正是因为选题和hadoop有关,现在正式开始学习hadoop.将笔记整理于此,希望与志同道合的朋友共同交流. 作者:itRed 邮箱:[email protected] 个人博客链接:http://www.cnblogs.com/itred 好了,废话不多说.进入正题!开始hadoop的学习

【hadoop】hadoop3.2.0应用环境搭建指南

下面列出我搭建hadoop应用环境的文章整理在一起,不定期更新,供大家参考,互相学习!!! 第一篇 HADOOP部分 1.1 hadoop3.2.0的安装并测试 1.2 编译Hadoop连接eclipse的插件遇见的一系列错误,崩溃的操作 1.3 在eclipse上运行WordCount的操作过程 第二篇 HIVE与HBASE部分 2.1centos7下mysql的安装以及基本操作 2.2centos7下apache-hive-3.1.2-bin的安装测试 2.3apache-zookeeper

大数据精英实战项目班-Hadoop-Spark-真实企业项目

2018最新最全大数据技术视频,项目视频.整套视频,非那种杂七杂八自己拼凑的,内容如下,需要的联系QQ:3164282908(加Q注明大数据) 更有海量大数据技术视频.大数据项目视频,机器学习深度学习技术视频.项目视频.Python编程视频.Oracle数据库视频.Java培训视频高级架构师视频等等等. ├----------01-大数据Java基础------------- │├java第01天 ││├java第01天-01.类型转换.avi ││├java第01天-02.归档分析与实现.av

Hive1.2.2的安装和配置

Hadoop环境搭建笔记整理(四)--Hive1.2.2的安装和配置 苏洛尔寂 www.bdqll.top,别看了啥也没有 1 人赞了该文章 一.是什么和做什么 1.什么是Hive? 一个数据仓库工具 Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成 不可更改和添加数据 Hive 并非为联机事务处理而设计,Hive 并不提供实时的查询和基于行级的数据更新操作.Hive 的最佳使用场合是大数据集的批处理作业 上述的描述是从官方的角度.在学习过程中,对hadoop和hi

再次整理关于hadoop中yarn的原理及运行

关于hadoop中yarn的运行原理整理 一:对yarn的理解 1.关于yarn的组成 大约分成主要的四个. Resourcemanager,Nodemanager,Applicationmaster,container 2.Resourcemanager(RM)的理解 RM是全局资源管理器,负责整个系统的资源管理和分配. 主要由两个组件组成:调度器和应用程序管理器(ASM) 调度器:根据容量,队列等限制条件,将系统中的资源分配给各个正在运行的应用程序,不负责具体应用程序的相关工作,比如监控或跟

Hadoop配置项整理(hdfs-site.xml)

续上篇整理一下hdfs相关的配置项  name  value Description  dfs.default.chunk.view.size 32768 namenode的http访问页面中针对每个文件的内容显示大小,通常无需设置. dfs.datanode.du.reserved 1073741824 每块磁盘所保留的空间大小,需要设置一些,主要是给非hdfs文件使用,默认是不保留,0字节 dfs.name.dir /opt/data1/hdfs/name,/opt/data2/hdfs/n