自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Sqoop工作流程

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。1)读取导入数据的表结构,生成运行类,默认是QueryResult,打成jar包,然后提交给Hadoop。6)RecordReader从数据库中一行行读取数据,设置好key,value,交给map。4)创建RecordReader,从数据库读取数据。...

2022-08-17 19:20:23 889

原创 解决数据倾斜

当按照 user_id 进行两个表的 Join 操作时,默认的 Hash 操作会按 int 型的 id 来进行分配,这样会导致所有 string 类型 id 的记录都分配到一个 Reducer 中。这样做的结果是同一key可能分布在不同的reduce中,第二个MR Job再通过reduce by key将相同的key聚合到一块。所幸,每日的会员 uv 不会太多,有交易的会员不会太多,有点击的会员不会太多,有佣金的会员不会太多等等。去重需要一个Reduce Task,当重复的数据太多时,就会发生数据倾斜。..

2022-08-17 19:05:28 668

原创 hive知识点

1)hive采用的schema on read(读时模式),只有在读时才会检查、解析具体的数据字段,schema;因此它load数据的时候速度非常快,不需要解析数据,只是对数据进行拷贝,移动。如果数据的处理由hive和其他工具一起处理,则创建外部表。ive创建内部表时,会将数据移动到数据仓库指向的路径,hive管理数据的生命周期;在删除表时,内部表的元数据和数据会一起被删除。外部表只删除元数据,不删除数据。创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变。4)hive不支持行级插入。...

2022-08-17 15:15:56 255

原创 Yarn工作机制

12)mrAppmaster等待所有map任务完成之后,向RM申请容器,运行ReduceTask。7)NM领取任务之后,RM会为它分配Container容器资源,并生成mrAppmaster。6)RM将这个请求转化为一个任务,放到任务队列中,等待空闲的NM拉取任务。11)RM向NM发送程序启动脚本,NM启动MapTask,对数据分区排序。10)RM将MapTask任务分配给NM,收到任务的NM会创建容器。5)该程序将资源提交完毕,向RM申请mrAppmaster。1)MR程序提交到客户端所在节点。...

2022-08-16 18:14:59 202

原创 shuffle过程

如果有combiner函数,如果有combiner函数,会在排序后的输出上运行,使得map输出的结果更紧凑。Map任务如果输出量很大,可能会进行好几次分割,这样spill文件就会分布在不同的磁盘上,这边通过扫描本地索引找到spill文件位置,然后将他们合并输出。reduce通过Http方式从map获取数据,reduce有少量复制线程,可以进行并行复制map上的数据。如果数据比较大,当达到缓存区阈值时会溢出到磁盘,最后会排序合并这些溢出文件。进入环形缓冲区,默认100M,左边是索引,右边是数据。...

2022-08-16 17:28:22 122

原创 MR工作流程

9)MRAppMaster分配在那些NM上运行map(即yarnchild进程),reduce任务。1)执行hadoop jar命令之后,生成RunJar进程,客户端向RM申请一个job。10)运行map和reduce任务的NM,向资源共享文件系统获取job相关资源。12)job任务结束后,MRAppmaster向RM注销自己,然RM回收资源。3)客户端提交相关资源(jar,xml)到共享文件系统(HDFS)2)RM向客户端发送job资源的提交路径,生成jobID。11)运行map,reduce任务。...

2022-08-15 21:39:10 766

转载 在向HDFS中写数据的时候,当写某一副本时出错怎么处理?

4)在正常工作的DN中,根据租约信息选举出一个主DataNode,与其他正常DN通信。获取每个DN当前数据块的大小,从中选择一个最小值,将每个正常的DN同步到该大小。2)将已经发送到管道中,还没有收到确认的数据包写回数据队列,这样无论那个节点发生故障,都不会发生数据丢失。3)正常工作的DN获得新的版本号(利用namenode租约中的信息可以获得最新时间戳版本),这样故障节点恢复后由于版本信息不对,故障节点恢复后会被删除。5)在管道中删除故障节点,将数据写入管道中其他正常节点。...

2022-08-15 20:20:46 490

原创 NameNode的HA实现

1)状态为active的namenode向分布式共享文件系统journalnode写入编辑日志editlog,状态为standby为了与active状态的namenode保持一致,在分布式共享文件系统中读入文件。当选举结束时,调用zkfc相应方法,切换主namenode状态,或者备namenode状态。healthmonitor负责监控namenode状态变化,当namenode状态改变时,会调用zkfc进行主备选举。NameNode机器发生意外,如宕机,集群将无法使用,知道管理员重启。...

