当前位置:   article > 正文

Kafka与Spark的知识_kafka spark

kafka spark

看书先看目录,学技术先学做什么

Kafka
使用Scala语言写的消息中间件。
特点:高吞吐量:O(1)的速度读写速度;高并发;数据持久化、可靠化:将数据通过日志的方式存在本地磁盘。
offset:偏移量,重要是消费者要关心的。相当于你读到了那里就做一个标记。
partition:分区,同一个主题可以有很多个分区。每一次分区也相当一个队列。一个主题里面有很多个分区,只能有一个领导者,其他的都是跟随者。消息只会发到领导者分区,再有跟随者发到跟随者分区。添加分区可以拓展kafka的“体积”。就相当于冬天存膘肉那样,就存着存着就多了。
消费组:消费者必须属于一个消费组。每一次分区只能被同一个消费组中的一个消费者消费。相当于组内1对1的关系。
方式:当一批数据来的时候,kafka会按照顺序存入主题中的分区中。不同消费者的消费者读取也是分开按照顺序读取,这样的话会导致一条或者说一批信息被不同组的重复消费。当然,不同的业务逻辑不同思考。避免资源的浪费,最大化性能,保证每一个分区都有一个消费者配对。(就像每一个辅导老师那样,学习的效率可以最大化)
API:Kafka提供的有生产者API,消费者API,Stream API(流处理API),Connect API(连接API).这里也重要用到streamAPI和消费者API。
高级API和低级API:也没有什么好说的,普遍都是用低级的API。offset可以自己维护。


spark
基于Hadoop。
与hadoop不同,Hadoop更加偏向存储以及管理。Spark对于存储方面没有Hadoop做的好,但是他在计算方面可以说有很大提升,提升计算能力进100倍((。・∀・)ノ)。拿一个贴切的比喻。hadoop就好像家里腌菜的老妈妈,她能把每一个菜(白菜、胡萝卜等等)做好处理,分开不同的切法,不同的缸子来腌制。动作不一定最快的,但是存储,管理什么的都做得很好,毕竟老妈心中啥都有数。而spark更像是一个效率很高的机器,他的处理速度就不是老妈妈能比的了,但是我只是一个无情的机器,我只管处理,处理完它去到哪里我管的很少。(感觉就好像喂猪(●ˇ∀ˇ●))
再说说一些正经的。
RDD:弹性分布式数据集。弹性:因为spark是使用内存进行计算,弹性可以保证内存不够时使用磁盘。分布式:可以分布在多台机器上进行计算。是一个很灵活的数据集。
MapReduce:前后分开看,Map映射。Reduce集合,归约。对于数据进行算子操作。Map这个不用多说,reduce就是对于map后的结果进行一个规整合并。所以我的得到的结果实际上就是一个又一个的RDD转化过来的结果。
DAG图:有向无环图,根据MapReduce的转化过程构成一幅DAG图。
RDD转化中的关系依赖:窄依赖:就像上面说kafka那样一一对应。宽依赖:groupby。join等对集合进行操作。
再细一点,说到spark的基本运行流程

Task:运行应用的基本单位。
Executor:运行应用的进程。里面包含了一些Task。
Stage:个人理解就是将DAG图划分一个个部分。一个部分为一个TaskSet。这些TaskSet会被TaskScheduler分配给worker,告诉他们要执行什么。
Job:作业。应用中包含了多个Job,每一个Job都代表了一个操作。新建,加载,转化。
详细的可以看下图。
在这里插入图片描述


再说到主要用到的spark streaming。
spark steaming:实时流数据处理框架。可以从kafka或者flume中实时接收数据处理,可以持久化到HDFS,database。
Dstream:可以理解为一连串RDD,它们之间就时间先后的关系。
这里就是有两种接收方式,一种是Receiver。一种是Direct。这就是high level api和low level api的区别了。前文也说过了,这里就是用后者。


**

有遇到问题可以私信,24小时内必回

**

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/647158
推荐阅读
相关标签
  

闽ICP备14008679号