大数据存储HDFS详解

与其在等待中枯萎,不如在行动中绽放。

一、数据序列化框架:

FaceBook Thrift:具体序列化和RPC两个功能。

Google Protocol Buffers(ProtoBuf):只有序列化功能,不具备RPC功能。

Apache Avro:具体序列化和RPC两个功能。

二、序列化框架对比:

解析速度 时间由小到大:protobuf、thrift、Avro

序列化大小,由小到大:avro、protobuf、thrift

三、文件存储格式:

常见存储格式包括行式存储(文本格式Text File、Key/Value二进制存储格式Sequence File)和列式存储(ORC、Parquet、Carbon Data)

列式存储对比:ORC通常作为数据表的数据格式应用在hive和presto等计算引擎中,它们对ORC读写进行了优化,而Parquet提供了非常易用的读写API,用户可在应用程序(eg:spark、MapReduce等分布式程序)中直接读写Parquet格式的文件,而Carbon Data在索引和数据更新方面有良好支撑,可用在多维OLAP分析场景中。

四、分布式文件系统

分为文件级别的分布式系统和块级别的分布式系统。

文件级别的分布式系统:不足之处是难以负载均衡、难以并行处理

块级别的分布式系统:将文件分为等大的数据块(eg:128M),并以数据块为单位存储到不同节点上,进而解决文件级别的分布式系统存在的负载均衡和并行处理问题,HDFS即是块级别的分布式文件系统。

五、HDFS基本架构:NameNode、DataNode、Client

HDFS关键技术:容错性设计、副本放置策略、异构存储介质(ARCHIVE:高存储密度但耗电较少的存储介质,DISK:磁盘介质,这是HDFS默认存储介质,SSD:固态硬盘,RAM_DISK:数据被写入内存中,同时会往改存储介质中异步一份)、集中式缓存管理(HDFS允许用户将一部分目录或文件缓存在off-heap内存中)

六、HDFS访问方式:

1、HDFS shell命名:分为用户命令和管理员命令

用户命令:常用的有文件操作命令dfs(eg:创建、上传、删掉文件)、文件一致性检查命令fsck(eg:查看文件块信息)、分布式文件复制命令distcp(集群内文件或者集群间文件并行复制)。

管理命令:对服务生命周期管理,eg:启动、关闭NameNode/DataNode、限制目录使用空间大小。

2、HDFS API:HDFS对外提供了丰富的编程API,允许用户使用java以及其他编程语言编写应用程序访问HDFS。

3、数据收集组件:Flume(提供的sink hdfs 能够直接将收集到的数据写入HDFS)、Sqoop(允许用户指定数据写入HDFS的目录,文件格式支持Text、SequenceFile两种格式,压缩方式支持LZO、Snappy等主流压缩编码)

4、计算引擎方式:SQL方式,Hive、Impala及Presto等查询引擎均允许用户直接使用SQL访问HDFS中的存储文件。

本文分享自微信公众号 - 大数据与微服务架构(gh_7bc8d3796e8e),作者:凹谷

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 架构之道-架构师的多年实践经验总结

    在科学的道路上没有平坦的大道,只有不畏艰险沿着陡峭山路向上攀登的人,才有希望达到光辉的顶点。

    凹谷
  • 数据迁移工具Sqoop

    Sqoop 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,它是Hadoop环境下连接关系数据库与Hadoop存储系统的桥梁,支持多种关系型数据源...

    凹谷
  • Hive-数据仓库

    交互方式-用户接口:CLI(linux命令行)、WUI(hive web页面)、Client(连接远程服务HiveServer2,eg:JDBC、ODBC)

    凹谷
  • springmvc之使用ModelAttribute避免不允许被修改的值更新时为空

    我们在更新数据时,有的数据是不能够被修改的。假设User有三个字段,username,age,password。我们在前端传过来的数据为username和age...

    绝命生
  • HDFS设计原理最详讲解

    我们都知道HDFS是来源于Google的GFS的分布式系统,它的特点是易于扩展,同时可以开发于廉价的机器上,同时他可以保证所有文件的备份数据维持在健康的数量上,...

    黑白格
  • 探索Android架构的DataLayer层(DataManager方式)具体实现

    我想无论是移动端工程师还是服务器工程师,技术成长路线大致都是先熟练(不是熟悉,hahaha)掌握了编程语言、现行开发流行框架和项目业务逻辑后,向着架构师的方向发...

    1025645
  • 文件管理系统FastDFS详解

    很多以文件为载体的在线服务,如相册网站、视频网站等,都需要对文件进行管理,包括文件的存储、同步、访问(文件上传、文件下载)等,同时肯定会伴随着大容量存储和负载均...

    程序新视界
  • Pandas中groupby的这些用法你都知道吗?

    pandas作为Python数据分析的瑞士军刀,集成了大量实用的功能接口,基本可以实现数据分析一站式处理。前期,笔者完成了一篇pandas系统入门教程,也针对几...

    luanhz
  • Spark调优

    因为Spark是内存当中的计算框架,集群中的任何资源都会让它处于瓶颈,CPU、内存、网络带宽。通常,内存足够的情况之下,网络带宽是瓶颈,这时我们就需要进行一些调...

    岑玉海
  • SSA-一种适合中小型企业的新型服务架构

    脑洞的蜂蜜

扫码关注云+社区

领取腾讯云代金券