- 博客(18)
- 收藏
- 关注
原创 03 - Flink客户端源码CliFrontend
介绍通过"bin/flink run"提交jar包到Flink集群,在"bin/flink"脚本中实际是调用org.apache.flink.client.cli.CliFrontend#main触发真正的执行。源码(1)org.apache.flink.client.cli.CliFrontend#main源码org.apache.flink.client.cli.CliFrontend#main的源码如下:public static void main(final String[] args)
2022-03-14 23:43:56
2424
原创 02 - Flink启动
1. 背景在[01 - Flink源码编译] 文章中介绍了Flink源码如何编译,这篇文章主要介绍源码编译后的启动验证。2. 说明(1)Flink编译后的可执行jar包在flink-dist目录下,具体如下:查看目录内容:a. bin目录:Flink的执行命令所在目录c. conf目录:Flink配置文件所在的目录,主要有flink-conf.yaml(指定Flink配置)、masters(指定JobManager地址)、works(指定TaskManager地址)。c. lib:Flin
2022-03-13 20:07:08
7548
原创 01 - Flink源码编译
本文以目前最新的Flink release分支release-1.14讲解源码的编译。1. 环境准备源码编译前需要事先准备3个工具: git,maven,JDK。可以通过以下指令可以查看是否安装成功:(1)查看git安装git --version如果显示git信息则说明git安装成功:(2)查看maven安装mvn --versionps:maven版本需要3.0以上(3)查看jdk安装java -versionps:JDK需要1.8或者1.8以上2. 下载Flink源
2022-03-13 18:51:02
3013
原创 MapReduce运行在HBase上异常Unable to find org.apache.hadoop.hbase.ipc.controller.ClientRpcControllerFactory
MapReduce在HBase运行时出现以下错误信息:org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.lang.UnsupportedOperationException: Unable to find org.apache.hadoop.hbase.ipc.controller.ClientRpcControllerFa...
2019-11-16 22:35:06
641
原创 StringUtils类的使用
JAVA开发中遇到“Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils”异常,是因为在项目中没有响应的包。在Maven中添加这个依赖就可以了:<dependency> <groupId>commons-lang</groupId> &l...
2019-11-14 20:21:16
198
原创 JAVA中对象的创建过程
第一步虚拟机遇到一条new指令时,会先判断这个指令的参数是否能在常量池中找到这个类的符号引用,并且会判断这个类是否被加载。如果没有被加载的话,则执行类加载过程(可以参考上一篇类加载文章)。第二步为对象分配内存,主要分为两种:指针碰撞或者空闲链表。指针碰撞要求内存绝对规整,分配内存时只要把指针往空闲端挪动一段与要分配对象大小相等的距离就可以了。空闲链表不要求内存是否规整,它维护了一张列表,记录...
2019-11-03 16:59:53
170
原创 JVM中的类加载机制
JAVA类加载主要分为5个过程,分别是:加载 、验证 、 准备 、解析和初始化。注意:对于静态字段,当调用时只有直接定义这个字段的类才会被初始化。见P212(1)加载。加载环节主要分为3步,分别是:(a)根据类的权限定名来获取定义此类的二进制字节流(b)将这个字节流代表的静态存储结构转化为方法区中的动态存储结构(c)在内存中生成一个代表这个类的java.lang.Class对象,作为方法...
2019-11-03 16:17:26
124
原创 Java中init方法与clinit方法
Java在编译之后会在字节码文件中会生成方法,称之为实例构造器,该实例构造器会将语句块,变量初始化,调用父类的构造器等操作都会在方法中执行,执行的顺序(这里只讨论非静态变量和语句块)为:父类变量初始化 —> 父类语句块 —> 父类构造函数 —> 子类变量初始化 —> 子类语句块 —> 子类构造函数此处的变量和语句块指的是非静态变量和非静态语句块...
2019-11-03 15:45:15
240
原创 进程与线程的理解
对于Linux内核来说,并不区分进程和线程。在创建进程或者线程时,都会调用fork()函数,在fork()内部会调用clone()实现创建的功能,而进程和线程的区别就在这里:在调用clone()函数时,如果创建的是线程,需要传递一些参数标志来指明需要共享的资源,因为线程是在进程内部,多个线程可以共享进程的一些资源。对于常说的"进程是资源分配的基本单位",我的理解是因为在调用fork()创建进程时...
2019-11-03 15:33:07
129
原创 HDFS写入数据的流程
首先客户端通过DistributedFileSystem对象调用create()方法创建文件。这时DistributedFileSystem会创建一个DFSOutPutStream,通过PRC调用让NameNode执行同名方法。NameNode此时会进行一系列的检查,包括这个文件是否存在、客户端是否拥有对该文件的权限、自身是否处于正常状态等等。若检查通过NameNode会记录创建操作到编辑日志中...
2019-11-03 15:26:34
550
原创 HDFS的安全模式
当 Hadoop的NameNode节点启动时,会进入安全模式阶段。安全模式是HDFS的一种工作状态,处于安全模式的状态下,只像客户端提供文件的只读视图,不接受对命名空间的修改;同时名字节点也不会进行数据块的复制或者删除。Namenode启动时,首先将fsimage载入内存,并执行编辑日志中的操作。一旦文件系统元数据建立成功,便会创建一个空的编辑日志。此时namenode开始监听RPC和Http请...
2019-11-03 14:46:52
213
原创 Fsimage与EditLog合并过程
1.SecondaryNameNode周期性(五分钟)通过NameNodeProtocol.getEditLogSize()获取名字节点上edits的大小。如果很小的话,第二名字节点就不需要合并fsimage和edilts。当其达到合并的大小时,Secondarynamenode会通过doCheckpoint()方法开启一次检查点。在doCheckpoint()方法里面会调用rollEditLog...
2019-11-03 14:34:59
768
1
原创 HDFS中的FSImage和Edit Log的介绍以及相关实现类
1.介绍HDFS的文件系统目录树、文件/目录元数据信息以及文件对应的数据块等信息会持久化到磁盘上,保存在FSImage和Edit Log中。其中,Fsimage文件是文件系统元数据的持久性检查点,即保存了某一时刻全量的NameNode的内存信息,该时刻往后的修改信息都会保存在Edit Log中,利用该机制确保了NameNode挂掉之后,内存数据不会丢失(因为全都保存到了磁盘上了)。另外,当Na...
2019-11-03 12:50:58
773
原创 HDFS中NameNode、DataNode、Secondary NameNode的作用
1.名字节点名字节点保存的信息主要可以分为三类,分别是:(1)名字节点维护着整个文件系统的文件目录树、文件/目录的元数据信息和文件的数据块索引(每个文件对应的数据块列表)。这些信息在NameNode中保存在两个文件中,分别是FSImage(命名空间镜像)和EditLog(编辑日志)(2)名字节点中保存着数据块与数据节点的对应关系。因此,当我们要读写数据时,首先联系名字节点获取数据所在的Dat...
2019-11-03 11:52:11
5434
原创 HDFS源码中客户端、NameNode、DataNode三者通信以及涉及的接口类型
1.通信方式(1)客户端与名字节点、数据节点之间主要是通过RPC的方式进行通信(2)名字节点与第二名字节点之间主要通过http的方式进行通信(3)数据节点之间主要是通过socket的方式进行通信传输数据2. RPC通信涉及的接口类型根据通信角色的不同,HDFS的接口主要分为三种类型:(1)与客户端相关接口,分别是:客户端与NameNode通信的接口ClientProtocol;客户端与...
2019-11-03 11:12:55
1411
原创 HIVE中空值、空字符串、null判断
1.空值判断HIVE中可以通过以下两种方式对空值进行判断,分别是NULL和 \N(可以对 “\N” 修改为其它字符),具体为:由 alter table name SET SERDEPROPERTIES(‘serialization.null.format’ = ‘\N’); 参数控制的hive在底层数据中如何保存和标识NULL比如:1.设置 alter table name SET SE...
2019-11-01 21:27:49
7036
原创 IDEA如何远程Debug Tomcat
1. IDEA端配置在IDEA的右上角有如图所示的按钮,点击后显示为:点击”Edit Configurations…”按钮,会跳转到“Run/Dubug Configurations”界面,点击“+”号,如图所示:选择“Remote”按钮:点击“Remote”按钮,会进入如下页面:在“1”位置处可以随便起一个名字作为标识;在“2”位置处,填上你需要远程Debug的Tomcat的地...
2019-11-01 21:17:35
435
原创 HIVE中的自定义UDAF
本例为统计年龄大于80岁的id的个数。过程如下:1.创建测试表CREATE EXTERNAL TABLE udaf_test(id string,age bigint)row format delimitedfields terminated by ‘\t’LOCATION‘/tmp/udaftest/’;2.编写UDAFimport org.apache.hadoop.hi...
2019-10-26 16:22:18
787
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人