• 【大数据】技术选型对比


     

    公司要开搞大数据了,针对大数据的一般姿势做了个简单调研。

    一、通用架构

    二、组件选择

    1、Hdfs、HBase

    Hdfs:分布式文件存储,无缝对接所有大数据相关组件。高容错(多副本)、高吞吐。适合一次写入,多次读出。不适合低延迟读取、小文件存储(寻址时间超过读取时间)。

    HBase:非关系型分布式数据库基于Hdfs,高容错、高吞吐。HBase采用的是Key/Value的存储方式,即使随着数据量增大,也几乎不会导致查询的性能下降。

    2、Flume、Sqoop

    Flume:最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS/Kafka/HBase。

    Sqoop:用来在RDBMS和Hadoop之间进行数据传输的工具就是我们所说的Sqoop。在这里,RDBMS指的是MySQL,Oracle SQL等,而Hadoop指的是Hive,HDFS和HBase等。 我们使用Sqoop将数据从RDBMS导入Hadoop,也可用于将数据从Hadoop导出到RDBMS

    3、Kafaka

    高并发的基石。吞吐量远远领先于同类别的MQ。

    LinkedIn团队做了个实验研究,对比Kafka与Apache ActiveMQ V5.4和RabbitMQ V2.4的性能

    生产者                                                                                                                消费者

                                  

    4、MapReduce & Hive  & Spark & Flink & Beam

       4.1、演变史

          4.2、MapReduce 到 Hive 到 SparkSQL的演变

      4.3、MapReduce  、 Spark   、Flink 

     MapReduce                                                                                                                                                                  

       Spark          

        

       Flink

      

    MapReduce:

    MapReduce 模型的抽象层次低,大量的底层逻辑都需要开发者手工完成。
    只提供 Map 和 Reduce 两个操作。比如两个数据集的 Join 是很基本而且常用的功能,但是在 MapReduce 的世界中,需要对这两个数据集做一次 Map 和 Reduce 才能得到结果。
    在 Hadoop 中,每一个 Job 的计算结果都会存储在 HDFS 文件存储系统中,所以每一步计算都要进行硬盘的读取和写入,大大增加了系统的延迟。

    Spark:

    Spark 最基本的数据抽象叫作弹性分布式数据集(Resilient Distributed Dataset, RDD),它代表一个可以被分区(partition)的只读数据集,它内部可以有很多分区,每个分区又有大量的数据记录(record)。
    RDD 是 Spark 最基本的数据结构。Spark 定义了很多对 RDD 的操作。如 Map、Filter、flatMap、groupByKey 和 Union 等等,极大地提升了对各种复杂场景的支持。
    相对于 Hadoop 的 MapReduce 会将中间数据存放到硬盘中,Spark 会把中间数据缓存在内存中,从而减少了很多由于硬盘读写而导致的延迟,大大加快了处理速度。

    Flink

    在 Flink 中,程序天生是并行和分布式的。一个 Stream 可以包含多个分区(Stream Partitions),一个操作符可以被分成多个操作符子任务,每一个子任务是在不同的线程或者不同的机器节点中独立执行的。

     

    性能对比

    可以看出,Hadoop 做每一次迭代运算的时间基本相同,而 Spark 除了第一次载入数据到内存以外,别的迭代时间基本可以忽略。

    4.4、几种处理引擎对比

     API类SQL性能容错性实时性批处理流处理Exactly once语义社区活跃度
    MapReduce 复杂 没有 不支持
    Hive 简单 不支持
    Spark 简单 中高(秒级) 支持
    Flink 简单 高(微妙级) 支持
    Beam 或者代表着未来。目前在谷歌内部使用、生态还没发展起来。拭目以待


    附1:

    在流处理系统中,我们对应数据记录的处理,有3种级别的语义定义,以此来衡量这个流处理系统的能力。

    1. At most once(最多一次)。每条数据记录最多被处理一次,潜台词也表明数据会有丢失(没被处理掉)的可能。
    2. At least once(最少一次)。每条数据记录至少被处理一次。这个比上一点强的地方在于这里至少保证数据不会丢,至少被处理过,唯一不足之处在于数据可能会被重复处理。
    3. Exactly once(恰好一次)。每条数据记录正好被处理一次。没有数据丢失,也没有重复的数据处理。这一点是3个语义里要求最高的。

    4.5、使用场景

    MapReduce:仅仅用来学习,理解大数据的原理。

    Hive:类SQL引擎,适合做报表分析

    Spark: Spark 存在的一个缺点——无法高效应对低延迟的流处理场景入手。对于以下场景,你可以选择 Spark。

    1. 数据量非常大而且逻辑复杂的批数据处理,并且对计算效率有较高要求(比如用大数据分析来构建推荐系统进行个性化推荐、广告定点投放等);
    2. 基于历史数据的交互式查询,要求响应较快;
    3. 基于实时数据流的数据处理,延迟性要求在在数百毫秒到数秒之间。

    Spark 完美满足这些场景的需求, 而且它可以一站式解决这些问题,无需用别的数据处理平台。

    Flink:由于 Flink 是为了提升流处理而创建的平台,所以它适用于各种需要非常低延迟(微秒到毫秒级)的实时数据处理场景,比如实时日志报表分析。

    而且 Flink 用流处理去模拟批处理的思想,比 Spark 用批处理去模拟流处理的思想扩展性更好,所以我相信将来 Flink 会发展的越来越好,
    生态和社区各方面追上 Spark。比如,阿里巴巴就基于 Flink 构建了公司范围内全平台使用的数据处理平台 Blink,美团、饿了么等公司也都接受 Flink 作为数据处理解决方案。

    可以说,Spark 和 Flink 都在某种程度上统一了批处理和流处理。

     

    三、任务分工

     

     

  • 相关阅读:
    虚拟机VMware配置centos7集群(亲测有效)
    linux虚拟机克隆后,虚拟机ping不通的解决方法
    VC++使用 GDI+等比例缩放图片,并且居中显示
    VS2015 编译OSG Plugins Giflib静态库
    Qt 读写文件操作
    OSG 常用快捷键(全屏、查看帧数、截屏)
    Navicat Premium v15 中文最新破解版(附:激活工具)
    redis 持久化机制及配置
    Redis 五种数据类型
    linux 安装redis
  • 原文地址:https://www.cnblogs.com/kbian/p/12343058.html
Copyright © 2020-2023  润新知