摘要: Kafka 的 ack 机制(数据可靠性保证) 0:不等待 broker 返回确认消息 1:等待 topic 中某个 partition leader 保存成功的状态反馈 -1:等待 topic 中某个 partition 所有副本都保存成功的状态反馈 仅设置 acks=-1 也不能保证数据不丢失, 阅读全文
posted @ 2020-04-17 12:32 花未全开*月未圆 阅读(173) 评论(0) 推荐(0) 编辑
摘要: (1) Receiver 方式 使用 kafka 的高层次 API 进行消费,然而,在默认的配置下,这种方式可能会因为底层的失败而丢失数据。如果要启用高可靠机制,让数据零丢失,就必须启用 Spark Streaming 的预写日志机制(Write Ahead Log,WAL)。该机制会同步地将接收到 阅读全文
posted @ 2020-04-17 12:26 花未全开*月未圆 阅读(884) 评论(0) 推荐(0) 编辑
摘要: (1) 从序列化的角度 Spark 提供了两种序列化库,一种是 java 的序列化,另一种是 Kryo 序列化。Java 的序列化框架相对来说性能较慢,如果在网络密集型的应用中不太合适。因此可以将序列化的方式调整为 Kryo 的序列化方式,Kryo 序列化比 java 序列化在速度上更快(一般在 1 阅读全文
posted @ 2020-04-17 12:22 花未全开*月未圆 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Spark 中的调度模式主要有两种:FIFO 和 FAIR。默认情况下 Spark 的调度模式是 FIFO(先进先出),谁先提交谁先执行,后面的任务需要等待前面的任务执行。而 FAIR(公平调度)模式支持在调度池中为任务进行分组,不同的调度池权重不同,任务可以按照权重来决定执行顺序。使用哪种调度器由 阅读全文
posted @ 2020-04-17 12:21 花未全开*月未圆 阅读(768) 评论(0) 推荐(0) 编辑
摘要: 这里我们先明确一个假设前提:每个 Executor 只有 1 个 CPU core,也就是说,无论这个 Executor 上分配多少个 task 线程,同一时间都只能执行一个 task 线程。 1. 未经优化的 HashShuffleManager shuffle write 阶段将每个 task 阅读全文
posted @ 2020-04-17 12:20 花未全开*月未圆 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 有两种模式:cluster 和 driver 区别: cluster 模式:Driver 程序在 YARN 中运行,应用的运行结果不能在客户端显示,所以最好运行那些将结果最终保存在外部存储介质(如 HDFS、Redis、Mysql)而非 stdout 输出的应用程序,客户端的终端显示的仅是作为 YA 阅读全文
posted @ 2020-04-17 12:16 花未全开*月未圆 阅读(1166) 评论(0) 推荐(0) 编辑
摘要: 问题:如果在 shuffle 的时候没有指定 reduce 的个数,那么会有多少个 reduce? 如果不指定 reduce 个数的话,就按默认的走: 1、如果自定义了分区函数 partitioner 的话,就按你的分区函数来走。 2、如果没有定义,那么如果设置了 spark.default.par 阅读全文
posted @ 2020-04-17 12:15 花未全开*月未圆 阅读(505) 评论(0) 推荐(0) 编辑