1.hdfs 简介
HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树 来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的使用场景:适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。
2.hdfs的优缺点(适用于技术选型)
优点
- 适合存储数据量很大的数据
- 高容错性
(1)数据自动保存多个副本。它通过增加副本的形式,提高容错性。
(2)某一个副本丢失以后,它可以自动恢复。 - 可以建在不是特制的机器上,一般的机器即可配置,通过多副本机制,提高可靠性。
缺点
1. 不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
2. 不支持随机读写,只支持append方式追加写.且一个文件无法由多个线程进行修改(每个文件至少都要150字节)
3. 无法高效的对大量的小文件进行存储
3.hdfs的架构
- Namenode–mater,管理者
1.1 管理hdfs的命名空间
1.2记录datanode的block位置管理数据块的映射信息
1.3记录副本的位置配置副本策略
1.4 处理客户端读写请求 - Datanode–slave 执行namenode的命令,执行实际的操作
2.1 存储实际的数据块
2.2 执行数据块的读/写信息 - Client
3.1 与nn进行交互,获取文件位置
3.2 与dn进行交互,读取或写入数据
3.3 文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传
3.4 client提供一些命令管理hdfs,比如nn的format
3.5 client提供一些命令控制hdfs,比如hdfs的增删改查 - Secondary Namenode–辅助namenode,但不是热备.并不能在namenode挂掉后,及时替换namenode提供服务
4.1 辅助nn,分担其工作量,比如定期合并Fsimage和Edits,并推给nn
4.2 紧急情况下可以恢复nn
5.hdfs文件块大小
现在block普遍为128M,即默认大小.确定的方法为:
- 默认寻址到block的时间为10ms
- 寻址时间为传输时间的1%,为最佳, t= 0.01/1%=1s
- 硬盘的传输速度为100M/s.则 block size= v * t =1 * 100=100M
- 块的大小取决于机器的传输速度.