Hadoop003-Hadoop的I/O操作

1、数据完整性

重点词汇

1、校验和(checksum)
2、复本因子(replication factor)
3、一系列datanode组成的管线
4、fs -checksum
5、distcp

2、压缩

文件压缩优点:

1.减少存储文件所需要的磁盘空间。
2.加速数据在网络和磁盘上的传输。

执行命令:

1.创建一个名为file.gz的压缩文件: %gzip -1 file
2.将file.gz文件解压成file文件命令:%hadoop FileDecompressor.file.gz
3.CompressionCodec

文件压缩与输入分片

1.gzip不支持文件切分。(由于gizp文件不支持切分,所以整个文件只能在一个map上执行,无法在多个map上同时执行,会导致执行时间较长)
2.容器文件格式(如顺序文件、Avro数据文件、ORCFiles或者Rarquet文件)同时支持压缩和切分。
3.mapreduce应用读/写是未经压缩的数据,由于map任务的输出需要写到磁盘,并通过网络传输到reducer节点。通过对传输的数据使用LZO、LZ4、Snappy这样的快速压缩方法可以获得性能提升。

序列化

序列化:将结构化对象转换成字节流以便在网络上传输或写到磁盘进行永久化存储的过程。
反序列化:指将字节流转回结构化对象的逆过程。
序列化用于分布式数据处理的两大领域:进程间通信和永久存储。
RPC:远程过程调用。

Writable类

Writable类对所有Java基本类型提供封装,char类型除外(可以存储在IntWritable中)。所有的封装包含get()和set()两个方法用于读取或存储封装的值。
1.Text是针对utf-8序列的Writable类。一般可以认为他是Java.lang.String的Writable等价。最大值为2GB
2.BytesWritable是对二进制数组的封装。它的序列化格式为一个指定所含数据资金的整数域,后跟数据内容本身。
3.NullWritable是Writable的特殊类型,它的序列化长度为0。他并不从数据流中读取数据,也不写入数据。主要用来充当占位符,可以高效存储常量空值。
4.当一个字段中包含多个类型时,可以使用ObjectWritable来声明类型。并将每个类型封装在一个ObjectWritable中。

基于文件的数据结构

sequenceFiles可以作为小文件的容器。通过sequenceFile类型将小文件包装起来,可以获得更高效率的存储和处理。
MapFile是已经排过序的SequenceFile,他有索引,可以按键查找。

杂记

知识点一、datanode管线

在客户端写入数据时,DFSOutputStream将它分成一个个数据包,并写入内部队列,称为“数据队列”(data queue)。DataStreamer处理数据队列,他的责任是根据datanode列表来要求namenode分配适合的新块来存储数据备份。这一组datanode构成一个管线——我们假设副本数为3,所以管线中有3个节点。DataStreamer将数据包流式的传输到管线中第一个datanode,该datanode存储数据包,并将它发送到管线中的第二个datanode,同样地,第二个datanode存储该数据包并发送给管线中的第三个(也是最后一个)datanode。
DFSOutputStream也维护着一个内部数据包对列来等待datanode的收到确认回执,称为“确认队列“(ack queue)。当收到管道中所有datanode确认消息后,该数据包才会从确认队列中删除。

知识点二、流式处理

流式的关键是,不需要把一个块(block)完全传到第一个datanode之后,再传给第二个datanode,这样太慢。而是,将block切分成多个package,client向第一个datanode发送一个package完成之后,第一个datanode将刚完成的package发往第二个datanode,与此同时,后续的package也持续再传输,像水管一样源源不断往后端排水。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值