自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(231)
  • 收藏
  • 关注

原创 java面试题:讲一讲synchronized

文章目录1. synchronized用法2. synchronized重量级锁原理3. synchronized锁升级过程4. 可重入锁1. synchronized用法可修饰静态方法可修饰实例方法可修饰代码块2. synchronized重量级锁原理synchronized对应的锁信息存储在对象头,对象头中会保存锁标志,线程ID等信息。 锁标志则标识当前是偏向锁,轻量级锁还是重量级锁。先讲重量级锁:synchronized的重量级锁在字节码的层次表现为两条指令,分别是monit

2021-06-03 22:58:14 453

原创 java面试题:讲一讲进程,线程,协程

本文仅仅是梳理面试遇到这个题目的答题过程梳理文章目录1. 进程和线程的区别2. 进程切换和线程切换的区别3. 协程和线程的区别1. 进程和线程的区别1)进程是资源分配的基本单位,线程是任务调度的基本单位。2)从包含关系来看,一个进程中可以包含多个线程。3)从内存分配来看,一个进程拥有自己一套独立地址空间和内存,不同进程之间的资源独立。而一个进程中的多个线程共享虚拟地址空间和部分资源。4)从健壮性来看,一般不同进程之间的影响较小,而线程之间的影响较大,某个线程挂掉可能会导致该进程或线程挂掉,因此进

2021-06-03 22:01:03 610

原创 经典SQL五十题

表结构学生表:student教师表:teacher课程表:成绩表:题目1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数解:SELECT s.s_id, s.s_name, b.cid1, b.score1, b.cid2, b.score2FROM student sJOIN(SELECT a.s_id as id, a.c_id as cid1, a.score as score1, b.c_id as cid2, b.score as score2FRO

2021-06-02 00:00:28 739

原创 java面试题:讲一讲hashMap

这个面试题已经被问了无数次了,所以总结一下应该回答的流程:1. 介绍HashMap总体结构1)HashMap底层使用数组+链表+红黑树实现,是线程不安全的。2)默认负载因子为0.75,默认初始大小为16。这里既然讲到了默认初始大小为16,那么可以提一下HashMap的容量都是2的n次方,原因是有利于后续计算桶index的均匀分布。2. 介绍HashMap的存取过程1)存的过程:计算key的hashcode值,将hashcode高16位与低16位进行异或操作获得hash值。将hash

2021-06-01 22:46:13 430

原创 HashMap扩容机制(1.7和1.8的区别)

1. HashMap触发扩容条件hashMap默认的负载因子是0.75,即如果hashmap中的元素个数超过了总容量75%,则会触发扩容如果某个桶中的链表长度大于等于8了,则会判断当前的hashmap的容量是否大于64,如果小于64,则会进行扩容;如果大于64,则将链表转为红黑树。2. HashMap求桶的位置HashMap求桶的位置一共分为三个过程:1)求key的hashcode2)将hashcode的高16位和低16位进行异或操作。至此我们完成了hash方法,求得了该元素的hash值。

2021-06-01 22:10:52 3429

转载 永久代和元空间的区别及存储的是什么?

文章目录1. 永久代和元空间的存储2. 永久代和元空间的区别3. 永久代和元空间和方法区的关系4. 为什么要废除永久代5. 使用元空间的优势1. 永久代和元空间的存储永久代和元空间的作用都是存储类的元数据,用来存储class相关信息,包括class对象的Method,Field等。当然了,我这里仅仅是简单介绍,说的肯定不完整,具体存储了什么还是需要查阅资料。2. 永久代和元空间的区别永久代和元空间的区别本质只有一个,那就是永久代使用的是jvm内存存储,而元空间使用的是本地内存存储。元空间与永久代

2021-06-01 20:49:05 5910 1

原创 JDK7和JDK8的区别

面试总是遇到这个问题,做一个小总结,可能总结的不全1. 接口中的default方法一般来说接口中的方法都是不实现的,基本通过实现类来实现方法。但是jdk8中提供了一种被default修饰的方法,可以直接在接口中进行实现。2. lambda表达式jdk8引入了lambda表达式,也可称为closure(闭包),通常是在需要一个函数,但又不想费神去命名一个函数的场合下使用,也就是指匿名函数。lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。由于其几乎被所有主流开发语言支持。是ja

2021-06-01 19:57:01 5512 1

