Onelong

分享知识,与你一起进步......
RSS icon Home icon
  • Hadoop,Spark,JStrom

    post by onelong / 2016-10-24 23:47 Monday [工作]

    这两天了解了一下大数据处理框架,网上浏览了一番,看得眼花撩乱,Hadoop,HBase,Hive,Spark,JStrom等等,既然花了时间去了解,当然要做一下总结吧:
    Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。后面发展产生了很多子项目,HDFS(分布式文件系统),MapReduce(并行计算框架),HBase(分布式NoSQL列数据库),Hive(数据仓库工具),pig,zk等。对于Hadoop的MapReduce要自己写Map和Reduce,各个方便比较繁琐,门槛比较高。Hadoop通常用超大规模静态数据分析,中间结果写入HDFS,时延比较高,但不能说慢,快和慢就看堆多少硬件的。只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够,对于迭代式数据处理性能比较差。
    Spark是新出来的,用于替代MapReduce的并行计算框架,主要特点是提供了一个集群的分布式内存抽象,以支持需要工作集的应用,RDD就是一个不可变的带分区的记录集合,RDD也是Spark中的编程模型。Spark提供了RDD上的两类操作,转换和动作。转换是用来定义一个新的RDD,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup, ReduceByKey, cros, sortByKey, mapValues等,动作是返回一个结果,包括collect, reduce, count, save, lookupKey,也即是说Spark更易用了。Spark为迭代式数据处理提供更好的支持。每次迭代的数据可以保存在内存中,而不是写入文件,Spark的性能相比Hadoop有很大提升。Spark框架为批处理(Spark Core),交互式(Spark SQL),流式(Spark Streaming),机器学习(MLlib),图计算(GraphX)提供一个统一的数据处理平台。

    Batch Layer,HDFS+Spark Core,将实时的增量数据追加到HDFS中,使用Spark Core批量处理全量数据,生成全量数据的视图
    Speed Layer,Spark Streaming来处理实时的增量数据,以较低的时延生成实时数据的视图
    Serving Layer,HDFS+Spark SQL,存储Batch Layer和Speed Layer输出的视图,提供低时延的即席查询功能,将批量数据的视图与实时数据的视图合并。

    无论是Hadoop还是Spark,都是比较适合做批量处理全量数据,不适合做增量数据分析。Spark比较方便的结合HDFS,HBase和mysql,例如将计算结果导到Mysql等。

     
    Spark Streaming和JStorm(Storm)都是分布式流处理框架,通常和消息队列一起使用,如Kafka。用于增量处理数据。JStorm比Spark Streaming更高性能。通常是用法:日志--》消息队列--》JStorm--》写入数据库和展示。例如双11实时统计成交金额。

    一般的用法:
    1、Hadoop 独立使用,离线数据分析,感觉
    Spark比较火,但是Hadoop是基础。
    2、HDFS+Spark,文件+ 
    Spark,HBase+ Spark,Spark+MySql 等
    3、 Kafka(消息队列)+ (J)Storm或Spark Streaming+ HBase(数据库)
    4、2和3结合用,日志存储+流处理。因为流处理是不可重复的,你可能需要把日志存储下来,以备下次离线分析。 

    引用地址:
     

    我要评论