
源码解析
文章平均质量分 88
RunningShare
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Yarn RM写ZNode超数据量限制bug修复
Yarn RM写ZNode超数据量限制bug修复问题背景线上集群出现过几次 Yarn RM 写 ZK ZNode 的数据量超过 ZNode 限制,导致 RM 服务均进入 Standby 状态,用户无法正常提交任务,整个集群 hang 住,后续排查发现主要是异常任务写 ZNode 数据量太大,超过 ZNode 限制,导致集群其他提交作业的状态信息无法正常写入 ZNode,为避免类似问题再次出现,我们对 RM 写 ZNode 逻辑进行了优化,规避异常任务对整个集群造成的雪崩效应。一、问题复现最直转载 2021-08-30 11:47:00 · 820 阅读 · 0 评论 -
livy(0.5) on zeppelin(0.8)报No YARN application is found with tag问题解决
文章目录环境信息代码报错livy日志报No YARN application is found with tag排查尝试远程调试远程调试步骤远程调试结果尝试修改超时参数转换思路:发现不在同一个机房的网络总结环境信息livy(0.5) on zeppelin(0.8)代码%livysc.range(1,10).sum()报错livy日志报No YARN application is found with tag21/05/13 15:34:41 INFO RSCClient: Failin原创 2021-05-17 09:57:43 · 1322 阅读 · 0 评论 -
HBase Scan流程分析
HBase Scan流程分析HBase的读流程目前看来比较复杂,主要由于:HBase的表数据分为多个层次,HRegion->HStore->[HFile,HFile,...,MemStore] RegionServer的LSM-Like存储引擎,不断flush产生新的HFile,同时产生新的MemStore用于后续数据写入,并且为了防止由于HFile过多而导致Scan时需要扫描的文件过多而导致的性能下降,后台线程会适时的进行Compaction,Compaction的过程会产生新的HF转载 2020-07-30 13:58:18 · 574 阅读 · 0 评论 -
HDFS读写流程
一 HDFS 客户端读文件流程1打开HDFS文件: HDFS客户端首先调用DistributedFileSystem.open方法打开HDFS文件,底层会调用ClientProtocal.open方法,返回一个用于读取的HdfsDataInputStream对象2从NameNode获取DataNode地址:在构造DFSInputStream的时候,对调用ClientPortocal.getBlockLocations方法向NameNode获取该文件起始位置数据块信息。NameNode返回的数转载 2020-07-24 11:19:47 · 266 阅读 · 0 评论 -
InheritableThreadLocal详解
1、简介在上一篇 ThreadLocal详解 中,我们详细介绍了ThreadLocal原理及设计,从源码层面上分析了ThreadLocal。但由于ThreadLocal设计之初就是为了绑定当前线程,如果希望当前线程的ThreadLocal能够被子线程使用,实现方式就会相当困难(需要用户自己在代码中传递)。在此背景下,InheritableThreadLocal应运而生。Inheritable thread-local variables are used in preference to ordi转载 2020-06-05 17:02:19 · 449 阅读 · 0 评论 -
深度剖析JDK动态代理机制
摘要相比于静态代理,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象。代理模式使用代理模式必须要让代理类和目标类实现相同的接口,客户端通过代理类来调用目标方法,代理类会将所有的方法调用分派到目标对象上反射执行,还可以在分派过程中添加"前置通知"和后置处理(如在调用目标方法前校验权限,在调用完目标方法后打印日志等)等...转载 2019-11-08 15:59:40 · 266 阅读 · 0 评论 -
JVM:字节码生成技术与动态代理的实现。
“字节码生成”并不是什么高深的技术,读者在看到“字节码生成”这个标题时也先不必去想诸如Javassist、CGLib、ASM值类的字节码类库,因为JDK里面的javac命令就是字节码生成技术的“老祖宗”,并且javac也是一个由Java语言写成的程序,他的代码存放在OpenJDK的langtools/src/share/classes/com/sun/tools/javac目录中。要深入了解...转载 2019-11-08 10:11:27 · 256 阅读 · 0 评论 -
深入学习理解(1):java:ExecutorService invokeAll 任务的批量提交invokeAll两种方法的区别
ExecutorService的invokeAll方法有两种用法:1.exec.invokeAll(tasks)2.exec.invokeAll(tasks, timeout, unit)其中tasks是任务集合,timeout是超时时间,unit是时间单位两者都会堵塞,必须等待所有的任务执行完成后统一返回,一方面内存持有的时间长;另一方面响应性也有一定的影响,毕竟大家都喜欢...转载 2019-11-07 20:20:49 · 422 阅读 · 0 评论 -
Spring Series---@Scheduled使用深度理解
功能定位一种实现进程内定时任务的方法。几种实现方式类比如下:1) Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。 最早的时候就是这样写定时任务的。2)用java.util.concurrent.ScheduledExecutorService 来实现定时任务,精确的并发语义控制,推荐3) 开源的第三方框架: ...转载 2019-11-07 20:09:06 · 308 阅读 · 0 评论 -
spring boot之@Scheduled原理
前言当一个方法被加上@Schedule注解,然后做一些相关配置,在Spring容器启动之后,这个方法就会按照@Schedule注解的配置周期性或者延迟执行。Spring是如何办到这个的,本文就讲解一下这块的原理。源码分析扫描Task熟悉Spring的人都知道BeanPostProcessor这个回调接口,Spring框架扫描所有被@Scheduled注解的方法就是通过实现这个回调接...转载 2019-11-07 19:04:58 · 968 阅读 · 0 评论 -
开发踩坑记录之二:谨慎使用Spring中的@Scheduled注解
引言在一些业务场景中需要执行定时操作来完成一些周期性的任务,比如每隔一周删除一周前的某些历史数据以及定时进行某项检测任务等等。在日常开发中比较简单的实现方式就是使用Spring的@Scheduled(具体使用方法不再赘述)注解。但是在修改服务器时间时会导致定时任务不执行情况的发生,解决的办法是当修改服务器时间后,将服务进行重启就可以避免此现象的发生。本文将主要探讨服务器时间修改导致@Sch...转载 2019-11-07 18:20:06 · 1504 阅读 · 0 评论 -
Java反射完全解析
对于Java反射,平常工作中虽然经常用到,但一直以来都没有系统总结过,所以趁着目前有空总结一下,加深一下理解。如果发现谬误,欢迎各位批评指正。本文相关知识点大部分总结自Oracle官方文档,对于英文比较好的朋友,建议直接阅读原文档。按例,首先描述定义一下。Reflection enables Java code to discover information about t...转载 2019-11-07 17:12:24 · 528 阅读 · 0 评论 -
大白话说Java反射:入门、使用、原理
目录一个简单的例子 反射常用API 获取反射中的Class对象 通过反射创建类对象 通过反射获取类属性、方法、构造器 反射源码解析文章首发于【博客园-陈树义】,点击跳转到原文《大白话说Java反射:入门、进阶、原理》反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接...转载 2019-11-07 16:47:52 · 145 阅读 · 0 评论 -
Quartz集群原理及配置应用
1、Quartz任务调度的基本实现原理 Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现。作为一个优秀的开源调度框架,Quartz具有以下特点: (1)强大的调度功能,例如支持丰富多样的调度方法,可以满足各种常规及特殊需求; (2)灵活的应用方式,例如支持任务和调度的多种组合方式,支持调度数据的多种存储方式; (3...转载 2019-11-06 11:21:52 · 2893 阅读 · 0 评论 -
Java并发编程:Timer和TimerTask(转载)
下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: 1 2 3 4 5 6 Tim...转载 2019-11-01 17:37:16 · 144 阅读 · 0 评论 -
Hadoop源码分析之NodeManager初始化、启动、注册
目录OverviewInitiateNodeHealthCheckerService init and StartupLocalDirsHandlerService init and startupNodeHealthScriptRunner init and startupNodeStatusUpdater Init and startupContainerMa...转载 2019-05-06 09:34:17 · 1181 阅读 · 0 评论 -
Hive2.1源码分析(一)启动脚本
最近在网上看到的相关材料都比较陈旧,也太简略,参看了一下其他人的内容,针对Hive2.1.1做点分享:1)下载apache-hive-2.1.1-bin.tar.gz2)解压缩,下面的命令行如启动报错,请自行查略Hive启动配置3)启动hiveserver2(非必须,使用jdbc访问的时候才使用)bin目录下hive --service hiveserver2 -p10...转载 2019-05-09 14:16:37 · 565 阅读 · 0 评论 -
hadoop2.7.3源码解析之datanode注册和心跳机制
datanode注册和心跳datanode注册datanode心跳namenode接收注册和心跳信息DatanodeManager简单介绍namednoe接收注册的信息namenode 接收心跳信息datanode注册和心跳在hadoop启动的时候,正常的流程是先启动namenoe,然后启动datanode,因为namenode要接受datanode的注册,datanode的注册...转载 2019-05-15 17:06:33 · 316 阅读 · 0 评论 -
Hadoop2源码分析-YARN 的服务库和事件库(Service 和 Event)
Hadoop2源码分析-YARN 的服务库和事件库1.概述 在《Hadoop2源码分析-YARN RPC 示例介绍》一文当中,给大家介绍了YARN 的 RPC 机制,以及相关代码的演示,今天我们继续去学习 YARN 的服务库和事件库,分享目录如下所示:服务库和事件库介绍 使用示例 截图预览 下面开始今天的内容分享。2.服务库和事件库介绍2.1服务库 YARN对于...转载 2019-05-17 10:28:13 · 387 阅读 · 0 评论 -
源码解析-Yarn-ResourceManager07-ShutdownHookManager
0x00 系列文章目录源码走读-Yarn-ResourceManager01-基础概念 源码走读-Yarn-ResourceManager02-RM的启动-脚本 源码走读-Yarn-ResourceManager03-RM的启动之RM详解 源码走读-Yarn-ResourceManager04-RM调度之FairScheduler 源码走读-Yarn-ResourceManage...转载 2019-05-17 10:56:24 · 524 阅读 · 0 评论 -
JVM源码分析之Jstat工具原理完全解读
概述jstat是hotspot自带的工具,和java一样也位于JAVA_HOME/bin下面,我们通过该工具可以实时了解当前进程的gc,compiler,class,memory等相关的情况,具体我们可以通过jstat -options来看我们到底支持哪些类型的数据,譬如JDK8下的结果是:-class-compiler-gc-gccapacity-gccause-gcmeta...转载 2019-06-07 18:23:31 · 555 阅读 · 0 评论 -
Hadoop NameNode 高可用 (High Availability) 实现解析
NameNode 高可用整体架构概述在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode 的单点问题尤为严重。因为 NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问,同时 Hadoop 生态系统中依赖于 HDFS ...转载 2019-07-22 14:25:19 · 167 阅读 · 0 评论 -
大数据基础之Hadoop(1)HA实现原理
有些工作只能在一台server上进行,比如master,这时HA(High Availability)首先要求部署多个server,其次要求多个server自动选举出一个active状态server,其他server处于standby状态,只有active状态的server允许进行特定的操作;当active状态的server由于各种原因无法服务之后(比如挂了或者断网),其他standby状态的se...转载 2019-07-22 14:35:24 · 436 阅读 · 0 评论 -
Yarn ResourceManager High Availability
在 Hadoop 生态中(Hadoop2.x及以后版本), JobTracker 和 TaskTracker 演变为 Yarn 作为 Hadoop 的资源管理器。 同时, MapReduce、Spark、Flink、等计算框架也支持 Yarn 来调度, 因此, Yarn 高可用极为重要。 关于 Yarn 相关内容, 详情查看Apache Hadoop YARN Architecture, 这...转载 2019-08-10 23:18:15 · 596 阅读 · 0 评论 -
Hadoop MapReduce执行过程详解(带hadoop例子)
问题导读1.MapReduce是如何执行任务的?2.Mapper任务是怎样的一个过程?3.Reduce是如何执行任务的?4.键值对是如何编号的?5.实例,如何计算没见最高气温?分析MapReduce执行过程 MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出。Reducer任务会接收Mapper任务输...转载 2019-09-06 14:09:31 · 1305 阅读 · 0 评论 -
hadoop心跳机制解析
心跳的机制大概是这样的:1) master启动的时候,会开一个ipc server在那里。2) slave启动时,会连接master,并每隔3秒钟主动向master发送一个“心跳”,将自己的状态信息告诉master,然后master也是通过这个心跳的返回值,向slave节点传达指令。2、找到心跳的代码拿namenode和datanode来说,在datanode的offerServ...转载 2019-05-10 17:23:21 · 696 阅读 · 0 评论