目前活跃的项目有:
- Common
- Avro
- MapReduce
- HDFS
- Pig
- Hive
- Hbase
- ZooKeeper
- Sqoop
- Oozie
HDFS设计目标
very large files
单个文件的大小可以很大,可以达到几百G,文件总的大小可以到T和P级别。streaming 数据获取
一次写,多次读,可以向文件结尾添加新的内容,不允许在中间修改内容commodity hardware
不需要非常昂贵的硬件,hadoop也可以运行在廉价的系统上(普通的硬件设备)。
不适合的场景
- 低延迟的数据获取,因为Hadoop设计目标是支持大文件,如果需要读取一个文件当中很小的一部分,并且得到很快的响应,则并不适合。
- lots of small files
- 多次写入,对文件内容任意的修改
HDFS架构
在Hadoop中一个文件被分为大小固定的多个文件快,分别存储在集群中的节点中。块大小的默认值为64M。
- 一台主机支持的容量有限,多台主机使得可以存储的容量曾江。
- 文件分块存储,读取速度可以提高。
- 硬件出错的情况是很正常的,所以同一个文件块会在不同的节点上进行冗余的存储。
- 我们将文件分块存储到不同节点后,也需要知道文件的分块信息
一个文件多少个块,一个块有多少个副本,每个人副本存储的位置。
这些信息是保存在namenode中(namenode 中保存整个文件系统的目录信息,文件信息以及文件相应的分块信息)。
所以就涉及到namenode的备份问题,对namenode的备份最开始的备份措施是冷备份,就是关键信息存储到磁盘中,或者同步到冗余节点中,需要手动去恢复,在最新的版本Hadoop2.x中,facebook做了一个布丁,会有两个namenode,一个为active,一个为standby的,active的namenode失败后,standby会自动切换为activenode。(HDFS的HA策略)