这篇文章主要介绍了大数据云计算面试之HDFS架构的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
HDFS架构
可以查看官网的描述
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
介绍NameNode and DataNodes
结合上图官网 描述可以总结
HDFS has a master/slave architecture 是一个主从的架构
An HDFS cluster consists of a single NameNode 一个集群只有一个NameNode
there are a number of DataNodes, usually one per node in the cluster, which manage storage attached to the nodes that they run on. 有多个 DataNodes 主要作用是管理manages 文件系统的命名空间,和管理需要访问文件的客户端
HDFS exposes a file system namespace and allows user data to be stored in files. HDFS公开了文件系统名称空间,并允许用户数据存储在文件中。
根据上图
可以看到有这么几个概念
Client
NameNode( 简写为NN)
DataNodes (简写为 DN)
Block
Client 用于发起HDFS请求,可以是用户,可以是代码
NN 存在唯一一个,所以存在SinglePoint of Failure (单点故障的问题) 引出 ==》HA(heigh available)
DN 存在多个
作用:存储数据 和NN 之间有心跳
Namenode 创建的时候,配置有文件名字、 副本数 等
2.读写流程
了解架构后,我们来看读写流程
假设我们有一个client 一个NameNode 三个DataNode,等几个角色
(1)写入流程
1.一个用户、代码需要写入文件
第一步:client 从配置文件(hdfs 的配置文件中)获取到 1. 副本大小 2.副本数量
第二步:在第一步获取的的参数中,进行文件拆分
第三步:client 向 NameNode 发起请求,询问NameNode 文件应该放在哪里
第四步: NameNode 返回文件,可以存放到的位置
第五步:client 对指定的DataNode 位置写入文件
DataNode 写入完成进行副本拷贝和通知NameNode
(2)读取流程(就相对比较简单了)
第一步:客户段请求NameNode 文件
第二步:NameNode 返回存放该数据的DataNode 地址
第三步:client 到DataNode 读取数据
3.HA (高可用)架构
在官网上可以看到有QJM 和NFS 架构
QJM(https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html)
NFS(https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithNFS.html)
其中见常见的HA框架如下图所示
建立多个NameNode 一个Active 活动状态, 一个Standby 备用,通过Monitor Health 监控状态, 通过Zookeeper 协调主备切换
4.小文件是什么
小文件是指文件size小于HDFS上block大小的文件。这样的文件会给hadoop的扩展性和性能带来严重问题
为什么有小文件?
5.小文件带来的瓶颈
1.磁盘IO
2.task启动销毁的开销
3.资源有限(磁盘空间)
具体为:处理大量小文件速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个slot,而task启动将耗费大量时间甚至大部分时间都耗费在启动task和释放task上。
最后小文件的解决方法:
通用处理方案:
1、Hadoop Archive
Hadoop Archive或者HAR,是一个高效地将小文件放入HDFS块中的文件存档工具,它能够将多个小文件打包成一个HAR文件,这样在减少namenode内存使用的同时,仍然允许对文件进行透明的访问。
2、Sequence file
sequence file由一系列的二进制key/value组成,如果为key小文件名,value为文件内容,则可以将大批小文件合并成一个大文件。
底层处理方案:
HDFS-8998:
DataNode划分小文件区,专门存储小文件。一个block块满了开始使用下一个block。
HDFS-8286:
将元数据从namenode从内存移到第三方k-v存储系统中。
HDFS-7240:
Apache Hadoop Ozone,hadoop子项目,为扩展hdfs而生。
感谢你能够认真阅读完这篇文章,希望小编分享的“大数据云计算面试之HDFS架构的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。