2022-08-15 16:58:32 494

原创 Editlog与Fsimage合并过程

Fsimage是hdfs的元数据在硬盘上的checkpoint,也就是快照;2NN也会将两个文件载入内存,因此2NN需要运行在一台专门的机器上。Editlog记录对hdfs节点的操作。

2022-08-14 23:03:17 744

原创 HDFS联邦机制

HDFS集群中的Datanode提供数据块的共享存储功能,每个Datanode都会向集群中所有的Namenode注册,且周期性地向所有的Namenode发送心跳和块汇报,然后执行Namenode通过响应发回的Namenode指令。(2)由于HDFS文件的读写流程都涉及与Namenode交互,所以文件系统的吞吐量受限于单个Namenode的处理能力。(1)由于Namenode在内存中保存整个文件系统的元数据,所以Namenode内存的大小直接限制了文件系统的大小。...

2022-08-14 22:18:53 297

原创 JVM堆-JVM运行时内存

将Eden区满了的对象,添加到Survivor区,等对象反复清理几遍之后都没清理掉,再放到老年区,这样老年区的压力就会小很多。即Survivor相当于一个筛子,筛掉生命周期短的,将生命周期长的放到老年代区,减少老年代被清理的次数。首先,把Eden和ServivorFrom区域中存活的对象复制到ServicorTo区域(如果有对象的年龄以及达到了老年的标准,则赋值到老年代区),同时把这些对象的年龄+1(如果ServicorTo不够位置了就放到老年区);因为有的对象寿命长,有的对象寿命短。...

2022-07-28 20:53:44 64

原创 垃圾收集算法和垃圾收集器

由于耗时最长的并发标记和并发清除过程中,垃圾收集线程可以和用户现在一起并发工作,所以总体上来看CMS收集器的内存回收和用户线程是一起并发地执行。这样做的好处是可以控制一次回收多少个区间,根据目标停顿时间,每次合理的回收若干个小区间(而不是整个堆),从而减少一次GC产生的停顿时间。老年代每次GC只有少量垃圾被回收,新生代每次GC会有大量的垃圾被回收,因此可以根据不同的区域选择不同的算法。为了修正在并发标记期间,因用户程序继续运行而导致标记产生变动的那一部分对象的标记记录,仍然需要暂停所有的工作线程。.....

2022-07-28 20:35:05 162

原创 Java中的四种引用类型区别

当垃圾回收器准备回收一个对象时,如果发现它还有虚引,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。弱引用需要用WeakReference类来实现,它比软引用的生存期更短,对于只有弱引用的对象来说,只要垃圾回收机制一运行,不管JVM的内存空间是否足够,总会回收该对象占用的内存。弱引用可以用来替换手动清理的过程,比如当一个用户下线时,我们可能在不同的地方保存了对这个用户的信息,如果使用弱引用保存信息,当这个用户的强引用消失时,下一次GC会自动回收。强引用不会被GC回收;...

2022-07-24 21:59:35 141

原创 对象死亡,常量是废常量,类是无用类

假如在常量池中存在字符串"abc",如果当前没有任何String对象引用该字符串常量的话,就说明常量"abc"就是废弃常量,如果这时发生内存回收的话而且有必要的话,"abc"就会被系统清理出常量池。引用计数器法为对象添加一个引用计数器。每当对象在一个地方被引用,计数器加1;每当对象失效时,对象减1.但对象计数器为0时,表示该对象没有被引用。可达性分析算法通过一系列被称之为“GCRoots”的根节点开始,沿着引用链进行搜索,凡是在引用链上的对象都不会被回收。...

2022-07-24 21:39:52 113

原创 String类和常量池

当类加载到内存中后,JVM就会将class文件常量池中的内容存放到运行时常量池中,由此可知,运行时常量池也是每个类都有一个。class文件是一组以字节为单位的二进制数据流,在java代码的编译期间,我们编写的java文件就被编译为.class文件格式的二进制数据存放在磁盘中,其中就包括class文件常量池。class文件中存在常量池(非运行时常量池),其在编译阶段就已经确定,jvm规范对class文件结构有着严格的规范,必须符合此规范的class文件才能被jvm任何和装载。class文件常量池。...

2022-07-24 21:31:23 293

