HDFS(二)
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(二)的更多相关文章
- HDFS(二) 底层通信原理——RPC 及 动态代理
一.RPC(Remote Procedure Call ) :远程过程调用 1.RPC是远程过程调用协议,实现调用者和被调用者二地之间的连接和通信.其基本通信模型是基于client/server进程 ...
- HDFS二.HDFS实现分布式文件存储---体系结构
单击模式(Standalone): 单机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置.在这种默认模式下所有3个XML文件均为 ...
- Hadoop 学习之路(六)—— HDFS 常用 Shell 命令
1. 显示当前目录结构 # 显示当前目录结构 hadoop fs -ls <path> # 递归显示当前目录结构 hadoop fs -ls -R <path> # 显示根目录 ...
- windows上传文件到 linux的hdfs
一.windows上传文件到 linux的hdfs 1.先在 centos 上开启 hdfs, 用 jps 可以看到下面信息, 说明完成开启 2.在win上配置 hadoop (https://www ...
- 将爬取的实习僧网站数据传入HDFS
一.引言: 作为一名大三的学生,找实习对于我们而言是迫在眉睫的.实习作为迈入工作的第一步,它的重要性不言而喻,一份好的实习很大程度上决定了我们以后的职业规划. 那么,一份好的实习应该考量哪些因素呢? ...
- 什么是HDFS?算了,告诉你也不懂。
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上一篇已经讲解了「大数据入门」的相关基础概念和知 ...
- 【Spark】Spark-shell案例——standAlone模式下读取HDFS上存放的文件
目录 可以先用local模式读取一下 步骤 一.先将做测试的数据上传到HDFS 二.开发scala代码 standAlone模式查看HDFS上的文件 步骤 一.退出local模式,重新进入Spark- ...
- hbase优化之region合并和压缩
HBASE操作:(一般先合并region然后再压缩) 一 .Region合并: merge_region 'regionname1','regionname2' ,'true' --true代表 ...
- Apache Druid架构原理与应用场景
为了帮助卖家提高运营水平,卖家管理后台会展示一些访客.订单等趋势和指标数据,如PV,UV,转化率,GMV等: 这些指标的计算依靠前端埋点和订单详情等数据,其特点是数据量大,并有一定的实时性要求. Dr ...
- Hadoop专有名词
Hadoop专有名词 一. HDFS 二. MapReduce 1.MRAppMaster:MapReduce Application Master 负责整个过程调度和协调的 2.MapTask:在M ...
随机推荐
- 16.并发容器之CopyOnWriteArrayList
1. CopyOnWriteArrayList的简介 java学习者都清楚ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于fast-fail机 ...
- OBS插件学习入门:一个非常简单的、调节音量的filter
一个非常简单的.调节音量的filter,非线性调节: #include <obs-module.h> #include <math.h> struct volume_data ...
- 数论基础算法总结(python版)
/* Author: wsnpyo Update Date: 2014-11-16 Algorithm: 快速幂/Fermat, Solovay_Stassen, Miller-Rabin素性检验/E ...
- Python执行Linux系统命令方法
Python执行Linux系统命令的4种方法 (1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 复制代码代码如下: system(command) -> ...
- oracle数据库简单的导入导出操作
一.数据库导出 1.导出用户名/密码,,导出用户名为test_expdp.导出路径默认为oracle中的dpdump文件中 expdp test_expdp/test_expdp@orcl direc ...
- firefox与ie 的javascript区别
1. Document.form.item 问题 现有问题: 现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 ...
- Java中用反码表示整数,及int到byte的转换
Java中的整数都是通过补码表示的,当整数为正数时,补码和原码相同,当整数为负数时,补码为原码按位取反(符号位除外),然后加1. 通过一些例子可以比较明显的看出: int a = -1; System ...
- HTML5音视频播放(Video,Audio)和常见的坑处理
1. 前言背景 在HTML5出现之前,Web页面访问音视频主要是通过Flash,Activex插件,还有微软后来推出的silverlight来展现的,尽管FLASH曾经风靡全球,但是随着互联网的不断发 ...
- 过滤器(Filter)
1 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如 ...
- windows下gvim搭建IDE
原文转载自:手把手教你把Vim改装成一个IDE编程环境(图文) 如侵犯您的版权,请联系:windeal12@qq.com By: 吴垠 Date: 2007-09-07 Version: 0.5 Em ...