大数据存储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中的存储文件。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值