Hadoop王国(1)——梦游象国

传说,有这般灵丹妙药,一经金属器件“服用”,便可使它们同心同德,组成“小金刚”。

计算机——金属器件“小金刚”

女娲有一本“造人宝典”,先造泥人,后施法,便有了人。

冯·诺依曼有一张“造机宝图”,能够造出这“泥人”。

给这“泥人”施的法,便是其心智——操作系统。

从此,计算机不再是一堆金属的拼凑,而是有机的整体。有软有硬,有体肤有心智。

集群——计算机“小金刚”

灵丹妙药Elephant

如果把多台计算机(集群)组成一个“小金刚”,该如何造“泥人”,如何施法呢?

  1. 揉成一个大泥团——网络
  2. 施法——安装软件Elephant

网络这一步很简单,只要插上网线,安装操作系统(目的是为了提供网络协议和应用开发接口的支持)。

第二步是安装Elephant,这是跑在特定操作系统的一套软件,有了它,集群便有了心智,葫芦兄弟便成了葫芦小金刚。

在服下Elephant这颗丹药后,集群有了自己的心智。从此,集群不再是一堆计算机的杂揉,而是有机的整体。有软有硬,有体肤有心智。

使用集群

如此强大的集群,我们该如何使用?

回到金属器件“小金刚”,也就是计算机。我们使用的方法是与其心智——操作系统进行沟通。操作系统提供了用户接口和开发者接口,只需按照这两个接口来使用即可。比如,装个QQ,看个小电影;写个程序,调个API。

所以,要想使用集群,就需要与它的心智沟通,也就是——Elephant。本质就是在调用Elephant提供的接口。

Elephant接口调用

Elephant提供了E编程模型,使用这个模型加上E语言,开发的程序(比如main.e),就可以直接跑在Elephant之上,也就是分布式程序!

Elephant提供了E-DFS,即E分布式文件系统。

Elephant还提供了命令行接口,直接与Elephant交互。

elephant put 1.txt /                              # 把本地计算机的1.txt放到E-DFS的/路径下
elephant run main.e efs:///1.txt efs:///out.txt   # 执行分布式程序main.e,输入为E-DFS的/1.txt,输出为/out.txt
elephant show                                     # 查看程序执行情况
elephant kill main.e                              # 杀死正在执行的分布式程序main.e

可以看到,我们所面对的不再是多台计算机,或者说,我们压根就不知道就几台计算机。我们面对的是集群,而与集群交互的便是Elephant。

所以,我们在驯服Elephant,而Elephant在管理集群。

梦醒

有一个坏消息,前面所说的Elephant纯属YY。

有一个好消息,真的有一头大象,可以达到我们想要的效果——Hadoop

没有什么E编程模型和E-DFS。前面提到的编程模型,便是MapReduce。分布式文件系统,则是HDFS。

前者计算、后者存储,是Hadoop管理和支配集群的两架马车。

Hadoop的王国,还有其它的精兵强将(如,Hive、Pig、HBase),它们一同丰富着Hadoop的生态环境。而此时的Hadoop已经不仅仅是一颗灵丹妙药,更是一片沃土,各种生物在此斗艳争芳。

-- EOF --