1. Hadoop是一个open-source software framework以分布式方式存储大数据,并行处理大数据,建立在大型商品硬件集群上
2. Hadoop can handle volume, velocity, variety
3. 对volume而言,Hadoop提供:
冗余、容错的数据存储(HDFS)
parallel computation framework(MapReduce)
工作协调(YARN)
4. the master-slave architecture of Hadoop
类比manager本身不做事情,将task分给worker完成。为了避免一个worker缺席造成整个task无法完成的问题,同一个task会被分配给两个人
5. HDFS (Hadoop Distributed File Systems)
follows master-slave architecture,允许在多台设备上存储数据,允许多个用户使用数据,像PC上的file system一样
6. HDFS支持分布式存储,分布式计算以及水平可伸缩性(horizontal scaling)
vertical scaling有数量限制,升级的时候需要停下所有进程
horizontal scaling没有机器数量的限制,升级时不需要停下来,scale up时不必须添加相同设备
7. NameNode: 维系并管理DataNode中的blocks, 类比manager
8. FsImage: file system namespace(tree structure of file system)
EditLogs: all the recent modifications
文件可以添加或者移除,但是不能更新。NameNode会定期检查DataNode是否还存在,若存在每3秒DataNode都会给NameNode发一个消息证明自己还在。若是不存在了,NameNode需要做数据恢复
9. DataNode类比员工,可以用不是很昂贵的设备节省开销
功能有存储数据,做读写操作,告诉NameNode是否还存在
10. If NameNode failed, all the files on HDFS will be lost
所以需要用remote NFS mount数据备份 —— Secondary NameNode
11. Secondary NameNode
take checkpoints of the file system metadata present on NameNode
功能有copy FsImage与Editlogs;periodically applies Editlogs to FsImage and refreshes the Editlogs;如果NameNode失效了,File System metadata可以将最后一次更新恢复
12. Block is a sequence of bytes that stores data
data以一系列block的形式存储在HDFS中,默认的block大小为128MB,文件将被划分为不同的blocks(尽可能充分利用blocks,即划分时尽可能多的block里面是128MB)
13. HDFS的block size大是因为它存储的dataset更大(为了相对减少block数量,从而减少metadata,对MapReduce的伤害以及查找数据时的速度)
14. 若NameNode十分钟内没有收到DataNode的消息,则DataNode被默认失联
15. 通常来讲每个block会被保存三次,均存在不同的DataNode上;若其中一个DataNode消失,数据还可以从其他备份中恢复
16. simultaneous failure
17. rack awareness:reduce latency and fault tolerance
18. write in HDFS: create file -- write file -- close file
只能同时有一个writer,但是可以同时有多个reader,因为同时存储了好几份,读的时候选择最近的那个。若是读的时候有一个有问题,就报告给NameNode