
草地上开满鲜花,可牛群来到这里发现的只是饲料。
--王朔
这也许就是很多人对这些看似杂乱无章的开源项目的感觉吧。以下是原回答。
那我就把大数据生态比喻成马戏团吧
hadoop是头大象,能吃(hdfs能存很多数据),力气大(Map-Reduce有很强而且scalable的计算能力),还聪明(有还不错的任务管理调度能力)。但有点笨重。
hive是个训练大象的师傅,其实hive自己并不“干活”,它是指挥着前面那头大象做事。最早的hive on mapreduce,其实就是把sql翻译成map- reduce任务给Hadoop做。有了hive这个驯兽师之后,很多只会写sql小孩子们也可以很轻松的和大象玩了。
spark是个老虎,力量强,速度快。老虎是看到早先大象计算方面就只会map-reduce这一招,而且这一招十分死板,每做完一步,都要写回到hdfs。那spark说,我就灵活一点吧,那就把一些操作放到内存中,而不是每次都要写回到存储了。
这时候hive就看到了机会,那我不驯大象了,我训老虎吧,于是就有了hive on spark, 其实是一样的,简单来说,hive还是起到sql翻译的作用,让spark去干真正的工作。当然,类似的还有hive on tez,这时候hive就是一个全面的驯兽师了。
很多人发现spark这个猫科动物比较聪明,人们又让他学了sql,ai, graph等技能,于是就有了spark-sql, spark-ai 和spark-graphx等模块或者说library。这时候我们也把spark作为一个完善的生态圈来看待,可以叫马戏团之spark老虎分团。
后来还有了presto这种猎豹,完全依靠自己的调度器和内存进行计算,只是用hdfs存原始的数据,这个速度就又快了不少,但豹子毕竟力量有限,特别是如果你presto集群规模比较小,有些特大数据量的query就跑不了了。
再后来,大家觉得大象的hdfs存储也有些不够用了,于是又有了对象存储s3等,也有了alluixo这些缓存层。
马戏团的动物可以各种各样,但戏法(应用场景)却就那么些,也就是analytic sql query, AI, ETL, graph等,老虎能钻火圈,豹子没准也能,所以会有不少的重叠,这个时候就需要根据自己的具体情况酌情选用。
最后,祝大家在大数据马戏团玩的开心。
