Hadoop的API官网:http://hadoop.apache.org/common/docs/current/api/index.html
 
相关的包
org.apache.hadoop.io
org.apache.hadoop.io.compress
org.apache.hadoop.io.file.tfile
org.apache.hadoop.io.serializer.arvo
 
Apache官网的sort900实验用了900台主机
淘宝用了1500台主机来存储数据。
Hadoop采用CRC-32来校验数据。
 
数据完整性:
1:本地文件的IO检查
校验和机制的相关的类:org.apache.hadoop.fs.ChecksumFileSystem来读取相关的类
禁用校验和机制:修改src/core/core-default.xml中的fs.file.impl的值为org.apache.hadoop.fs.RawLocalFileSystem
 
 
2:HDFS的文件IO检查
(1)datanode接收数据后存储数据前
(2)客户端读取datanode上的数据时
(3)datanode后台守护进程的定期检测
 
3:数据恢复策略
(1)检查已恢复标签
(2)统计各个备份数据的恢复状态
(3)副本同步
hadoop fs -get [ignoreCrc]  [-crc] <src>  <localdst>
 
数据压缩:
1:减少存储空间
2:加快传送速度
org.apache.hadoop.io.compress包中
代码如下:
conf.setBoolen("mapred.compress.map.output",true)
conf.setBoolen("mapred.output.compress",true)
conf.setBoolen("mapred.output.compression.type","Block")
conf.setClass("mapred.output.compression.codec",GzipCodec.class,CompressionCodec.class)
 
数据序列化
(1)进程间通信
(2)数据持久化存储
 
 

org.apache.hadoop.io.Writable类和java.lang.Comparable类   
 
1.Writable类定义了两个方法:
序列化输出数据流:   void     write(Dataoutput out)   throw       IOException
反序列化输入数据流:void    readFields(Datainput in)throw   IOException
 
2.Comparable类定义了三个方法:
comparreTo方法,hashCode方法,equals方法
 
3.WritableComparable的write方法,readFields方法,comparreTo方法,hashCode方法,equals方法
 

                                       
java.util.Comparator                            
Comparator类的compare方法
RawComparator类
WritableComparator
 
 

NullWritable

ByteWritable和BytesWritable

 

ObjectWritable

ArraryWritable和TwoDArraryWritable
Text
MapWritable和sortedMapWritable
CompressedWritable
GenericWritable
VesiondWritable
 

针对Hadoop的文件类
SequenceFile类和MapFile类
SequenceFile类记录的是key-value对,是序列化后的二进制文件
有三种类型结构:
1:未压缩的key-value对
2:记录压缩的key-value对,只有value被压缩
3:block 压缩的key-value对,key和value分别被压缩
 
 
 

Hadoop的IO操作的更多相关文章

  1. [.NET] 利用 async & await 进行异步 IO 操作

    利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html  序 上次,博主 ...

  2. 文件IO操作..修改文件的只读属性

    文件的IO操作..很多同行的IO工具类都是直接写..但是如果文件有只读属性的话..则会写入失败..所以附加了一个只读的判断和修改.. 代码如下: /// <summary> /// 创建文 ...

  3. python之协程与IO操作

    协程 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B ...

  4. JAVASE02-Unit08: 文本数据IO操作 、 异常处理

    Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.i ...

  5. JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作

    基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...

  6. IO操作概念。同步、异步、阻塞、非阻塞

    “一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作. 同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO. 阻塞IO和非阻塞IO的区别在于第 ...

  7. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  8. java中的IO操作总结

    一.InputStream重用技巧(利用ByteArrayOutputStream) 对同一个InputStream对象进行使用多次. 比如,客户端从服务器获取数据 ,利用HttpURLConnect ...

  9. Linux系统编程--文件IO操作

    Linux思想即,Linux系统下一切皆文件. 一.对文件操作的几个函数 1.打开文件open函数 int open(const char *path, int oflags); int open(c ...

随机推荐

  1. 1.2.2 Loaders - 加载器

    Loaders从Android 3.0引入,它使得在activity或是fragment里进行异步数据加载变得非常简单.Loaders有如下的特性: 它在每个 Activity  和 Fragment ...

  2. Node.js 配置Nginx

    1.修改nginx.conf upstream nodejs { server 127.0.0.1:3000; #server 127.0.0.1:3001; keepalive 64; } serv ...

  3. debian下为arm开发板创建基于debian或emdebian的根文件系统

    Debian系统本身包含对arm的支持,其包含的软件包最多,但是最终的文件系统要大一些. emdebian 是一个非常好用的嵌入式linux操作系统,其基于debian的特点对于熟悉debian系统的 ...

  4. IPC之信号量

    无名信号量 POSIX标准提出了有名信号量和无名信号量来同步进程和线程,而linux(2.6以前)只实现了无名信号量. sem_overview中有详细介绍:man 7 sem_overview. S ...

  5. 第一百四十三节,JavaScript,利用封装库做百度分享

    JavaScript,利用封装库做百度分享 效果图 html代码 <div id="share"> <h2>分享到</h2> <ul> ...

  6. mfc小工具开发之定时闹钟之---多线程急线程同步

    一.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消息机制,通常 ...

  7. source insight Confirm by typing ‘yes' below"、"has been changed outside of the editor. Do you want to reload the file?"、“

    阅读内核代码习惯和喜欢使用source insight.如果能在source insight上修改内核代码,同时又不需要把修改的内核代码再拷贝到虚拟ubuntu上去那就方便了.于是想通过用samba与 ...

  8. 关于Eclipse配置tomcat

    本人花了2-3天检索如何配置tomcat,终于在今天中午安装成功了!!!(本人用的是安装版) 1.首先安装tomcat 7到自己想要安装的盘(以D:\IT程序需求\Tomcat为例,且跳过JDK的安装 ...

  9. 基础-Eclipse 教程

    1.Eclipse 是一个开放源代码的.基于 Java 的可扩展开发平台.2.下载地址为: https://www.eclipse.org/downloads/.3.Eclipse 修改字符集 : W ...

  10. JavaScript------日期和时间戳的相互转换

    var date = new Date(); 日期转时间戳 Number(date)或者date.getTime(); //只是转换成了纯数字的时间戳,例如:1498144203861需要转换才能使用 ...