大数据生态圈的概念
为了用大量的机器(成千上百台)存下数据,设计出了HDFS(Hadoop Distributed FileSystem)。
存下数据以后为了能更好的处理(索引查找等)数据,设计出了第一代计算引擎MapReduce。(类似于sql中的engine,每种引擎有各自的优缺点,能满足各种不同的场景要求。),后来又出了第二代的引擎Tez跟Spark。
MapReduce的程序比较麻烦,于是就有了Pig和Hive:
有了MapReduce,Tez和Spark之后,程序员发现,MapReduce的程序写起来真麻烦。他们希望简化这个过程。这就好比你有了汇编语言,虽然你几乎什么都能干了,但是你还是觉得繁琐。你希望有个更高层更抽象的语言层来描述算法和数据处理流程。于是就有了Pig和Hive。
Pig是接近脚本方式去描述MapReduce,Hive则用的是SQL。它们把脚本和SQL语言翻译成MapReduce程序,丢给计算引擎去计算,而你就从繁琐的MapReduce程序中解脱出来,用更简单更直观的语言去写程序了。
就像MySQL中的存储引擎innodb与myisam对比一样,Hive on MapReduce因为健壮,所以比较慢。为了一些比较快的业务需求,又有了Hive on Tez / Spark和SparkSQL。
以上基本算是一个数据仓库的架构了。
底层HDFS,上面一层跑MapReduce/Tez/Spark,再上面一层跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。
但是还有一些业务场景,比如微博,要求更高速的处理,于是有了Streaming(流)计算,其中Storm是最流行的流计算平台。
另外还有一些相对独立的模块,Hbase,MongoDB,Mahout,Zookeeper等等等等。
有了这么多乱七八糟的工具,都在同一个集群上运转,大家需要互相尊重有序工作。所以另外一个重要组件是,调度系统。现在最流行的是Yarn。你可以把他看作中央管理,好比你妈在厨房监工,哎,你妹妹切菜切完了,你可以把刀拿去杀鸡了。只要大家都服从你妈分配,那大家都能愉快滴烧菜。
大数据生态圈就类似于厨房工具生态圈。为了迎合不同的业务场景,需要用到不同的工具。而场景越来越多,工具也会越来越多~
分布式与集群的理解:分布式是指不同的业务分布在不同的地方,集群指的是将几台服务器集中在一起,实现同一业务。