转载 简要描述如何安装配置一个apache开源版hadoop,描述即可,列出步骤更好

解压hadoop包,到指定安装文件夹。配置linux基本网络环境、jdk环境、防火墙环境。修改主机名,方便后面UI的访问。修改hadoop/etc/hadoop/conf下的配置文件,根据部署的模式和需要进行配置(如hadoop-env.sh,core-site.xml , mapred-site.xml , hdfs-site.xml,slaves等)。配置hadoop环境变量(如HADOOP_HOME,HADOOP_CONF_DIR,HADOOP_USER_NAME)格式化 hadoop na

2021-05-31 20:54:48 1218

转载 海量日志数据提取出某日访问百度次数最多的IP,怎么做?

2021-05-31 20:44:47 144

转载 请你谈谈Hive优化

Hive优化1.1 join操作进行优化join优化是个复杂的问题,可以从以下几点进行优化1)小表前置大小表在join的时候,应该将小表放在前面,Hive在解析带join的SQL语句时,会默认将最后一个表作为大表,将前面的表作为小表并试图将它们读进内存。如果表顺序写反,大表在前面,可能会引发OOM。2)key值相同多表join的时候尽量使用相同的key来关联,这样会将会将多个join合并为一个MR job来处理。3)利用map side joinmap join特别适合大小表join的情况。

2021-05-31 20:41:06 928

原创 Flink 如何处理乱序数据(watermark + allowLateNess + sideOutPut )

问题背景flink是分布式的流数据处理框架,针对流数据的处理特点,往往是来一条处理一条,但是这种处理方式就比较低效,因此就提出了窗口的概念。在实际的应用过程中,往往需要对过去的一分钟(几分钟)发生的数据做一个聚合处理。窗口的作用为了周期性的获取数据。就是把传入的原始数据流切分成多个buckets,所有计算都在单一的buckets中进行。窗口(window)就是从 Streaming 到 Batch 的一个桥梁。但是聚合类处理带来了新的问题,比如乱序/延迟。即数据并不是按照标准顺序到达的,可能有数据会延

2021-05-31 14:25:58 823

转载 Flink 相比传统的 Spark Streaming 有什么区别

主要区别这个问题是一个非常宏观的问题,因为两个框架的不同点非常之多。但是在面试时有非 常重要的一点一定要回答出来:Flink 是标准的实时处理引擎,基于事件驱动。而 Spark Streaming 是微批( Micro-Batch )的模型。下面我们就分几个方面介绍两个框架的主要区别:架构模型:Spark Streaming 在运行时的主要角色包括:Master、Worker、Driver、Executor, Flink 在运行时主要包:Jobmanager、Taskmanager 和 Slot。

2021-05-29 15:18:35 440

转载 Kafka 分区和副本的关系(分区策略+leader选举)

文章目录1. kafka分区机制1.1 分区是什么1.2 分区个数的选择1.3分区写入策略1.3.1 轮训策略1.3.2 随机策略1.3.3 按键保存策略2.kafka副本机制2.1 副本的作用2.2副本为什么不对外提供服务2.3 leader挂掉后,如何选举leader?2.4 ISR副本集合保存的副本的条件是什么?1. kafka分区机制1.1 分区是什么首先从整体上来说,一个Kafka集群有多个机器(一个机器就是一个Broker),创建一个Topic是针对集群创建的,也就是说一个集群共享一个To

2021-05-28 22:23:04 2057

原创 Flink 集群的角色及其作用

Flink 集群的角色及其作用flink集群一共有三个角色:TaskManager,JobManager,Client1.JobManager 扮演着集群中的管理者 Master 的角色,它是整个集群的协调者,主要作用有如下几点:负责接收 Flink Job,调度job协调checkpointFailover 故障恢复管理 Flink 集群中从节点 TaskManager,与TaskManager通信2.TaskManager 是实际负责执行计算的 Worker,在其上执行 Flink J

2021-05-28 10:28:46 856

原创 Hadoop combine和parition的作用

combiner的作用combiner是reduce的实现,在map端运行计算任务,减少map端的输出数据。作用就是优化。但是combiner的使用场景是mapreduce的map输出结果和reduce输入输出一样。也就是说如果map端的输出结果就如图所示,使用了combiner,在mapper端也会对键值对进行一次reduce。然后再发送给reducer。但是实际上要注意的是,combiner的完成阶段是在mapper端的排序阶段之后的。如果不用combiner,那么,所有的结果都是redu

