一、HDFS HA架构图梳理
Hadoop 2.x版本中,HDFS架构引入双NameNode解决了单点故障问题
二、YARN HA架构图梳理
三、总结HDFS YARN HA架构区别
1 ZKFC
- HDFS中ZKFC作为单独的进程
- Yarn中ZKFC是RM中的线程
2 从节点
- HDFS中的DataNode 会向两个NameNode同时发送心跳。
- Yarn中NodeManager只会向activeRM上报资源
四、HDFS dfs -ls 结果是哪个目录
结果查出来是本地目录
五、双写的理解
在生产中,有两种双写:
1.结果双写
spark处理好的数据,全部存储在HBase中,两个月的数据存放在ES集群上方便快速查询。
2.数据同步双写
架构分为A线和B线,防止延迟
六、小文件的理解。什么是小文件、危害,如何避免(产生前,产生后)
1、小文件问题
Hdoop是存储TB甚至更大级别的数据集的。一个大的文件存放在HDFS上会拆分为多个block,每个block又会有多个副本(默认3个)存放在不同的服务器上。block存放在DataNode上面,元数据信息存放在NameNode上面,加载在内存中。比如不管是存放一个大小为1TB的文件还是一个大小为1KB的文件,都会各自有一个元数据信息。这种小文件很多的话,对NN的压力就会非常大,就会有宕机的风险。
2、什么是小文件
实际上并没有一个标准的答案。笼统地说小文件就是文件size小于HDFS上block大小的文件。
3、小文件的危害
1)HDFS不适合大量小文件的存储,因namenode将文件系统的元数据存放在内存中,因此存储的文件数目受限于 namenode的内存大小。HDFS中每个文件、目录、数据块占用150Bytes。如果存放的文件数目过多的话会占用很大的内存甚至撑爆内存
2)HDFS适用于高吞吐量,而不适合低时间延迟的访问。如果同时存入大量的小文件会花费很长的时间
3)流式读取的方式,不适合多用户写入,以及任意位置写入。如果访问小文件,则必须从一个datanode跳转到另外一个datanode,这样大大降低了读取性能。
4、小文件是如何产生的
1)集群上的数据是通过某种手段采集过来的。如使用Flume,使用不当的话采集到HDFS的数据会有很多小文件
2)使用计算框架MR/Hive/Spark时,进行ETL会产生很多小文件,统计分析时采用数据仓库,分好几层,每个层里面又是一堆小文件
5、如何避免小文件
没有一个标准答案,都是根据实际情况作出处理
七、主从架构的HBase读写经过master进程吗?
不经过
1、读请求过程:
1)客户端通过zookeeper以及root表和meta表找到目标数据所在的regionserver
2)联系regionserver查询目标数据
3)regionserver定位到目标数据所在的region,发出查询请求
4)region先在memstore中查找,命中则返回
5)如果在memstore中找不到,则在storefile中扫描(可能会扫描到很多的storefile—-bloomfilter)
2、写请求过程:
1)client向region server提交写请求
2)region server找到目标region
3)region检查数据是否与schema一致
4)如果客户端没有指定版本,则获取当前系统时间作为数据版本
5)将更新写入WAL log
6)将更新写入Memstore
7)判断Memstore的是否需要flush为Store文件。