赞
踩
1、基本概念
DHFS是是Hadoop最重要的核心组件 ,基于JAVA实现的一个分布式文件系统 ,基于unix/linux ,支持顺序写入,而非随机定位读写。
特点:
2、基本构成
2.1、数据块
2.2、Namenode与Datanode
3、数据读写过程
HDFS写数据:
HDFS读文件:
客户端发起读请求,nameNode检查目录是否存在、是否有权限,nameNode返回文件的块信息,返回块信息(块对应的dataNode的队列,保证当dataNode挂的时候可以正常读取数据),客户端根据块信息读取文件。
3、nameNode介绍
3.1、作用
3.2、存储结构
3.3、启动过程
3.4、Secondary NameNode介绍
NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。当nameNode启动后,系统不断的想edits文件中写入信息,edits文件会变的很大。在这种情况下就会出现下面这些问题:
因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edits文件的大小和得到一个最新的fsimage文件,这样也会减小在NameNode上的压力。而Secondary NameNode就是为了帮助解决上述问题提出的,它的职责是合并NameNode的edits到fsimage文件中。
Secondary NameNode合并edits到fsimage的过程:
Secondary NameNode所做的是在文件系统这设置一个Checkpoint来帮助NameNode更好的工作;它不是取代NameNode,也不是NameNode的备份。
Secondary NameNode的检查点进程启动,是由两个配置参数控制的(CDH中也可以进行配置):
3.5、Namenode管理
大数据量下的namenode问题
解决方案
4、HDFS的高可用方案
通过zookeeper以QJM(quorum journal manager)实现高可用,可以手动进行配置也可以通过CDH启用高可用方案。
edits文件存放于journalNode中,有两个nameNode,一个处于活跃状态(active),一个处于待命状态(standby),只有活跃的nameNode可以提供HDFS服务并向journalNode中写入edits,待命状态的nameNode负责同步journalNode中的数据,各个dataNode节点活跃态的nameNode报告状态(心跳信息、块信息)。2个nameNode和journalNode保持通信,待命的节点与活跃态的nameNode的数据保持一致,当活跃态的nameNode不可用时,zookeeper会把standby节点自动变为active状态,继续对外提供读写服务。
5、HDFS的文件格式和文件类型
文件格式:HDFS支持任意格式的文件
文件类型:行式存储和列式存储
5.1、行式和列式的比较
5.2、小文件
每个文件的元数据对象约占150byte,所以如果有1千万个小文件, 每个文件占用一个block,则NameNode大约需要2G空间。如果存储1亿 个文件,则NameNode需要20G空间;数据以块为单位进行处理。
影响:占用资源,降低处理效率
解决方案:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。