2021-05-28 10:04:37 341

转载 MapReduce中排序发生在哪几个阶段?这些排序是否可以避免?为什么?

要想理解MapReduce过程中哪些阶段有的排序,就必须要明白MapReduce的过程。这篇博客很详细的讲解了MapReduce的过程:MapReduce过程详解下面我再简述一下mapreduce的过程MapReduce过程概述MapReduce一共可分为三个阶段:map,shuffle,reduce过程map阶段主要就是进行值到键值对的映射。shuffle过程对map的输出数据进行重新洗牌分区排序分发给相应的reduce。reduce则接收数据进行相应聚合操作。这里要提到的是,实际上MapRe

2021-05-27 18:54:10 2480

转载 Hive 四种文件存储格式

文章目录textFilesequencefileRcfileORCfile总结Hive的文件存储格式:textFile默认格式1)存储方式:行存储2)缺点:磁盘开销大;数据解析开销大;压缩的text文件,hive无法进行合并和拆分存储空间消耗比较大,并且压缩的text 无法分割和合并 查询的效率最低,可以直接存储,加载数据的速度最高sequencefile1)二进制文件,以键值对<key,value>的形式序列化到文件中2)存储方式:行存储3)优点:可分割、压缩,一般选择bl

2021-05-27 17:17:34 1050

原创 行列存储的区别和优缺点

行存储和列存储由上图可以看到,在列存储中,某一个字段的所有值都是连在一起的。在行存储中,每一行的所有字段的值是连在一起的。因此行列存储的优势就很容易区分出来了:行存储的优点:行记录的更新和插入比较方便,写入效率高行存储的缺点:数据读取有冗余,如果只查某几个字段,需要进行大量的数据筛除列存储的优点:读取数据没有冗余,适合定长度的大数据计算列存储的缺点:缺乏数据完整性保证,读取数据没有冗余针对某几个字段的读取效率较高...

2021-05-27 16:40:50 3512

转载 flink 实现端到端的exactly-once语义

文章目录1. 三种语义介绍2. Exactly-Once实现的三个地方3. 具体实现过程3.1 source阶段3.2 operator阶段3.3 sink阶段4. 两段式提交的具体实现1. 三种语义介绍通常情况下,流式计算系统都会为用户提供数据处理的可靠模式功能,用来表明在实际生产运行中会对数据处理做哪些保障。一般来说,流处理引擎通常为用户的应用程序提供三种数据处理语义:最多一次,至少一次和精确一次。最多一次(At-most-Once):这种语义理解起来很简单,用户的数据只会被处理一次,不管成功还

2021-05-26 17:22:07 617

转载 Hive 数据倾斜问题及解决方案

1.什么是数据倾斜数据倾斜就是由于数据的分布不平衡,某些地方特别多,某些地方又特别少,导致的在处理数据的时候,有些很快就处理完了,而有些又迟迟未能处理完,导致整体任务最终迟迟无法完成,这种现象就是数据倾斜。针对mapreduce的过程来说就是,有多个reduce,其中有一个或者若干个reduce要处理的数据量特别大,而其他的reduce处理的数据量则比较小,那么这些数据量小的reduce很快就可以完成,而数据量大的则需要很多时间,导致整个任务一直在等它而迟迟无法完成。跑mapreduce任务时常见的r

2021-05-25 21:16:44 735

转载 hadoop的进程名称(守护进程)

1.namenode:管理集群,并记录datanode文件信息。2.Secondname:协助namenode进行合并日志3.Datanode:存储数据。4.Jobtracker:管理任务,并将任务分配给tasktracker。5.Tasktracker:任务执行者

2021-05-24 21:24:50 1168

转载 Hive 分桶和分区的区别及应用场景

1. 表分区1.1 概念分区是指按照数据表的某列或某些列分为多个区,从形式上可以理解为文件夹,即针对每个分区都会有一个文件夹存储对应该分区的数据。1.2 使用场景比如我们要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源非常多。那其实这个情况下,我们可以按照日期对数据表进行分区,不同日期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区查找。即可以加快某些查询效率。2. 表分桶2

2021-05-24 18:36:47 1877

原创 Flink的三种状态后端存储方式

