Hadoop理解
作为分布式系统而言,有两个重要内容(当然还有其它的内容,这里仅仅讨论hadoop的核心):分布式存储和分布式计算。
分布式存储的原理:将一个大文件划分成若干部分,存储到不同的节点上(副本存储)。
好处:1)由于有副本存储,某个节点的down机不会影响到整个集群的使用,数据还是可以保证完整性的;
2)大文件划分小文件存储,这样便于后面的处理。这是因为计算节点(存储节点是同一个概念)可以处理这一部分数据,多个
计算节点可以并行处理。
整个来讲,HDFS的原理比较容易读,本质上讲,它是一个文件系统,只不过是分布式的,你也完全写一个简单的分布式文件系统出来的,只要你想做。
在讲分布式计算之前,我们来考虑一个问题,假设我们想完成一个任务:统计文章中哪些词出现的概率比较大。你会怎么做呢?
1.如果数据量小的话:
1)一个文件一个文件地读;
2)建立一个hashmap,key就是单词,value是频率;
3)如此循环。
2.如果数量大的话:
你会将这些文件分成若干部分,放到N台机器上并行运行,然后结果再合并。
问题:1)文件的分配,一个个复制吗?
2)结果合并,容易吗?
所以,出现了分布式计算框架,它要解决的问题就是上面的两点。
第1)点已经解决了,因为文件本身就是存储在不同的计算节点上的;
第2)其实包含了几个部分:
a)文件的打开与读取(Hadoop是一行一行的读);
b)中间结果的保存(也是存储到文件中去);
c)中间结果的合并和输出(最终结果存储到文件中去)。
你会发现,它的设计思想就是这么简单。然而要设计一个分布式系统框架,还是有很多事情要考虑的,这一点需要自己去体会。