当前位置: 代码迷 >> 综合 >> hdfs总结笔记
  详细解决方案

hdfs总结笔记

热度:7   发布时间:2024-02-02 05:46:30.0

HDFS是Hadoop技术框架中的分布式文件系统 可以放在多台独立物理机器上的文件进行管理
HDFS作为Hadoop的基础存储设施,实现了一个分布式、高容错、可线性扩展的文件系统。

其中自身具备的特点
高容错性:不相信自己的硬件,保存数据保存多个副本
高吞吐量:为大量数据访问的应用提供高吞吐量支持。
大文件存储:支持存储TB-PB级别的数据

适合
大文件存储与访问流式数据访问

但不适合
大量小文件存储
随机写入
低延迟读取

架构
在hdfs架构中有三部分
NameNode:用于存储元数据
DataNode:存储真实数据
Client:业务访问,从NameNode,DataNode获取数据

写流程 
Client向NameNode请求写入文件 让后NameNode创建节点, 写入文件,之后客户端收到数据后,从NameNode获取信息,并写入数据到datanode 完成后在复制到其他的databode上,写入完成后会返回信息给客户端client

读流程
Client向NameNode获取文件信息并读取文件,之后客户端根NameNode获取的信息,向datanode获取相应的数据,读取完成后 就会调用close关闭

关键性
高可靠性:主要体现在利用zookeeper实现主备NameNode,以解决单点NameNode故障问题
ZooKeeper主要用来存储HA下的状态文件,主备信息。ZK个数建议3个及以上且为奇数个。 NameNode主备模式,主提供服务,备同步主元数据并作为主的热备。

副本存放策略:
1第一个副本会放到与client相同的节点。假如client不在hdfs集群,那么第一个副本会随机放置
2第二个副本会放到与一个副本相邻机架的任意一个节点
3第三个副本会放到与第一个个副本相同机架的任意-一个节点
4.其他更多副本会任意放置

元数据持久化

联邦机制:当namenode元数据越来越多时 查找文件时间过长 可以减少单点压力 分散到多个节点

数据存储策略:HDFS NameNode自动选择DataNode保存数据的副本。
分级存储:分级存储框架提供了RAM_DISK(内存盘)、DISK(机械硬盘)、ARCHIVE(高密度低成本存储介质)、SSD(固态硬盘)四种存储类型的存储设备
标签存储:把不同的数据标上各自的标签
节点组存储:可以强制把所有数据放到一个组内

数据完整性保障

同分布:将存在关联关系的数据或可能要进行关联操作的数据存储在相同的存储节点上。
同分布特性:在文件John时:对应的block都在相同节点,会大大降低资源消耗。

其他关键特性:
统一的文件系统: HDFS对外仅呈现一个统一的文件系统。
空间回收机制: 支持回收站机制,
数据组织: 数据存储以数据块为单位,存储在操作系统的HDFS文件系统上。
访问方式: 提供JAVA API,HTTP方式,SHELL方式访问HDFS数据。

HDFS与Hive、HBase
HDFS是Hadoop的一个模块,主要负责数据存储
Hive依赖于Hadoop,实际存储是依赖于Hadoop的HDFS模块,计算依赖于Hadoop的Mapreduce。
Hive不存储数据,Hive基于数据仓库,提供静态数据的动态查询。其使用类SQL语言,底层经过编译转为MapReduce程序,在Hadoop上运行,数据存储在HDFS上。
Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。
Hive与Hbase的数据一般都存储在HDFS上。 HDFS为他们提供了高可靠性的底层存储支持
MapReduce为HBase提供了高性能的计算能力
Zookeeper为HBase提供了稳定服务
HBase则只是依赖于HDFS模块,本身其实可以完全不要考虑,底层的文件系统是通过 HDFS 来支持,的HBase的优势在于实时计算,由于使用的是nosql提高了查找性能
Hive的数据源既可以来自HDFS,也可以来自于HBase。