hadoop 项目源自于google的几篇论文
http://labs.google.com/papers/gfs.html
http://labs.google.com/papers/mapreduce.html
http://labs.google.com/papers/bigtable.html
http://labs.google.com/papers/chubby.html
http://labs.google.com/papers/sawzall.html
HDFS | GFS |
Map/Reduce | |
Hbase | Bigtable |
ZooKeeper | Chubby |
Pig | Sawzall |
hdfs
提供一个分布式存储,类似于磁盘阵列。基于一个假设:文件读取操作多,很少改,读文件时总是对一个文件整个顺序读取。
- 把文件切分成64M的块儿,分开存储,大文件有利于提高磁盘寻道的效率,一次查找大段的读取
- 最好的情况下每块儿都在不同的机器上,分散I/O
- 另外每块儿可以在多台机器上存多个副本,提高可靠性,单台机器坏掉依然可以从其他机器找到完整的文件
map/reduce
在hdfs之上提供一个分布式的计算环境。这个概念来自于函数式编程。其实限制是很大的
- 要求计算任务能够被拆分成互不相干的、相同的小任务
- 面向行数据的处理,要求输入数据格式统一
- 必须把文件先上传到hdfs
幸运的是合乎要求1的情况也挺多的,很多时候可以把一些看上去不太符合要求的任务转个弯拧过来;在有使用hadoop意愿的前提下,预先做些工作,要求2也比较容易实现;第三条严重制约与网络带宽