首先我觉得应该思考这样一个问题:Hadoop对于我们来讲,是一种工具,那么Hadoop帮助我们解决了什么问题?或者换个角度想,没有Hadoop,我们做同样一项工作会增加什么任务?(想清楚了这问题,心里就会形成Hadoop到底是什么,能做什么的概念。初学者在最初时候很容易框架当成负担,但实际上他应该是工具。明白了Hadoop这个神器的美妙后,你就可以开始心怀期待的去慢慢驾驭它了。)
初学Hadoop,最基础的也就是HDFS和Mapreduce了,HDFS是一个分布式存储文件系统,Mapreduce是一个分布式计算的框架,两者结合起来,就可以很容易做一些分布式处理任务了。作为入门,先只需要学习这两样就够了。
好了,那就开始讲一下怎么学习这两样。
1、首先你肯定要搭建好环境。(这些网上教程很多。)然后,找一篇讲Hdfs java API的文章HDFS API详解把其中的例子跑一下,感受一下就可以了。(只需要只要有哪些API,大概怎么用,以后要用,直接在里面找,或者查看API文档。)
2、然后就是Mapreduce了。说简单一点,这就是一个编程接口,这个框架帮我们抽象了很多分布式处理的细节,我们只需要简单的编写mapreduce任务就可以了。要想编写mapreduce程序,首先你应该弄清楚mapreduce的基本流程Hadoop -- MapReduce过程,然后要清楚,我们自己编程写mapreduce任务需要编写哪些东西(就是哪些部分是可以重写,应该重写的)。看懂了这些(最好要运行一些这些程序),你基本就可以写一些mapreduce程序,处理一些简单的任务了。(至于mapreduce高级运行,比如定制数据类型、patitioner、组合任务等等这些,你只要知道有这些就可以了,需要用的时候再仔细看。)
还有谷歌的那篇MapReduce_Simplified_Data_Processing_on_Large_Clusters可以多读几遍,可以解决你心中对于mapreduce框架的很多疑问。
我觉得知道了这些,基本就是入门了。然后再要深入学习,你就可以根据自己的需要去学了(这个时候你应该也知道该怎么学了)。至于hadoop衍生的那些HIVE、Pig等等,我觉得只需要知道有那些东西,知道那些能做什么就可以了。因为我们的目的只是把Hadoop作为工具。如果是其他目的,你可以看看mapreduce源码分析之类吧。我暂时没搞这些,不懂,就不多说了。
作者:余是 来源:知乎
自学Hadoop还是比较艰难的尤其到了后期,没有老师指导很容易学偏,且拉长学习周期。自学的话也会缺少一个为你背书,保证你学习成绩有效性的机构。我是大讲台运营老师,已经有很多小伙伴在大大讲台这家专业的最实用的Hadoop在线机构学习,自学那么辛苦,不妨来大讲台(dajiangtai.com)看看!