文章目录1. MemoryStateBackend1.1 概念1.2 特点及使用场景2. FsStateBackend2.1 概念2.2 特点及应用场景3. RocksDBStateBackend3.1 概念3.2 特点及应用场景在Flink中提供了StateBackend(状态后端)来存储和管理Checkpoint过程中的状态数据。StateBackend分为三种。1. MemoryStateBackend1.1 概念1.2 特点及使用场景MemoryStateBackend存储有如下特点:

2021-05-24 17:58:46 3487

原创 Hive map-side join和reduce-side join

Hive多表Join的过程(reduce-side join)HiveSQL底层要转为MapReduce任务执行,那么当进行多表连接的时候,是如何进行表join的呢?这里搬运这篇博客的例子:https://blog.csdn.net/qiulinsama/article/details/90299426现在有两个表:page_view和user表这两张表都有一个相同的字段userid,根据这个字段可以将两张表连接起来,pv_users表,SQL命令是:SELECT pv.pageid, u.

2021-05-24 17:21:17 309

转载 Flink Checkpoint和Savepoints

Checkpoint的概念和作用概念:Checkpoint是Flink实现容错机制最核心的功能,它能够根据配置周期性地基于Stream中各个Operator的状态来生成Snapshot(数据快照),从而将这些状态数据定期持久化存储下来,作用:当Flink程序一旦意外崩溃时,重新运行程序时可以有选择地从这些Snapshot进行恢复,从而修正因为故障带来的程序数据状态中断。总的来说,就是在流数据处理的过程中,定期的去保存某个阶段的数据(称为数据快照),当后续阶段的程序意外崩溃时,可以从之前保存的数据快

2021-05-23 15:58:25 197

原创 hive存储元数据的方式及其特点

hive存储元数据的两种方式hive默认使用derby内存数据库存储元数据。hive可以通过配置设置mysql存储元数据两种方式的特点derby存储:元数据存储在内存中,不稳定无法并发使用hiveMysql存储:数据存储模式可以自己设置持久化好查看方便...

2021-05-23 11:10:13 788

原创 hadoop的调度器及其工作原理

调度器(scheduler)是Yarn中ResourceManager中的可插拔的资源调度器。所以它只管给任务分配资源,不管其他的事情。①先进先出调度器(FIFO Scheduler)Hadoop中默认的调度器,按照到达时间的先后选择被执行的任务。先进先出,同一时间队列中只有一个任务在执行。②容量调度器(Capacity Scheduler)Hadoop2.x之后默认的调度器是Capacity Scheduler容量调度器,多队列的方式。以队列为单位划分资源,每个队列可设定一定比例的资源

2021-05-23 10:58:42 1529

转载 Hadoop中MapReduce的执行过程及shuffle过程

文章目录1. MapReduce简介2. MapReduce的执行过程2.1 Map过程2.2 Shuffle过程2.3 Reduce过程1. MapReduce简介MapReduce是一种分布式计算模型,是Google提出的,主要用于搜索领域,解决海量数据的计算问题。MR有两个阶段组成:Map和Reduce,用户只需实现map()和reduce()两个函数,即可实现分布式计算。2. MapReduce的执行过程总的来说MapReduce的过程可以划分为三个部分:1)Map: 数据映射。首先

2021-05-22 18:39:36 1903

转载 Flink三种时间语义及应用场景

Flink三种时间语义(1)Event Time:事件发生的时间。(2)Processing Time:事件处理的事件,没有事件时间的情况下,或者对实时性要求超高的情况下。(3)Ingestion Time:事件进入Flink的时间,存在多个 Source Operator 的情况下,每个 Source Operator可以使用自己本地系统时钟指派 Ingestion Time。后续基于时间相关的各种操作,都会使用数据记录中的 Ingestion Time。Event Time事件发生的时间,这是

2021-05-22 11:52:35 3010

原创 Hive中的索引

Hive是否支持索引Hive表中是可以对某些字段添加索引来加速某些操作Hive索引机制和原理Hive表的索引数据是存储在另一张表中的,在表里面存储索引列的值,该值对应的HDFS的文件路径,该值在数据文件中的偏移量。当Hive通过索引列执行查询时,首先通过一个MR Job去查询索引表,根据索引列的过滤条件,查询出该索引列值对应的HDFS文件目录及偏移量,并且把这些数据输出到HDFS的一个文件中,然后再根据这个文件中去筛选原文件,作为查询Job的输入。Hive索引的使用场景当数据文件的逻辑分区太多太