原创 类的加载过程与类加载器

JVM想要执行 .class文件,需要类加载器将 .class文件搬运到JVM虚拟机中。而类加载的过程包括:加载,验证,准备,解析,初始化五个阶段。

2022-07-23 21:24:59 260

原创 Java内存区域

JVM内存区域主要分为线程私有区域【程序计数器,本地方法栈,虚拟机栈】,和线程共享区域【方法区,堆】

2022-07-22 21:37:44 191

原创 Failed to get schema version. Underlying cause: Failed to create database metastore_db

bin/schematool -dbType derby -initSchema

2022-06-30 10:35:48 757 1

原创 MepReduce组成

MapReduce的组成包括JobTracker、TaskTracker、Task

2022-06-28 16:54:44 275

原创 HDFS组成

HDFS由namenode,datanode,2NN,client组成

2022-06-28 15:43:06 247

原创 HDFS读写流程

HDFS读写流程图文

2022-06-25 11:04:51 66

原创 主要排序思想

记录主要的排序思想

2022-04-01 23:35:39 58

原创 对Spring MVC的理解

用户请求都交给前端控制器前端控制器调用处理器映射器查询Handler前端控制器拿到Handler后交给处理器适配器,适配器找到对应的处理器执行;处理器会返回ModelAndView,前端控制器得到的model是数据对象,view是逻辑上的view前端控制器让视图解析器解析,找到一个实际的view前端控制器将返回Model传给View进行渲染把view返回给请求者(浏览器)...

2022-04-01 22:58:11 433

原创 QQ小世界怎么关闭

1.打开设置2.点击辅助功能3.主页底部导航栏设置

2022-04-01 10:55:45 1606

原创 zookeeper如何保证数据的一致性

有两种情况需要保证数据的一致性:新选举的leader与其他服务器进行数据同步,以及leader在处理完事务请求后与其他服务器的数据同步。一、新选举出的leader会与follower进行数据同步,当半数以上的follower完成同步之后,leader成为真正的leader。follower会用自己最大的zxid尝试与leader连接,以确定是否同步。二、leader处理完事务请求后,需要与follower完成数据同步。事务请求都由leader处理,leader接收到请求后将事务转化为事务proposa

2022-03-31 20:33:33 2613

原创 zookeeper特性及实现原理

## 标题zookeeper特性及实现原理解决的问题: 解决大量计算机中数据一致性问题,同时使得网络中数据同步的可靠性增强。 鲜明特点: zookeeper为分布式数据管理集群。在对客户端的管理中有效措施为:客户端申请的节点类型及监听机制。...

2021-09-27 15:48:01 78

原创 Java面试之集合与IO流三

集合集合不能存储基本数据类型及java对象,只能存储对象的引用集合分为两大类一、单个方式存储元素Collection超级接口二、键值对存储方式Map超级接口Collection继承Iterable可迭代的,拥有迭代器List接口有序可重复:放进去是这个顺序,出来也是这个顺序。元素有下标,可以重复。1.ArrayList底层是数组,非线程安全;初始化容量为10,每次扩容为原容量的1.5倍;建议预估一个初始化容量,减少数组扩容次数。增删改较慢,查询速度较快2.LinkedList

2021-09-24 10:14:42 194

原创 Java设计模式之工厂模式

