What
其实每学习一门新东西的时候,我们都在问自己,这东西是什么,为什么要学习,它能被用来做什么。不知道你有没有注意到:网上一些国外著名大学的网络课程,往往第一个视频里,无论是专家还是教授都在讲为啥要学习这东西,而且不厌其烦的讲很长时间,这或许就是中国的教育方式和国外的不同,老外可能更关心why,而我们更关心how to do。废话不多少了……
Hadoop的官方文档很直白的告诉了我们what,why,how hadoop:
The Apache™ Hadoop™ project develops open-source software for reliable, scalable, distributed computing.
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using a simple programming model. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-avaiability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-availabile service on top of a cluster of computers, each of which may be prone to failures.
The project includes these subprojects:
- Hadoop Common: The common utilities that support the other Hadoop subprojects.
- Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
- Hadoop MapReduce: A software framework for distributed processing of large data sets on compute clusters.
Hadoop目前包含了三方面的内容,所以,目前的主要学习内容也围绕这三个方面:
1.公共组件——暂且理解问支持Hadoop的工具
2.HDFS——Hadoop的分布式文件系统(分布式文件系统有很多,比如Sun,噢,对不起现在叫Oracle的NFS,以及其他AFS等)
3.MapReduce——核心(为啥这样说,因为MapReduce不是Hadoop的,这是Google的一篇论文引发的海量数据处理革命,正是有了MapReduce计算模型的实现,Hadoop才真正站在海量数据处理的最前沿)
Why
为什么要学习Hadoop,三个字:感兴趣,兴趣是程序员“不畏浮云遮望眼,只缘身在最高层”的精神支柱。
How
如何学习Hadoop?其实这个问题,Hadoop已经告诉我们了,就先弄明白上面的这三部分,Debug Hadoop的源代码, 仔细阅读每一个类都干什么,分析为什么要这样做。当初学习java就这么搞,不懂的地方可以先暂时跳过,分析源码是一件枯燥的事情,但也是一件有趣的事情。