- 博客(63)
- 问答 (1)
- 收藏
- 关注
原创 nifi,minifi,efm,nifi-registry安装使用笔记
nifi,minifi,efm,nifi-registry安装使用笔记简介目录一,安装nifi二,安装nifi-registry三,安装EFM3.1 安装EFM3.2 安装minifi四,使用实例简介本博客记录最简单的nifi,minifi,efm,nifi-registry 安装配置步骤,以及使用实例,本人使用的是Mac环境,各组件都是java版本。目录安装nifi安装nifi-re...
2019-10-29 13:10:20 2340
原创 关于kerberos使用keytab安全认证连接hive票据过期的问题及解决方法。
关于kerberos使用keytab安全认证连接hive票据过期的问题及解决方法问题描述解决方法问题描述本人在使用HiveStreaming的过程中,使用kerberos keytab进行安全验证,程序会保持长期连接。(hive jdbc 连接也要同样的问题)登录主要代码:LoginContext lc = new LoginContext(clientName, new TextCall...
2019-06-20 10:51:07 16152 9
原创 树莓派中安装IoTDB教程
树莓派中安装IoTDB一,树莓派系统录制1.1 安装imager1.2,开机1.3,配置网络1.4,网络更改1.5,修改时区1.6,树莓派时钟不准问题二,iotdb安装2.1,安装java82.2,安装iotdb v0.132.3,性能调优:三,安装supervisor3.1,安装3.2,配置supervisor管理iotdb进程3.3,启动iotdb3.4,关闭iotdb一,树莓派系统录制树莓派型号:Raspberry Pi 4 B存储:Sandisk UHS-I 存储卡 64GB系统版本:Ubu
2022-04-19 19:45:10 1363
原创 JVM(六)垃圾回收
垃圾回收一,介绍二,垃圾标记阶段2.1,引用计数算法2.1.1,优点2.1.2,缺点:2.2,可达性分析算法(根搜索算法,追踪性垃圾收集)2.2.1,基本思路2.2.2,GC Roots(根对象集合)三,垃圾清除阶段3.1, 标记-清除算法(Mark-Sweep)3.1.1,标记3.1.2,清除3.1.3,优缺点3.2,复制(Copying)算法3.2.1,优缺点3.3,标记-压缩(标记整理,Mark-Compact)算法3.3.1,标记3.3.2,压缩3.3.3.,标记压缩算法和标记清除算法的区别3.3.
2022-03-05 19:00:13 1100
原创 spark源码跟踪(十一)ApplicationMaster中的关键线程
ApplicationMaster中的关键线程一,Driver线程二,Reporter线程三,图示yarn cluster 模式提交的spark程序会使用Yarn集群中某个节点的container资源启动ApplicationMaster java进程,其启动命令是SparkSubmit进程根据用户提交spark任务命令的参数拼接而来。启动后跟踪代码调用过程。一,Driver线程查看半生对象object ApplicationMaster 中的main函数object ApplicationMast
2022-02-24 00:58:40 1548
原创 spark源码跟踪(十)container申请与Executor启动
Container申请与Executor启动一,介绍二,YarnAllocator说明2.1,类构造函数三,Container资源申请3.1,常用概念及其类3.3,调用过程3.3.1,allocateResources(): Unit3.3.2,请求资源3.3.3,handleAllocatedContainers3.3.3,ExecutorRunnable四,YarnCoarseGrainedExecutorBackend进程一,介绍yarn-cluster模式下,Spark Container资源的
2022-02-24 00:06:01 1698
原创 spark源码跟踪(九)就近计算
就近计算一,实现二,过程一,实现YarnAllocator.scala// A map to store preferred hostname and possible task numbers running on it.private var hostToLocalTaskCounts: Map[String, Int] = Map.empty// Number of tasks that have locality preferences in active stagesprivate[
2022-02-23 11:21:18 1191
原创 JVM(五)String的不可变性
String的不可变性一,字符串常量池1.1,常量池的使用1.2,StringTableSize二,字符串拼接2.1,拼接规则三,intern()的使用3.1,作用四,问题JDK8:private final char value[];JDK9:private final byte value[]; String内部真正存储数据的结构从char[]变为byte[],原因:实际情况下String是堆内存中出现最多的对象,且大量字符都只需要一个字节,造成大量空间被浪费。一,字符串常量池对字符串重
2022-02-18 11:28:47 446
原创 JVM(四)执行引擎
这里写目录标题一, 结构图二,概述三,执行引擎的工作过程一, 结构图二,概述虚拟机是一个相对于物理机的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器,缓存,指令集和操作系统层面上的,二虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不用硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到齐内粗,但字节码并不直接运行在操作系统之上,因为字节码指令并不等价于本地机器指令,执行引擎(Execution
2022-02-16 11:12:37 529
原创 JVM(三)对象实例化
对象实例化一,创建对象的方式二,对象实例化步骤三,对象的内存布局四,图解一,创建对象的方式1,new2,反射的方式:Class 的newInstance()3,使用clone():类实现Cloneable接口,实现clone方法4,反序列化:从文件,从网络中获取一个对象的二进制流5,第三方库Objenesis二,对象实例化步骤1,判断对象对应的类是否加载,链接,初始化2,为对象分配内存。3,处理并非安全问题4,初始化分配到的空间5,设置对象的对象头6,执行init方法进行初始化
2022-02-16 10:46:18 422
原创 JVM(二)运行时数据区
运行时数据区一,说明二,程序计数器(PC寄存器)2.1,作用2.2,特点三,虚拟机栈3.1,作用3.2,特点(优点)3.3,栈可能出现的异常3.4,栈中存储的内容3.4.1,栈桢(Stack Frame)3.5, 栈运行原理3.6,栈桢中的内容3.6.1,局部变量表3.6.2,操作数栈(Operand stack)(或者表达式栈)3.6.3,动态链接(或指向运行时常量池的的方法引用)3.6.4,方法返回地址3.6.5,附加信息四,本地方法栈五,堆5.1,堆内存细分5.2,堆空间大小的设置5.3,年轻代5.4
2022-02-14 12:13:34 1075
原创 JVM(一)类加载子系统
JVM与类加载子系统一,虚拟机二,java虚拟机三,类加载子系统3.1,类加载阶段3.2,链接阶段3.3,初始化阶段四,类加载器4.1,启动类加载器(引导类加载器Bootstrap ClassLoader)4.2,扩展类加载器(Extension ClassLoader)4.3,应用程序类加载器(系统类加载器,AppClassLoader)4.4,自定义类加载器五,双亲委派机制5.1 工作原理5.2,优势六,补充一,虚拟机虚拟机:一台虚拟的计算机,它是一款软件,用来执行一系列虚拟机算计指令。可分为系统虚
2022-02-08 12:22:40 1441
原创 spark源码跟踪(八)累加器Accumulators
累加器Accumulators一,累加器作用及其原理1.1,作用1.2,原理二,累加器关键源码跟踪阅读2.1,测试代码2.2,跟踪源码2.2.1,add调用2.2.2,merge调用三,累加器在行动算子和转换算子中执行有何不同3.1,测试代码一,累加器作用及其原理1.1,作用可实现分布式计数或求和;可以在spark application运行UI中显示其值,便于调试。1.2,原理在Driver端中定义的累加器Accumulators对象,跟随各spark task任务分发到Executor端,反序
2021-12-22 12:55:19 1330
原创 Spark任务运行常用概念及之间的关系
一,关系简图二,描述application --> job -->stage -->task 都是一对多关系。2.1,Application一个SparkContext就是一个application,通过spark-submit脚本提交给集群。2.2,DAGRDD依赖组成的有向无环图,来表明一个Application中RDD的依赖关系。2.3,Job1,没有检查点的正常情况下一个行动算子触发一个Job。2,如果行动算子的依赖链中有检查点(checkpoint),则至少有
2021-12-18 00:34:32 1930
原创 historical内存溢出问题及解决方案
一,问题描述druid router界面显示historical服务不正常,Datasource0%可用,druid历史数据不可查。historical节点日志显示一直在loading segment,但是loading结束后可能会报错segment文件格式错误,如下图,报错的文件路径本地可能没有但是hdfs上文件没问题。报错后过一会儿又开始重新开始loading过程,如此往复循环。druid目录下有进程崩溃的日志。二,问题原因查看hs_err_pid文件可知historical进程死掉的原因是
2021-12-14 00:16:59 1058
原创 clickhouse从kafka消费数据并存储
clickhouse从kafka消费数据并存储一,构建消费kafka数据的数据表二,构建用于持久化的数据表三,构建物化视图一,构建消费kafka数据的数据表CREATE TABLE kafka_clickhouse (time Timestamp,name String, age Int8) ENGINE = Kafka SETTINGS kafka_broker_list = 'host1:port...', kafka_topic_list = 'topic_name', kafka_group_n
2021-12-07 22:32:31 767
原创 NiFi日志调整
NiFi日志调整一, conf/logback.xml默认的NiFi log配置会产生大量的日志,我们的生产环境多次出现硬盘写满的情况(NiFi集群只执行流式计算不存数据,所以硬盘不大)。一, conf/logback.xml默认配置:<configuration scan="true" scanPeriod="30 seconds"> <contextListener class="ch.qos.logback.classic.jul.LevelChangePropaga
2021-12-04 12:20:12 1605
原创 spark groupBy与groupByKey
spark groupBy与groupByKey一,测试程序二,groupBy分区数如何确定三,groupBy与groupByKey的关系四,结论spark中group转换操作会将数据分为一到几个组,分组的数量与分区数量是否有关系?group与groupBy有什么关系?一,测试程序object WordCount extends Logging{ def main(args: Array[String]): Unit = { log.info("----------------")
2021-11-20 01:17:46 2722
原创 spark源码跟踪(六)RDD逻辑代码执行
RDD逻辑代码执行一,驱动程序二,Task相关类2.1 查看ResultTask类runTask(context: TaskContext)方法:2.2,反序列化后执行func函数三,MapPartitionsRDD 类四,ParallelCollectionRDD五,ShuffleMapTask六,总结一,驱动程序val sparkConnf=new SparkConf().setAppName("wordCount").setMaster("local[3]")val sparkContext=n
2021-11-19 17:42:35 1460
原创 spark源码跟踪(五)task调度与执行
task调度与提交上一篇: task生成.Task生成后回被包装成TaskSetManager,然后放入任务调度器中的任务池中并根据调度算法进行排序,任务调度器有先进先出调度器和公平调度器。之后发往Executor中执行。...
2021-11-01 23:35:02 657
原创 spark源码跟踪(四)stage提交与task任务生成
stage提交与task任务生成一,程序入口。二,stage提交2.1,2.2,三,Task任务生成四,总论链接: spark源码跟踪(三)stage划分.一,程序入口。val sparkConnf=new SparkConf().setAppName("wordCount").setMaster("local[3]")val sparkContext=new SparkContext(sparkConnf)val rdd=sparkContext.parallelize(Array("hell
2021-10-27 14:19:51 1286
原创 spark源码跟踪(三)stage划分
stage划分一,stage类图二,源码跟踪三,结论一,stage类图二,源码跟踪入口val sparkConnf=new SparkConf().setAppName("wordCount").setMaster("local[3]")val sparkContext=new SparkContext(sparkConnf)val rdd=sparkContext.parallelize(Array("hello thank you thank you very much are you
2021-10-21 21:16:16 487
原创 spark源码跟踪(二)rdd依赖
@TOC一,Dependency继承关系图RDD继承关系分为两类,NarrowDependency(窄依赖)和ShuffleDependency(宽依赖)。二,NarrowDependencyNarrowDependency(窄依赖)类是一个抽象类,可细分为:OneToOneDependency,RangeDependency,PruneDependency2.1,OneToOneDependency一对一依赖。子RDD的分区与父RDD数量一致,分区之间一一对应。/** * :: Deve
2021-10-13 23:38:42 220
原创 spark源码跟踪(一)yarn-cluster模式任务提交
一,运行命令bin/spark-submit \--master yarn \--deploy-mode cluster \--class org.apache.spark.examples.SparkPi \examples/jars/spark-examples_2.11-2.3.1.3.0.1.0-187.jar 二,启动脚本查看spark-submit 脚本文件,程序入口为exec "${SPARK_HOME}"/bin/spark-class org.apache.spark
2021-09-20 23:48:45 1221
转载 maven项目源码下载
在pom.xml同级目录下执行如下命令:mvn dependency:resolve -Dclassifier=sources$ mvn dependency:resolve -Dclassifier=sources[INFO] Scanning for projects...[INFO] [INFO] -------------------------< cchen:spark_learn >--------------------------[INFO] Building sp
2021-08-24 16:52:49 455
原创 scala--self type
self type 一,功能二,语法规则一,功能声明一个trait混合到另一个trait或class中而不需要直接继承该trait,最常见的用法是将一个大类划分为几个trait。trait A{ //statements}trait B{ this: A => //here we can use methods & variables of trait A}trait B 没有继承 trait A,但是trait B中可以访问trait A中的成员。二,语法规
2021-07-14 17:45:16 279
原创 druid使用kerberos化的hdfs作为深度存储
druid使用kerberos化的hdfs作为深度存储一,在kerberos中生成供druid使用的principle二,修改common.runtime.properties配置文件三,添加hdfs配置文件并修改访问权限一,在kerberos中生成供druid使用的principle在kerberos server所在机器使用如下命令添加principle,并生成keytab文件。将keytab文件拷贝至druid各节点的指定目录下。(主要是data节点)kadmin.localaddprinc
2021-07-08 01:05:42 600 1
原创 Yarn介绍
Yarn运行原理一, yarn 框架二,ResourceManager2.1,ApplicationsManager2.2,Scheduler三,NodeManager四,ApplicationMaster五,客户端提交任务到yarn中运行的流程。YARN的基本思想是将资源管理和作业调度/监视的功能划分为单独的守护进程。其想法是拥有一个全局资源管理器ResourceManager(RM)和每个应用程序一个的应用程序管理员ApplicationMaster(AM)。应用程序可以是单个作业,也可以是多个作业组
2021-06-10 01:56:43 10482
原创 scala学习笔记(四)--包和访问修饰符
scala学习笔记(四)--包和访问修饰符一,包定义1.1,在文件头部定义包1.2,使用花括号嵌套定义包1.3,根包二,包访问三,引用3.1,单个引用3.2 按需引入3.3 多项引用3.4,重命名引用3.5,隐藏引用3.6,引用对象属性(字段+方法)3.7,隐式引用四,访问修饰符4.1,private4.2,protected4.3,public五,保护的作用域六,伴生对象及其可见性6.1,单例对象6.2,伴生对象6.2.1,伴生对象与伴生类要求6.2.2,访问权限一,包定义1.1,在文件头部定义包
2021-05-22 09:49:25 618
原创 druid日志配置
druid日志配置druid默认的log4j.xml路径为:conf/druid/cluster/_common/log4j2.xml<Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/> &l
2021-05-20 10:33:57 2238 2
原创 scala学习笔记(三)--内建控制结构
内建控制结构一,if二,while三,for3.1,枚举集合元素3.2,过滤3.3, 嵌套枚举3.4,流中变量绑定3.5,制造新集合四,try,catch,finally五,match5.1,样本类5.2,模式匹配5.2.1,通配模式5.2.2,常量模式5.2.3,变量模式5.2.4,构造器模式5.2.5,序列模式5.2.6,元祖模式5.2.7,类型模式5.2.8,变量绑定5.2.9,模式守卫一,ifif 表达式有返回值val maxValue=if(a>b) a else bscala中赋值
2021-05-08 22:22:09 588 2
原创 scala学习笔记(二)--抽象类和特质
Scala抽象类和特质一,抽象类1.1,类扩展1.2,重写方法和字段1.3,override 关键字1.4,final修饰符二,特质trait2.1,特质的和类的差异2.2,继承类的特质2.3,线性化与super调用2.4,特质的叠加2.5, 菱形继承一,抽象类如果一个类中有未实现的方法(有方法签名,没有方法体)或者未被初始化的字段(val,var,主构造器中定义的字段除外)和类型type,那么该类应该被定义为抽象类abstract。抽象类不能被实例化。1.1,类扩展定义子类时使用extends关
2021-05-07 16:20:53 649
原创 scala学习笔记(一)--类
scala学习笔记--类一,类层次二,类定义三,类成员3.1 字段3.1.1,val字段3.1.2,var字段3.2,类型3.3,方法3.3.1,方法与函数3.3.2, 函数字面量简化格式3.3.3,变长参数函数3.3.4 操作符与函数四,对象相等性一,类层次1, Any是根类,是所有类型的超类。其中定义了一些常用的方法,包括==,!=,hashCode,equels,toString。2, AnyVal是所有内建值类型的超类,scala中内建值类的实例都写成字面量,如42是Int的实例,不能用ne
2021-04-21 10:28:31 501
原创 SparkStreaming学习笔记
SparkStreaming学习笔记一,DStream(离散化流)二,Input DStream and Receivers三,转换操作四,Window Operations五,DStream输出操作六,Cacheing/Persistence七,Checkpointing/检查点7.1, 元数据检查点7.2,数据检查点Spark Streaming是Spark core的扩展,支持可伸缩、高吞吐量、容错的实时数据流处理。数据可以从许多源(如Kafka、Kinesis或TCP sockets)摄取,并且
2021-04-13 22:58:41 311
原创 Structured Streaming学习笔记
Structured Streaming学习笔记一,编程模型二,创建streaming Dataset和Dataframe三,操作streaming Dataset和Dataframe3.1 普通Dataset和Dataframe 支持的操作streaming都支持,如下操作不支持:3.2 基于Event-time(事件时间)的window操作3.3, 流式数据去重3.4,多watermark处理策略四,查询4.1, 输出模式Structured streaming是构建在SparkSQL引擎上的可伸缩且
2021-04-02 14:09:30 668
原创 Spark SQL
Spark SQL一,编程入口二,DataFrame2.1 DataFrame 创建2.1.1 从已经存在的RDD创建2.1.2 从hive表创建2.1.3 从外部数据源(如,csv,json,parquet,jdbc等创建2.2 DataFrame常见操作2.2.1 查询select2.2.2 过滤filter2.2.3 分组groupBy2.2.4 创建临时视图执行SQL三,Dataset四, SparkSQL与RDD交互4.1,使用反射将RDD转化为Dataset4.2,指定schema方式将RDD
2021-03-05 15:44:13 179
原创 spark core
spark rdd编程一,spark基本架构二,spark rdd2.1,rdd定义2.2,创建三级目录一,spark基本架构Cluster Manager:集群管理器,主要负责集群资源的分配与管理。 Cluster Manager分配的资源属于一级资源,它只负责把集群中Workers的资源 (cpu,内存)分配给程序,但并不负责对Executer资源的分配。目前有 Yarn,Standalone,Mesos,EC2等Worker:集群的工作节点。负责创建Executor,并进一步将资源和任务分配给E
2021-03-03 22:31:45 731 4
原创 Kerberos化http接口访问
Kerberos化http接口访问一,Linux ,Mac os 环境下curl 命令访问1.1, 拷贝 服务器上的 /etc/krb5.conf 文件还至目标电脑上。1.2, 执行kinit 获取票据,curl访问接口二,mac 环境下使用浏览器访问Kerberos 化 UI2.1 拷贝/etc/krb5.conf 文件,执行kinit2.2 safari浏览器2.3 Chrome浏览器打开界面三,windows环境下使用浏览器访问Kerberos 化 UI3.1 下载安装 KerberosTicket
2020-12-21 01:23:25 2372
空空如也
为何不能如下scala代码会报错?为何不能省略override关键字?
2021-05-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人