大数据生态圈

存储

主要包括hdfs、Kafka

计算

主要包括MapReduce、Spark、Flink

查询

主要为Nosql和Olap,Nosql
主要包括Hbase、 Cassandra 等:

  • 其中olap包括kylin、impla等,
  • 其中Nosql主要解决随机查询,
  • Olap技术主要解决关联查询

挖掘

机器学习和深度学习等技术,包括TensorFlow、caffe、mahout

Google三本阵法修炼秘籍

  1. 大数据入门的最好文章,通俗易懂,先看此三篇再看其它技术 :

    • 《Google file system》:论述了怎样借助普通机器有效的存储海量的大数据;
    • 《Google MapReduce》:论述了怎样快速计算海量的数据;
    • 《Google BigTable》:论述了怎样实现海量数据的快速查询;
  2. apache根据这三本秘籍研究出对应的武学巨著《hadoop》,Hadoop包括三大部分,分别是hdfs、MapReduce和hbase:

    • hdfs解决大数据的存储问题
    • mapreduce解决大数据的计算问题
    • hbase解决大数据量的查询问题
  3. 演进:

    • mapreduce-> hive,pig、impla等SQL ON Hadoop的简易修炼秘籍
    • MapReduce-> 推出基于内力(内存)的《Spark》,意图解决所有大数据计算问题
    • Hadoop(只能批量计算)-> SparkStreaming、Storm,S4等流式计算技术,能够实现数据一来就即时计算
    • flink–流计算和批量计算的统一体

详解

  1. HDFS:跨平台存储数据
  2. 多台机器之间的互相通信交换数据以及完成复杂的计算:MapReduce/Tez/Spark:

    • MapReduce是第一代计算引擎;Tez和Spark是第二代计算引擎;
    • MapReduce的计算模型:Map和Reduce两个计算过程(中间用Shuffle串联),MapReduce程序
      • Map阶段:多台机器同时读取一个文件的各个部分,分别统计词频,产生多个Map集合
    • Reduce阶段:接收所对应的Map集合结果,将相同键的集合汇总,进而得到整个文件的词频结果
      • Map+Reduce过于笨重
      • 第二代的Tez/Spark让Map/Reduce模型更通用,让Map和Reduce之间的界限更模糊,数据交换更灵活,更少的磁盘读写,以便更方便地描述复杂算法,取得更高的吞吐量
  3. 更高层更抽象的语言层来描述算法和数据处理流程:Pig和Hive :

    • Pig是接近脚本方式去描述MapReduce,Hive则用的是SQL
    • 把脚本和SQL语言翻译成MapReduce程序,丢给计算引擎去计算,而就从繁琐的MapReduce程序中解脱出来
    • Hive已成了大数据仓库的核心组件,易写易改,一看就懂,容易维护。
  4. Hive on Tez/Spark和SparkSQL:设计理念:MapReduce慢,如果用新一代通用计算引擎Tez或者Spark来跑SQL,那就能跑的更快

  5. 第1-4可总结为数据仓库的构建:

    底层HDFS,上面跑MapReduce/Tez/Spark,再上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。这解决了中低速数据处理的要求。

  6. 更高速的处理:Streaming(流)计算(计算模型)

    • Storm是最流行的流计算平台
    • 流计算的思路:达到更实时的更新,在数据流进来的时候就进行处理,基本无延迟.
    • 短处是,不灵活,想要统计的东西必须预先知道,毕竟数据流过就没了,没算的东西就无法补算了。
    • 因此它是个很好的东西,但是无法替代上面数据仓库和批处理系统
  7. 独立的模块KV Store,比如Cassandra,HBase,MongoD…

    • KV Store就是说,有一堆键值,能很快速滴获取与这个Key绑定的数据.比如用身份证号,能取到身份数据;这个动作用MapReduce也能完成,但是很可能要扫描整个数据集
    • KV Store的理念是,基本无法处理复杂的计算,大多没法JOIN,也许没法聚合,没有强一致性保证;但一般速度极快
  8. 更特制的系统/组件,比如:

    • Mahout是分布式机器学习库,
    • Protobuf是数据交换的编码和库,
    • ZooKeeper是高一致性的分布存取协同系统
  9. 以上所有都在同一个集群上运转,所以另外一个重要组件是,调度系统;现在最流行的是Yarn

  10. https://pic4.zhimg.com/80/v2-08f5a53fd29efb65a2573dcd5d5bd0e7_hd.jpg
    https://pic1.zhimg.com/80/v2-c07c85dfa597fe9b6a1c63b24948323d_hd.jpg

  • 蓝色部分,是Hadoop生态系统组件,黄色部分是Spark生态组件,虽然他们是两种不同的大数据处理框架,但它们不是互斥的,Spark与hadoop 中的MapReduce是一种相互共生的关系。Hadoop提供了Spark许多没有的功能,比如分布式文件系统,而Spark 提供了实时内存计算,速度非常快。有一点大家要注意,Spark并不是一定要依附于Hadoop才能生存,除了Hadoop的HDFS,还可以基于其他的云平台

趋势

  1. Spark在崛起,hadoop和Storm中的一些组件在消退

  2. HSQL未来可能会被Spark SQL替代,现在很多企业都是HIVE SQL和Spark SQL两种工具共存,当Spark SQL逐步成熟的时候,就有可能替换HSQL

  3. MapReduce也有可能被Spark 替换,趋势是这样,但目前Spark还不够成熟稳定

  4. Hadoop中的算法库Mahout正被Spark中的算法库MLib所替代

  5. Storm会被Spark Streaming替换吗?Storm虽然不是hadoop生态中的一员,由于Spark和hadoop天衣无缝的结合,Spark在逐步的走向成熟和稳定,其生态组件也在逐步的完善,是冉冉升起的新星,Storm会逐步被挤压而走向衰退

Donate comment here