![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据面试题(java)
文章平均质量分 80
一只特蕉
一个致力于特立独行的香蕉
展开
-
实现精确一次消费
每间隔5s消费者会自动从poll方法获得的最大的偏移量提交到主题中,再均衡之后可能出现重复消费和丢失数据的可能,重复消费:数据丢失:提交偏移量的周期要小于,消费者处理的时长,会出现数据的丢失使用提交由poll方法返回的最新的偏移量,如果成功提交马上返回结果,提交失败就会跑出异常使用提交由poll方法返回的最新的偏移量,频繁提交在broker响应之前,应用程序会一直阻塞,降低了吞吐量,单一但发生再均衡的情况,会增加重复的数量 一步提交还有回调的功能很难确定自动提交偏移量的时机、同步提交和异步提交会出现吞吐原创 2022-06-06 15:39:59 · 204 阅读 · 1 评论 -
Spark数据倾斜
Spark数据倾斜一、定义不同的Key对应的数据量不一样,少量的Task被分配到了绝大多数的数据可能会发生数据倾斜数据倾斜的表现:Spark的大部分Task作业正常,只有几个比较慢Spark的某个Task在运行过程中出现了OOM,作业无法正常运行定位数据倾斜问题:检查Shuffle算子的逻辑有没有问题,会不会出现数据倾斜的问题检查Spark的Log文件,会定位到代码的某一行,根据报错去检查对应的Stage的shuffle算子二、解决方案一:聚合原始数据避免Shuffle过程原创 2021-08-05 21:44:40 · 104 阅读 · 0 评论 -
Spark Shuffle机制
Spark Shuffle在MapReduce框架,Shuffle是连接Map和Reduce之间的桥梁,Map阶段通过shuffle读取数据并输出到对应的Reduce;而Reduce阶段负责从Map端拉取数据并进行计算。在整个shuffle过程中,往往伴随着大量的磁盘和网络I/O。所以shuffle性能的高低也直接决定了整个程序的性能高低。一、HashShuffle机制1.1 HashShuffle概述Spark1.6版本之前使用的是HashShuffle。Spark运行分为两个部分:一是原创 2021-08-02 17:05:33 · 137 阅读 · 0 评论 -
Kafka相关面试题
Kafka一、为什么要使用Kafka削峰:上游的数据下游可能扛不住,Kafka在中间起到调剂的作用,将消息暂存,下游自行拉取解耦和扩展性:消息队列可以作为一个接口层,解耦重要的业务流程异步通讯:不需要上下游同时处理数据,在需要时才回去发布(生产者)或者消费数据(消费者)健壮性:消息队列可以堆积请求,及时消费端业务短时间死掉,也不会影响到业务的正常运行二、Kafka消费过的数据怎么再消费 Kafka消费信息的offset信息是定义在Zookeeper中的,若果想要重复消费Kafka的消原创 2021-07-25 16:54:23 · 138 阅读 · 0 评论 -
Spark相关面试题(Spark Core)
Spark一、Hadoop和Spark的区别hadoopspark类型基础平台:存储、计算、调度分布式计算框架场景大规模数据集的批处理迭代计算,交互式计算,流计算价格对机器相对要求比较低,廉价对内存要求较高,相对较贵编程范式Map+Reduce,API较为底层,算法适应性差RDD组成的DAG有环无向图,API较为顶层,方便实用数据存储结构存储在HDFS磁盘上,延迟大RDD中间运算结果存储在内存之中,延迟小运行方式Task以进程方原创 2021-07-22 22:08:41 · 222 阅读 · 1 评论 -
Spring Boot基础面试题
Spring Boot一、 @SpringBootApplication**@SpringBootApplication**是三个注解的集合注解@Configuration@EnableAutoConfiguration@ComponentScan作用允许Spring Boot在上下文中注册额外的bean或导入其他配置类启动Spring Boot的自动配置类扫描@Component(@Service,@Controller)注解的Bean,默认扫描该类所在的包下的所有类原创 2021-07-08 14:03:23 · 472 阅读 · 0 评论 -
JVM相关面试题
JVM一、双亲委派机制概念当某个类加载器需要加载.class文件的时候,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才回去加载这个类。类加载器的类别BootStrapClassLoader(启动类加载器)java 的核心库java*,构造ExtClassLoader和AppClassLoader。由于引导类加载器设计到虚拟机本地的实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作ExtClassL原创 2021-07-08 10:43:31 · 70 阅读 · 0 评论 -
Java并发
并发一、线程和进程(JVM)进程是程序的一次执行过程,是系统运行程序的基本单位,系统运行一个程序就是,就是一个进程的创建,运行到消亡线程是相比进程更小的执行单位,一个进程在执行期间包含多个线程,多个线程之间共享堆和方法区每个线程都独立的拥有自己的虚拟机栈、本地方法栈和程序计数器二、 程序计数器为什么是私有的(1)程序计数器的作用字节码解释器通过改变程序计数器来依次读取命令,实现程序的顺序执行,循环、选择、异常处理在多线程的情况下,使用程序计数器来记录当前程序执行的位置,等到程原创 2021-07-08 10:41:02 · 84 阅读 · 0 评论 -
java集合
Java集合Java集合概述一、List、Set、Map之间的关系List 存储的元素是有序的,可以重复的Set 存储的元素是无序的,不可重复的Map 存储的元素是键值对 key是无序的,不可重复的 value是无序的,可以重复的二、 HashMap:jdk1.8之前是数组加链表的形式来存储,数组是HashMap的主体,链表是为了解决Hash冲突问题的。jdk1.8之后采用的就是数据+链表+红黑原创 2021-07-08 10:37:17 · 74 阅读 · 0 评论 -
JAVA基础
JAVA 基础一、equals 和 == 的区别对于基本的数据类型来说** 是比较的值**,对于引用类型来说==比较的是内存地址equals()不能用于比较基本数据类型,只能判断两个对象是否相等类没有覆盖equals方法:通过比较两个类对象的时候,相当于使用==比较这两个对象是否相等类被覆盖过之后,使用equals()判断两个对象中的属性是否相等二、hashcode() 与equals()方法hashcode()的作用使用hashcode()来计算哈希码,比如在HashSet中原创 2021-07-08 10:33:34 · 84 阅读 · 0 评论