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 ...
随机推荐
- flask学习(三):flask入门(URL)
一. flask简介 flask是一款非常流行的python web框架,出生于2010年,作者是Armin Ronacher,本来这个项目只是作者在愚人节的一个玩笑,后来由于非常受欢迎,进而成为一个 ...
- HDU-4679-树的直径(树形dp)
Terrorist’s destroy Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- 完整的保存onetab的书签信息
之前在百度上找怎么完整的保存onetab的书签信息,没找到答案,于是乎上了google,在stackoverflow上找到了一个相关的答案 How to restore OneTab list of ...
- eclipse安装插件:
eclipse安装插件:jre跟eclipse的bit数必须匹配,即必须都是32or64位的 历史版本不好找,pydev的历史版本在sourceforge中很隐蔽,得在项目的activite中查找,另 ...
- Kubernetes 1.5.3 部署
> kubernetes 1.5.3, 配置文档 # 1 初始化环境 ## 1.1 环境: | 节 点 | I P ||--------|-------------||no ...
- PostgreSQL基于时间点故障恢复PITR( point-in-time recovery )
PostgreSQL在使用过程中经常会发生一些失误的操作,但往往是可以弥补的.但是如果真遇到了无法挽回的误操作,只能寄希望于有备份了. 接下来的故障恢复也是基于有备份的情况,没有备份的情况,目前还没有 ...
- js获取来源网址
举例: 1. a.html文件内容如下: <a href="b.html">浏览b.html </a> 2. b.html文件中的内容如下: <bod ...
- Django 知识点补充
Django 知识点补充 1 Django如何在Model保存前做一定的固定操作,比如写一条日志 (1)利用Django的Model的Signal Dispatcher, 通过django.db.mo ...
- 使用kibana来进行ElasticSearch的信息查询检索
大家经常会听到使用ELK搭建日志管理平台.完成日志聚合检索的功能,那么这个平台到底是个什么概念,怎么搭建,怎么使用呢? ELK包括ElasticSearch(数据存储.快速查询).logstash(日 ...
- 将安防IPC摄像机进行类似于萤石/乐橙/360水滴模式的互联网直播的几种方案
前言 在维护EasyDarwin开源项目的几年内,几乎市面上大大小小的技术需求都给接触了一遍,大团队.大背景有大需求,草根团队有草根团队的需求,然而这些需求近些年都有一个发展的趋势,那就是" ...