使用工厂来生成对象,实现解耦合的目的。简单工厂设计模式定义:一个工厂方法,根据传入的参数,生成对应的对象先将产品抽象出来,生成接口,定义工厂类用来创建产品。如:将香蕉,苹果抽象为水果(fruit),再定义工厂类,创建香蕉苹果产品。class FruitFactory{public Fruit createFruit(String type){if(“apple”.equals.(type))return new apple();if(“banana”.equals.(type))ret

2021-09-19 10:18:09 117

原创 java面试之数据库

事务事务是逻辑上的一组操作数,要么都执行,要么都不执行特性:1.原子性:最小的操作单位2.一致性:执行事务前后,数据保持一致3.隔离性:并发访问数据库,事务之间互不影响4.持久性:事务被提交之后,数据库中的改变是持久的并发事务带来的问题:1.脏读:一个事务读取并修改了数据,还没有提交,另一个事务读取数据2.丢失修改:一个事务对数据的修改,被另一个事务的修改覆盖3.不可重复读:一个事务内多次读同一个数据,还未完成事务时,同一数据被另一个事务“修改”,导致数据不一致4.幻读:一个事务内.

2021-09-17 16:32:09 152

原创 java设计模式之代理模式

再访问实际对象时,加入一定的间接性(可在访问对象之前或之后加入操作)静态代理:接口,编译时代理类,被代理类已确定1.公共接口2.具体的类3.代理类,有具体类的实例动态代理:代理类在程序运行时创建动态代理实现:java.lang.reflect包下的Proxy类和InvocationHandler接口可以实现JDK动态代理类和动态代理对象。InvocationHandler中的invoke方法,所有被代理对象的方法都会被替换执行invoke方法,即在其中执行被代理对象的方法优点:对代理类的方

2021-09-16 20:47:02 53

原创 java面试之AQS四

AQS思想:共享资源空闲时,分配给当前请求线程,并锁定资源。不空闲时,请求线程加入CLH队列(FIFO,CAS修改同步状态),其能够实现线程阻塞以及唤醒功能。

2021-09-16 08:40:40 100

原创 设计模式之单例模式

方法一:public class Singleton{private Singleton(){};//instance=null,懒汉模式;instance=new Singleton,饿汉模式private volatile static Singleton instance=null;public static getInstance(){if(instance==null) //双重检测机制{ synchronized(Singleton.class){ if(instanc

2021-09-14 16:41:51 61

原创 java面试之多线程三

乐观锁与悲观锁乐观锁:用于读比较多;假设每次拿数据的时候都不会被修改,不会上锁,在更新时判断期间有没有被修改。实现方式:1.版本号机制先对数据进行读,写完提交后查看“所读版本号与最后一次更新的版本号”是否相同2.CAS算法涉及三个操作数:需要读写的值V进行比较的值A拟写入的新值B当且仅当A与V相等时,B替换V的值,否则不进行任何操作缺点:1.ABA问题,可能多次修改后回到原来的值,但其检测不出来2.循环时间长,开销大。如果不相等,则一直循环3.只能保证一个共享变量的原子操作.

2021-09-07 16:10:21 122

原创 java面试基础知识一

重载在类中,方法名相同,参数可以不同,返回值和修饰符可以不同重写在父子类之间,方法名和参数列表都相同。返回值范围小于父类,抛出异常小于父类,访问修饰符范围大于父类,父类private修饰则不能被重写可变性String类使用final关键字字符数组保存字符串,所以长度不可变StringBuffer和StringBuilder继承自AbstractStringBuilder类,没有使用final修饰的字符数组保存字符串,所以可变。线程安全String线程安全。StringBuffer加了同步锁,线程安

2021-09-06 10:49:58 67

原创 ZAB协议

ZAB协议保证了zookeeper集群内部服务器可用。ZAB协议4阶段选举阶段(选举leader)节点超过半数选票,成为准leader发现阶段(接受提议,生成epoch,接受epoch)follow与准leader通信,同步最近接受事物提议。将接受的最大epoch+1,使follow接受,更新他们的epoch同步阶段(同步follow副本)将之前接受的最近接收事物提议,同步所有副本给follow,多数同步完成,准leader成为真正的leader广播阶段(leader消息广播)在广播阶段

2021-06-23 17:34:01 163 2

原创 ZK的fastleaderlection算法(leader选举)

两种发生情况:启动时选举或运行时选举每个节点初始化自己的选票(myid,zxid,当前节点选举轮次,被推举服务器选举轮次,状态)myid自己确定,每个节点不同。zxid事务编号。选举轮次epoch发送初始化选票接受外部选票判断选举轮次(大于外部转3,小于等于),进行PK比较zxid,相同比myid变更投票,重新发送归档。每个节点会将收到的所有外部选票进行归档统计。判断是否有过半节点认可当前的内部投票,如果有则终止...

2021-06-23 16:50:44 89

原创 简述paxos

简述paxos解决分布式系统如何就(决议)某个值达成一致的算法。场景:在一个分布式数据库系统中,如果各节点初始状态一致,执行相同的操作序列,那么他们最终能得到一个一致的状态。为保证每个节点执行相同的操作序列,需要对各个指令执行一个“一致性”算法,以确保每个节点看到的指令一致。zookeeper的zab协议是该算法的一个实现。成员:Proposer向Acceptor提出提案,其中有一个主proposer。半数以上Acceptor接受,Proposer就认为value值确定Accep...

2021-06-23 16:20:17 66

空空如也

空空如也

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

TA关注的人

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