2021-05-22 10:49:45 851

转载 Hive中orderBy,sortBy,distribute by,cluster by,group by

首先我们要明白Hive的本质是将HiveSQL转成MapReduce来执行分布式计算的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在Hadoop环境下很难对数据进行全局排序,如果在Hadoop上进行order by全排序,会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败。因此OrderBy会导致全局排序。解决方案就是放弃全局排序,使用

2021-05-22 10:14:10 1598

转载 SQL的执行顺序

执行顺序首先要明白的就是,在我们日常写sql的过程中,往往select是从一行开始写的,但是实际上却往往是很后面才会执行的。所以sql的书写顺序并不代表执行顺序。下面列了一般的执行顺序:fromjoinonwheregroup byavg, sum等聚合函数havingselectdistinctorder bylimit以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应 用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者

2021-05-21 21:59:52 2585

转载 Hadoop yarn架构及任务调度过程

1. yarn概述Apache Hadoop YARN 是开源 Hadoop 分布式处理框架中的资源管理和作业调度技术。作为 Apache Hadoop 的核心组件之一,YARN 负责将系统资源分配给在 Hadoop 集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。总的来说就是Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管理器系统,负责管理集群资源的分配和作业的调度。2. yarn架构总体上来说,yarn是一个主从

2021-05-21 19:00:59 616

转载 宽表和窄表的区别

2021-05-21 17:28:42 714

转载 Flink作业转换-ExecutionGraph(四层执行图)

概述Flink 中的执行图可以分成四层:StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图。StreamGraph:即根据用户编写的Stream API而生成的最初的作业拓扑图,表示程序的拓扑结构。JobGraph:StreamGraph会经过作业链优化生成JobGraph,提交给 JobManager 的数据结构。主要的优化为,将并行度相同且流传输模式为one-to-one的节点 chain 在一起作为一个节点,这样可以减少数据在

2021-05-21 12:35:17 1282

原创 Flink solt和并行执行过程

看这一篇的之前需要了解一下Task和subTask的概念和划分:https://blog.csdn.net/weixin_44844089/article/details/1170350391. slotFlink 中每一个TaskManager都是一个 JVM 进程,JVM允许它可能会在独立的线程上执行一个或多个 subtask(一个task由多个subtask组成)。为了控制一个 worker 能接收多少个 task,worker 通过 task slot 来进行控制(一个 worker 至少有一

2021-05-21 11:32:11 172

原创 Hive的概念,作用,优缺点

1.Hive概念概述:基于Hadoop的开源的数据仓库工具,用于处理海量结构化数据。Hive把HDFS中结构化的数据映射成表。Hive通过把HiveSQL进行解析和转换,最终生成一系列在hadoop上运行的mapreduce任务,通过执行这些任务完成数据分析与处理。2.hive的优点:操作接口采用类似SQL的语法,上手容易hive对MapReduce进行了包装,开发人员不需要写MapReduce,减少了学习成本hive的优势在于处理大数据,针对小数据处理的优势不大3. hive的缺点

2021-05-21 11:15:02 4379

原创 Hive内部表和外部表的区别

其实主要就是两个区别:1)表数据存储位置不同:内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里);注:内部表和外部表的表数据存储位置不同,但是真实数据都是存储在HDFS上的2)删除表的影响不同:删除内部表则会将真实文件数据一起删除。而

2021-05-20 11:17:45 665

转载 操作系统面试题:单核cpu同一时刻能处理多少个进程

先给结论:单核CPU在同一时间只能处理一个进程多核CPU可以同时执行多个进程,进程个数不高于核数首先应该明白两个概念:并发和并行并发:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU

2021-05-19 20:20:28 11573

原创 常见SQL题

1.在a表不在b表有2张表s1和s2,每张表都只有一列(列名:id),现在想抽取仅存在于t1的id思路:使用左连接,左边会全部显示,而右边关联不上的则会为空,以此来判断仅在s1表中存在。注意:1)使用左连接的时候,当右边没有匹配值的时候会自动赋NULL2)在判断是否为NULL的时候用IS,而不是用=3)这里模拟的是表中不止有一列,所以需要用临时表。如果只有一列就没必要用临时表。所以在写的过程中尽量少的使用临时表。答:SELECT s1.idFROM( SELECT id FROM sc

2021-05-19 17:36:36 384

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除