首先你要学会搭集群(说到大数据默认是hadoop那一套没人反对吧?)。先不要用高版本代码,用0.2.3,该版本保留了最初始但架构非常清晰的部分,比如master和slave架构,jobtracker和tasktracker,比如datanode和namenode。
再往上就是大数据处理的两大核心部分:分布式计算和分布式存储。搞清楚这些,网上一搜,会发现,这尼玛就是谷歌分布式计算存储的山寨版本,好,恭喜你,现在终于可以一窥其角了。注意,一定要抠低版本的核心实现原理,因为高版本那些看似炫酷的架构都离不了低版本中那些核心架构的启发。
分布式计算涉及到 mapreduce,mapreduce涉及到各种文本的分割,reducer分桶,各阶段的排序(如归并算法、堆排序算法的实现),二级索引的环形缓冲器的设计,reducer阶段涉及到多线程的map端拉取,还有非常重要的数据存储的序列化类的实现始末,数据写入时的dataqueue和 ackqueue,pipelines,block的分布原理,机架感知,容错等。再往上,便是2.0以后引入的YARN和HA,在这个层次,你会接触到更多很神奇的东西,比spark,Dooker,hive,protubuf,hbase,pig会用这些,才算打好了基础。
大数据只有打好了基础才能进行更高层次的学习。总结起来,大数据领域的处理分为实时计算和离线计算,基于不同的业务场景有不同的实现架构,但归根到底, hadoop才是源头。至于数据挖掘,和是不是基于大数据的有毛关系。问个问题,有两个大小分别为2T的日志,怎么比较它们是不是相同,给出不同的行数和具体内容。在海量数据面前,传统的工具什么都不是。
|