HDFS: hadoop distribute filesystem
适用场景:一次写入,多次读取
优点:
1.高容错:自动保存多个副本在datanode节点,当某一个副本丢失后,会自动恢复,默认参数为3个副本(配置位置:hdfs.core.xml中dfs.replication);
2.大数据量:适用于大数据量的文件处理,文件存储于hdfs中会切分为块形式存储在datanode节点;
3.可靠性:多副本,提高可靠性。
缺点:
1.不适合实时数据处理(低延时数据访问):适用场景为线下数据计算处理;
2.小文件问题,每个文件在namenode中的目录结构会保存块信息,节点信息,状态等内容,占用150字节,如果存储小文件,则会极大消耗数据寻址时间,不便于大数据量的读取操作。
HDFS结构:
1)NameNode : 整个数据存储结构的Master
①管理HDFS的名称空间
②副本策略,管理数据块的索引信息
③处理client请求
2)DataNode : Slave,存储数据的具体节点
①存储数据,执行数据的读写操作
3)Secondary Namenode : 并非实时同步 Namenode 上的数据,其主要操作是将Namenode上的fsimage快照和Edit.log操作日志定期进行合并整合,并将整合后的文件复制到Namenode节点上,可帮助NameNode进行辅助恢复数据(可能会有一定数据的丢失)
HDFS文件块:
hadoop 2.x 块大小默认为128M,可由 dfs.blocksize进行设置,hadoop 1.x 为64M
块大小的决定因素为磁盘的传输速率 目前 寻址时间10ms ,寻址时间为传输时间的1%为最佳
10ms/0.01 * 100MB/s = 100M
HDFS块太小,相对寻址时间较长;块太大,传输数据的时间长。