zhoujun.g 发表于 2018-10-28 13:14:34

从事分布式系统、计算、hadoop 等方面工作需要哪些基础?

  作者:知乎用户
  链接:https://www.zhihu.com/question/19868791/answer/18144881
  来源:知乎
  著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

[*]  先看百度文库这篇《分布式系统工程实践》http://wk.baidu.com/view/895a2a3467ec102de2bd8902?pcf=2#page/1/1375282274254;
[*]  再看“Google三大论文”;
[*]  接下来再研究Hadoop的实现。
  首先。lz需要了解分布式系统是一个很广泛的概念。任何系统可以大致划分成三个方面:计算,存储,网络。分布式系统也不例外。比如Hadoop/Spark是分布式计算系统,HDFS/Tachyon/Ceph这些是分布式存储系统,分布式数据库(诸如BigTable,DynamoDB)也是存储系统。只要是分布式系统,必定是含有网络的,纯粹的分布式网络系统很少,SDN/Openflow这些可以算是分布式网络分系统。
  其次。选择系统的教程来学习。比较好的书籍上面已经有推荐了,MIT的课程也不错。初学者进行一个系统的学习还是很有必要的。如果你已经有OS的基础,写过网络编程,了解CAP原理,不进行这些系统的学习也是可以的。
  再次。阅读好的论文,论文在精不在多。Google的MapReduce是计算系统的经典之作,Amazon的dynamodb是数据库系统的经典之作,Google的GFS算是文件系统方面比较好的论文。系统领域的顶会是SOSP/OSDI,偏重网络的还有SIGCOMM.
  再次。玩弄和hack主流的分布式系统。自己部署一个Hadoop集群或者Spark集群,在上面写写简单的例子,自己实地感受一下这些分布式。选择主流的系统是因为分布式系统对于初学者有很多的坑,主流的系统有足够多的参考资料。如果在上面跑跑程序之后对背后的原理感兴趣,可以去看看源代码。论文只能够提供大概思路,好的idea,如果实现很差,性能也会差别很大。这个阶段需要你学会一些网络知识和系统配置管理。
  最后。当你已经能够hack主流的分布式系统后,你就可以到达自己根据需求来定制自己的分布式系统了。这个阶段,你会对已有的系统进行很多思考,会阅读很多相关的论文,并且自己会不断的进行demo验证,最终实现出你自己的想法。到达这个阶段之后,你就真正走入了分布式系统这个领域。
  技术类学习的第一步是实践。
  可以先去学着搭环境,写个hello world程序(hadoop中的word count)。
  接下来就是多写,多想,逐步提升。
  当你有了实战所需的技术和经验,需要对自己所学的内容做一个升华时,或者当你的实战能力遭遇到了瓶颈的时候,再去看书。

页: [1]
查看完整版本: 从事分布式系统、计算、hadoop 等方面工作需要哪些基础?