关于 Docker

我选用 docker 作为技术栈的原因,一是最近容器技术实在是很火,也希望能借着这个机会学习一下最新潮的容器技术 不得不说,真的好用啊 ;二是因为本地电脑内存有限,如果基于 VM 搭建分布式 Hadoop 可能机子压力会很大,而 docker 作为容器技术,其虚拟化的是操作系统,并不虚拟化硬件。因此 docker 容器的运行效率非常高,可以和宿主机相媲美。而且,docker 允许容器弹性的占用内存,也就是说,容器们可以弹性地占用主机的所有内存,而不是像 VM 一般需要事先指定。这样一来,容器就要比虚拟机灵活的多,运行效率也要高的多。值得注意的是,容器技术对进程管理也同样严格,不同容器之间相互独立,只能通过网络进行交互,完全可以很好地完成这类分布式部署实验。

关于 Hadoop

HadoopApache 旗下的一个开源的云计算项目,的的确确这套开源系统造福了不少公司,省下了一大笔分布式存储的开发成本。在使用 Hadoop 的过程中,我也感受到了这套分布式可靠存储系统的魅力。有了这套管理系统,就能够使用普通 PC 机级别的消费级硬件来搭建存储中心,并且不需要担心存储失效的问题,因为其已经有了足够的冗余备份和紧急切换的功能。此举极大地降低了数据中心的建设开销,且日常维护变得更加容易。这套系统的开源,很好地促进了整个 IT 界的产业升级,使得存储海量数据不再是一个难以逾越的问题,也为大数据时代的到来打下了坚实的基础。

关于 MapReduce

MapReduce 本是 Google 于 2004 年由神一般的人物 Jeffrey Dean 和他的同事提出的。在此之前,他们已经实现了 GFS 并在其中成功应用 MapReduce 计算模型。在这次的 MapReduce 编程中,我亲身地感受到了 MapReduce 作为数据计算模型的优势,也彻底接受了 “移动计算比移动数据更划算“ 的思想。而且,MapReduce 模型还非常的易用,即使是我这样之前没怎么接触过分布式计算编程的人,也能够很快地学会编写 MapperReducer 类。这绝对是一个伟大的计算模型,它解决了太多当时亟需解决的计算能力问题,为此,我又读了 Google 关于的 MapReduce 的论文1 ,这是一些 Google 认为 MapReduce 成功的原因:

  • The model is easy to use;

    这套模型易于开发者使用;

  • A large variety of problems are easily expressible as MapReduce computations;

    一个体量很大的问题可以很容易地通过 MapReduce 计算表示出来;

  • An implementation of MapReduce that scales to large clusters of machines comprising thousands of machines;

    MapReduce 一般运行在拥有几千台机器的集群之上;

  • A number of optimizations in our system are therefore targeted at reducing the amount of data sent across the network;

    通过一系列的优化,使得计算时的集群网络开销大大减小;

  • Redundant execution can be used to reduce the impact of slow machines, and to handle machine failures and data loss.

    执行冗余策略能够减小单台机器运行过慢给系统带来的影响,并能够最大限度地消除数据丢失。

这些简直和我在使用时的感觉一模一样,有了这些难以令人舍去的优点,难怪 MapReduce 能够成为主流的计算模型,也难怪 Google 能成为当今互联网业界最成功的公司。

关于开源云计算

我还是相信开源软件才能够给社会带来最大的促进作用,如 Hadoop, 也如 OpenStack。无数的公司基于开源云计算技术都进入了云计算领域。我认为,只有开源,世界才能够真正跨进云计算时代。


  1. Dean, Jeffrey, and Sanjay Ghemawat. "MapReduce: simplified data processing on large clusters." Communications of the ACM 51.1 (2008): 107-113. 
    分享到:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

验证码 *