Hdfs
概念:
Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。 Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。
架构设计:
采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。
部署方式:
- 分布式搭建
~单台服务器上运行多个进程(角色). 一般学习Hadoop时常用这种模式. ~角色NameNode – 掌控全局SecondaryNameNode – 持久化DataNode – 存储数据
|
- 完全分布式搭建
~工作中应该使用的模式, 不同角色运行在不同的服务器上. ~角色1/NameNode2/SecondaryNameNode3/DataNode * 3 (两个副本)
|
- 高可用(High Available)模式
~虽然完全分布式是在实际工作中使用的模式, 但它并不是可靠的. 原因很简单, 就是集群会发生单点故障, 如果namenode节点故障, 挂掉后, 那么这么集群就不可用, 不能被外部访问. 因此, 一般都会对集群做HA. 角色1/NameNode(active)2/NameNode(standby)3/DataNode4/Zookeeper(ZK) 5/JournalNode(JNN)6/ZookeeperFailoverController(ZKFC)
|
使用方法:
我所认为的使用方法,也就是说整个分布式文件系统的核心——读写流程。
读流程:
写流程:
应用场景:
- HDFS不适合大量小文件的存储,
- HDFS适用于高吞吐量,而不适合低时间延迟的访问
- 流式读取的方式,不适合多用户写入一个文件(一个文件同时只能被一个客户端写)以及任意位置写入(不支持随机写),支持文件尾部apend操作,或者文件的覆盖操作;
- HDFS更加适合写入一次,读取多次的应用场景