当前位置: 首页 > news >正文

【云计算与大数据技术】文件存储格式行式、列式、GFS、HDFS的讲解(图文解释 超详细)

一、分布式文件系统

文件系统最后都需要以一定的格式存储数据文件,常见的文件存储布局有行式存储、列式存储以及混合式存储三种,不同的类别各有其优缺点和适用的场景,在目前的大数据分析系统中,列式存储和混合式存储方案因其特殊优点被广泛采用

1:行式存储

在传统关系型数据库中,行式存储被主流关系型数据库广泛采用,HDFS文件系统也采用行式存储,在行式存储中,每条记录的各个字段连续的存储在一起,而对于文件中的各个记录也是连续存储在数据块中。

行式存储对于大数据系统的需求已经不能很好的满足,主要体现在以下几个方面

快速访问海量数据的能力被束缚

行的值由响应列的值来定位,这种访问模型会影响快速访问的能力,因为在数据访问的过程中引入了耗时的输入与输出,在行式存储中,为了提高数据处理能力,一般通过分区技术来减少查询过程中数据输入与输出的次数,从而缩短响应时间,但是这种分区技术对海量数据规模下的性能改善效果并不明显 

扩展性差 

在海量规模下,扩展性差式传统数据存储的一个致命的弱点。一般通过向上扩展和向外扩展来解决数据库扩展的问题。向上扩展是通过升级硬件来提升速度,从而缓解压力,向外扩展则是按照一定的规则将海量数据进行划分,再将原来集中存储的数据分散到不同的数据服务器上,但由于数据被表示成关系模型,从而难以被划分到不同的分片中等原因,这种解决方案仍有有局限性

2:列式存储 

列式存储 - 与行式存储布局对应,列式存储布局实际存储数据时按照列队所有记录进行垂直划分,将同一列的内容连续存放在一起

将经常联合使用的列存储在一个数据块中,避免通过不必要的网络传输来获取多列数据,采用列组方式存储布局可以在一定程度上缓解这个问题,也就是将记录的列进行分组,将经常使用的列分为一组,这样即使是按照列式来存储数据,也可以将经常联合使用的列存储在一个数据块中,避免通过不必要的网络传输来获取多列数据,对于某些场景而言会较大的提升系统性能

3:混合式存储 

混合式存储- 融合了行式和列式存储布局的优点

首先将记录表按照行进行分组,若干行划分为一组

对于每组内的所有记录,在实际存储时按照列将同一列内容连续存储在一起

二、Google文件系统(GFS)

GFS(Google文件系统)是Google为了存储百亿计的海量网页信息而专门开发的文 件系统

数据冗余备份、故障自动检测、故障机器自动恢复等都列在GFS的设计目标里

GFS中存储的文件绝大多数是大文件

系统中存在大量的“追加”写操作,即在已有文件的末尾追加内容,已经写入的 内容不做更改

对于数据读取操作来说,绝大多数操作都是“顺序”读,少量的操作是“随机” 读  

三、HDFS 

Hadoop 分布式文件系统 (HDFS)被设计成适合运行在通用硬件 (commodity hardware)上的分布式文件系统,HDFS是一个高度容错性的系统,适合部署在廉价的机器上,HDFS能够提供高吞吐的数据访问,非常适合大规模数据集上的应用,HDFS在最开始是在Apache Nutch搜索引擎项目的基础架构开发的。HDFS是Apache Hadoop Core项目的一部分

HDFS 采用 master/slave 架构。一个 HDFS 集群由一个namenode 和一定数目的 datanode 组成

HDFS采用Java语言开发,因此任何支持Java的机器都可以部署NameNode或者DataNode,由于采用了可移植性极强的Java语言,使得HDFS可以部署到多种类型的机器上

 创作不易 觉得有帮助请点赞关注收藏~~~

相关文章:

  • 股票l2接口的委托数据有什么作用?
  • 人工智能:智能语音技术应用场景介绍
  • JSP ssh流量充值系统myeclipse开发oracle数据库MVC模式java编程计算机网页设计
  • [附源码]Python计算机毕业设计非处方药的查询与推荐系统Django(程序+LW)
  • 简洁而优美的结构 - 并查集 | 一文吃透 “带权并查集” 不同应用场景 | “手撕” 蓝桥杯A组J题 - 推导部分和
  • 12月13日(第11天)
  • 【华为机试真题详解】优选核酸检测点【2022 Q4 | 100分】
  • 浅谈责任链设计模式在框架源码中的运用
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • 力扣(LeetCode)1832. 判断句子是否为全字母句(C++)
  • ehcache使用及缓存不生效处理方法
  • BASNet调研
  • Android Kotlin 基础知识codelab activity 和 fragment 生命周期
  • 数据结构---KMP算法
  • PHP——运算符
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Android开源项目规范总结
  • CSS相对定位
  • Cumulo 的 ClojureScript 模块已经成型
  • Docker容器管理
  • ERLANG 网工修炼笔记 ---- UDP
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java应用性能调优
  • Laravel 中的一个后期静态绑定
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Redis 中的布隆过滤器
  • sublime配置文件
  • 程序员该如何有效的找工作?
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 爬虫模拟登陆 SegmentFault
  • 实战|智能家居行业移动应用性能分析
  • 使用 @font-face
  • 世界上最简单的无等待算法(getAndIncrement)
  • 新版博客前端前瞻
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 怎么将电脑中的声音录制成WAV格式
  • 转载:[译] 内容加速黑科技趣谈
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 说说我为什么看好Spring Cloud Alibaba
  • (¥1011)-(一千零一拾一元整)输出
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (转)【Hibernate总结系列】使用举例
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)nsfocus-绿盟科技笔试题目
  • .Net 6.0 处理跨域的方式
  • .NET CF命令行调试器MDbg入门(一)
  • .NET DataGridView数据绑定说明
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • @ModelAttribute 注解
  • @PreAuthorize注解