• 大数据基础概念


    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53606112 冷血之心的博客)

    1、Hadoop是什么?

    (1)Apache Hadoop软件库是一个框架,允许在集群服务器上使用简单的编程模型对大数据集进行分布式处理。Hadoop被设计成能够从单台服务器扩展到数以千计的服务器,每台服务器都有本地的计算和存储资源。Hadoop的高可用性并不依赖硬件,其代码库自身就能在应用层侦测并处理硬件故障,因此能基于服务器集群提供高可用性的服务。

    (2)简单来说,Hadoop是在分布式服务器集群上存储海量数据并运行分布式分析应用的一种方法。

    (3)如果提起Hadoop你的大脑一片空白,那么请牢记住这一点:

    Hadoop有两个主要部分:一个数据处理框架(MapReduce)和一个分布式数据存储文件系统(HDFS)

    (4)顾名思义,数据处理框架是处理数据的工具。具体来说Hadoop的数据处理框架是基于Jave的系统——MapReduce

    (5)有一点容易搞混的是,Hadoop并不是一个真正意义上的数据库:它能存储和抽取数据,但并没有查询语言介入。Hadoop更多是一个数据仓库系统,所以需要MapReduce这样的系统来进行真正的数据处理。

     2、Hive是什么?

    答:Hive是Hadoop生态圈的数据仓库系统,其最大的特点是使用类似于SQL的语言读、写、管理HDFS上的大数据集。这样既可以利用SQL编程简单易上手的特性,又能够利用MapReduce强大的分布式计算能力

    如果把Hadoop看做一个操作系统,则HDFS和MapReduce就是这个操作系统的组成部分,而Hive则是操作系统的上层应用。Hadoop生态圈的通用底层架构是:HDFS提供分布式存储,MapReduce为上层功能提供并行处理能力。

    在HDFS和MapReduce之上,Hive驱动程序及其编译器负责编译、优化和执行HiveQL。依赖于具体情况,Hive驱动程序可能选择在本地执行Hive语句或命令,也可能是产生一个MapReduce作业。

    Hive是一个典型的客户端—服务器结构。

     3、Spark Streaming构架

    • 计算流程:Spark Streaming是将流式计算分解成一系列短小的批处理作业。这里的批处理引擎是Spark,也就是把Spark Streaming的输入数据按照batch size(如1秒)分成一段一段的数据(Discretized Stream),每一段数据都转换成Spark中的RDD(Resilient Distributed Dataset),然后将Spark Streaming中对DStream的Transformation操作变为针对Spark中对RDD的Transformation操作,将RDD经过操作变成中间结果保存在内存中。整个流式计算根据业务的需求可以对中间的结果进行叠加,或者存储到外部设备。图2显示了Spark Streaming的整个流程。


    图2 Spark Streaming构架图


    • 容错性:对于流式计算来说,容错性至关重要。首先我们要明确一下Spark中RDD的容错机制。每一个RDD都是一个不可变的分布式可重算的数据集,其记录着确定性的操作继承关系(lineage),所以只要输入数据是可容错的,那么任意一个RDD的分区(Partition)出错或不可用,都是可以利用原始输入数据通过转换操作而重新算出的。

    图3 Spark Streaming中RDD的lineage关系图

    • 对于Spark Streaming来说,其RDD的传承关系如图3所示,图中的每一个椭圆形表示一个RDD,椭圆形中的每个圆形代表一个RDD中的一个Partition,图中的每一列的多个RDD表示一个DStream(图中有三个DStream),而每一行最后一个RDD则表示每一个Batch Size所产生的中间结果RDD。我们可以看到图中的每一个RDD都是通过lineage相连接的,由于Spark Streaming输入数据可以来自于磁盘,例如HDFS(多份拷贝)或是来自于网络的数据流(Spark Streaming会将网络输入数据的每一个数据流拷贝两份到其他的机器)都能保证容错性。所以RDD中任意的Partition出错,都可以并行地在其他机器上将缺失的Partition计算出来。这个容错恢复方式比连续计算模型(如Storm)的效率更高。
    • 实时性:对于实时性的讨论,会牵涉到流式处理框架的应用场景。Spark Streaming将流式计算分解成多个Spark Job,对于每一段数据的处理都会经过Spark DAG图分解,以及Spark的任务集的调度过程。对于目前版本的Spark Streaming而言,其最小的Batch Size的选取在0.5~2秒钟之间(Storm目前最小的延迟是100ms左右),所以Spark Streaming能够满足除对实时性要求非常高(如高频实时交易)之外的所有流式准实时计算场景。

    • 扩展性与吞吐量:Spark目前在EC2上已能够线性扩展到100个节点(每个节点4Core),可以以数秒的延迟处理6GB/s的数据量(60M records/s),其吞吐量也比流行的Storm高2~5倍,图4是Berkeley利用WordCount和Grep两个用例所做的测试,在Grep这个测试中,Spark Streaming中的每个节点的吞吐量是670k records/s,而Storm是115k records/s。
    图4 Spark Streaming与Storm吞吐量比较图


    4、Kafka介绍:

         Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。

    producer:
      消息生产者,发布消息到 kafka 集群的终端或服务。
    broker:
      kafka 集群中包含的服务器。
    topic:
      每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。
    partition:
      partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。
    consumer:
      从 kafka 集群中消费消息的终端或服务。
    Consumer group:
      high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
    replica:
      partition 的副本,保障 partition 的高可用。
    leader:
      replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
    follower:
      replica 中的一个角色,从 leader 中复制数据。
    controller:
      kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。
    zookeeper:
      kafka 通过 zookeeper 来存储集群的 meta 信息。






    如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以加群366533258交流讨论哈~
  • 相关阅读:
    apache https部署
    库位码排序优化
    mybatis + easy excel 导出百万级数据仅需要1g内存
    解决springboot打成jar包后, 无法获取(classpath)类路径下的自定义配置文件
    好用的 easyExcel 工具类
    数据结构与算法(相关名词)
    自动填充javabean属性,借助json序列化工具方便生成参数请求体
    用于避免bean对象连点方法调用报空指针异常,排查困难。
    基于FastJson封装的工具类
    itexpdf 工具类
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467226.html
Copyright © 2020-2023  润新知