- 博客(103)
- 资源 (31)
- 收藏
- 关注
原创 001.spring源码分析-bean创建流程
创建bean会调用到refresh方法。refresh()方法AbstractApplicationContext中的refresh方法中的步骤。public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefr
2022-05-06 22:23:17 672
原创 006_flink源码分析-taskmanager的启动
TaskManagerRunner 启动源码分析taskmangerTaskManager 是 Flink 的从节点,它负责 Flink 中集群的worker节点上 slot 资源的管理以及具体 task 的执行。TaskManager 上的基本资源单位是 slot,一个作业的 task 最终会部署在一个 TaskManager 的 slot上运行,TaskManager 会负责维护本地的 slot 资源列表,并来与 Flink Master节点 和作业的主节点 JobMaster 通信。public
2022-05-06 00:45:00 607
原创 005.flink源码分析-jobmanager的启动
jobmanager概览JobManager 是 Flink 集群的主节点,它包含几大重要的组件:1、ResourceManagerFlink的集群资源管理器,只有一个,关于slot的管理和申请等工作,都由他负责。2、Dispatcher负责接收用户提交的 JobGragh, 然后启动一个 JobMaster, 类似于 YARN 集群中的 AppMaster角色,类似于 Spark Job 中的 Driver 角色。3、WebMonitorEndpoint里面维护了很多很多的Handler,如
2022-05-05 22:00:00 817
翻译 【Spark: Big Data Cluster Computing in Production 翻译】第一章
当你第一次像集群中添加一个spark application时,可能经常遇到这个job不能执行成功的问题。spark集群拥有极大的扩展能力,【】,spark框架被设计成很容易上手使用。When you scale out a Spark application for the first time, one of the more commonoccurrences you will en
2022-05-03 00:46:43 490
原创 004.flink源码分析-jobmanager组件概览
flink运行模式可以划分为session模式和非session模式,session模式下,不需要在任务运行时像外部申请资源,资源的申请和释放都通过flink自己控制,如yarn-session模式,standalone模式,非session模式的资源控制交给外部系统,如application模式,per-job模式。实际上不同模式下最重要的区别是组件运行时机和资源控制权的问题,大部分代码逻辑相差不大。这里的session模式以standalone模式为例,非session模式以application模式为
2022-05-01 09:53:46 520
原创 002.flink源码分析之-基于akka的RPC在flink中的使用逻辑
flink使用akka作为底层RPC框架,实际上flink只是在组件之间的通信使用了akka,而task之间的数据传输使用的是netty框架。Akka简介akka通信框架有如下特点:1、ActorSystem 是管理 Actor 生命周期的组件, Actor 是负责进行通信的组件2、每个 Actor 都有一个MailBox,别的 Actor 发送给它的消息都首先储存在 MailBox 中,通过这种 方式可以实现异步通信。3、每个 Actor是单线程的处理方式,不断的从 MailBox 拉取消息
2022-04-30 23:42:33 1238
原创 001.flink内存分配机制
这里写自定义目录标题本文基于flink 1.12的内存配置。对于flink内存的设置,一般我们更关注taskmanager的设置,对于jobmanager,一般不会有内存分配的调优问题,而且相对更简单,本文就不再赘述相关配置,我们设置flink的taskmanager内存大小有三种方式:(1)设置总内存:total process memory(2)设置flink总内存:total flink memory(3)设置各个中间组件本身内存这里以第一种为例,本程序跑在yarn上,使用参数:-yt
2022-04-30 20:00:52 2507
原创 001.flink1.14源码分析之-RPC框架
RPC分布式系统离不开RPC远程调用,本文首先理一下什么是RPC。1.java本地方法调用假设你有一个Calculator,那么单体应用时,要调用Calculator的add方法来执行一个加运算,你可以方法中直接使用,因为在同一个地址空间,或者说在同一块内存,这个称为本地函数调用。java的本地方法调用中,每个方法会作为java虚拟机栈中的一个栈帧放入到java虚拟机栈中,方法调用的时候执行入栈操作,方法执行完成执行出栈操作。2.远程方法调用-RPC需求:系统不同模块之.
2022-04-10 16:21:59 3592
原创 6.nacos on k8s在mysql slave机器挂了的情况下配置无法同步的问题
1.现象是在nacos配置页面中新配置文件失效,nacos事件监听机制失效,配置信息无法同步,查看nacos日志:java.lang.ArrayIndexOutOfBoundsException: 1at com.alibaba.nacos.config.server.controller.HealthController.getHealth(HealthController.java:67)at sun.reflect.GeneratedMethodAccessor74.invoke(Unk
2020-06-25 09:33:25 521
原创 5.nacos启动之-注册表中核心内存数据结构
注册中心的注册功能核心数据结构都在com.alibaba.nacos.naming.core包下,主要由servicemanager,service,cluster,instance几个概念组成。并且由serviceManager来管理,首先来看ServiceManager类,该类持有一个ConcurrentHashMap<String, Map<String, Service>>类型的serviceMap:private Map<String, Map<Str
2020-06-25 09:14:41 1487 2
原创 4.深入理解kubernetes:pod控制器
1.自主pod资源一级字段:apiVersion(group/version)kindmetadataspecstatus2.pod资源spec.containers- name <string>image <string>imagePullPolicy Always(无论本地有没有都去下载,最常用),Never(有就用,没...
2020-04-11 09:14:45 238
原创 3.深入理解kubernetes:k8s的资源清单
1.常用资源workload:pod,deployment,rc,replicaset,DaemonSet,Job,Cronjob服务发现及服务均衡:service,ingress.配置存储相关:volume.csi..configmap,secret,downwardApi集群级资源:namespace,node,role,clusterRole,RoleBinding,Clus...
2020-04-11 09:11:31 393
原创 2.深入理解kubernetes:k8s常用命令
1.kubectl get nodes 命令2.k8s中的常见资源:pod,service,replicaset,deployment,statefulset,daemonset,job,crontab,ingress,3.k8s中常用命令master默认是所有pod的污点(taints)。不调度到master上。使用kubectl describe node xxx可以...
2020-04-11 09:10:13 424
原创 1.深入理解k8s:kubernetes的安装
k8s的部署方式:1.kubeadm方式:(1)需要在各个节点上运行docker和kubectlet,kubeadm(2)master节点运行kubeadm的init,此时主节点跑起来了(3)各个node节点分别执行join2.具体安装步骤关闭防火墙master节点上:------------------------------------------------...
2020-04-11 09:08:27 267
原创 4.nacos源码分析之-leader发送心跳给所有的follower
心跳线程启动在启动选举线程后,开始启动发送心跳的线程://每隔500ms发送一次心跳心跳线程 ScheduledExecutorService去调度 GlobalExecutor.registerHeartbeat(new HeartBeat());public static void registerHeartbeat(Runnable runnable) { ...
2019-12-19 14:09:05 1099
原创 3.nacos源码分析之-raft选举
由于在启动的start.out日志中没有找到选举的信息,继续查看其他的日志,naming-rt.log这个日志似乎于raft有关,通过日志信息,找到RaftCore类,该类被@Component标志,并且有个方法被@PostConstruct所标注:@PostConstructpublic void init() throws Exception {这里有几个核心概念或组件...
2019-12-18 19:44:23 611
原创 2.naco源码分析之-StartingSpringApplicationRunListener
spring启动后,多个类会被初始化加载,这里主要通过日志查看启动了哪些类:首先,启动时候,日志提示log信息会放在start.out中,查看start.out文件可以找到日志来自StartingSpringApplicationRunListener类:public class StartingSpringApplicationRunListener implements SpringA...
2019-12-18 19:34:50 356
原创 1.nacos源码分析-启动流程及项目结构分析
1.下载源码:git clone git@github.com:alibaba/nacos.git2.导入源码到idea中3.打包编译:mvn -Prelease-nacos clean install -U -Dmaven.test.skip=true4.开始分析源码首先找到distribution这个mudule,该module中的start.sh启动...
2019-12-18 19:34:05 1688
原创 003.flink源码分析:flink集群启动入口分析
Flink集群启动入口分析首先查看start-cluster.sh 文件:bin=`dirname "$0"bin=`cd "$bin"; pwd`. "$bin"/config.sh# Start the JobManager instance(s)# 打开选项shopt -s nocasematchif [[ $HIGH_AVAILABILITY == "zookeeper...
2019-01-05 13:03:27 1079
原创 supervisor报错:ImportError: No module named supervisor.supervisord 问题
centos环境下安装supervisor:安装后启动supervisor时候报错:service supervisord startStarting supervisord: Traceback (most recent call last): File "/usr/bin/supervisord", line 2, in from supervisor.supervi
2018-01-17 10:52:43 8019 2
原创 12.kafka源码分析
首先看master的定义,继承自actor,说明是一个线程。private[spark] class Master( host: String, port: Int, webUiPort: Int, val securityMgr: SecurityManager, val conf: SparkConf) extends Actor with Ac
2017-10-15 21:16:28 467
原创 11.kafka源码分析
spark基本的提交语句:./bin/spark-submit\ --class \ --master \ --deploy-mode \ --conf =\ ...# other options \[application-arguments]参数的含义:--class: 主函数所在的类。--master: master的url,后面会解释
2017-06-05 10:16:07 20932 1
原创 10.kafka源码分析
当你开始学习面向服务的体系结构时,你可能会怀疑,服务(service)和应用程序(application)之间的区别是什么?。并没有对服务或应用程序的精确定义。服务和应用程序都是软件程序,但它们往往有一些不同的特性。我总结了下面表格中最常见的特征:servicesapplication执行单个或几个专门操作通常由其他程序访问通常(但不总是)目标的一个
2017-05-03 20:35:14 536
原创 9.kafka源码分析
面向服务的体系结构(Service oriented architecture,SOA)是一种独立的系统和应用程序通过暴露和使用服务相互通信的体系结构。使用开放的标准定义服务,使通信更容易实现,并减少依赖于专有的通信协议。Distributed Object Architecture (DOA) 是这样一种思想:应用中的对象可以在服务之间自由移动,并且可以相互远程调用。SOA也正是遵循了这
2017-05-03 20:19:21 436
原创 8.kafka源码分析
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Locale;public class DateUti
2017-04-21 10:27:50 1026
原创 6.kafka源码分析
java的函数式接口多数位于package java.util.function;包下function代表了一个函数,接收一个参数返回一个结果。function内部有一个apply方法,两个default方法,还有一个static方法。function包含两个泛型:* @param the type of the input to the function* @param th
2017-03-24 15:56:41 537
原创 5.kafka源码分析
lambda表达式与流函数式接口:接口只有一个抽象方法,则默认为函数接口。如果声明了functional interface,编译器就会按照函数接口的要求来检查。在将函数作为一等公民的语言中,lambda表达式的类型是函数。但是在java中,lambda表达式是对象,他们必须依附于一类特别的对象类型--函数式接口。package five;import java.u
2017-03-24 13:54:05 497
原创 4.kafka源码分析
java 1.5的时候增加foreach的增强for循环,然而这里的forEach并不是那个foreach,该处谈论的foreach是集合类的父接口iterable中在jdk1.8新增加的foreach循环函数式方法,先执行下面代码:package com.test.java8;import java.util.ArrayList;import java.util.List;impor
2017-01-07 17:01:33 5006
原创 3.kafka源码分析
首先定义一个函数式接口,随便定义一个方法:@FunctionalInterfaceinterface Test2Interface { void test();}然后定义一个类,该类中有个方法接受上面的接口实现类作为参数,方法内部调用该接口实现类的函数,然后定义匿名内部类来实现这个接口:public class Test2 { //将函数式接口做为参数传递给方法 public
2017-01-07 16:04:12 538
原创 2.kafka源码分析
标注为FunctionalInterface的接口被称为函数式接口,该接口只能有一个自定义方法,但是可以包括从object类继承而来的方法。如果一个接口只有一个方法,则编译器会认为这就是一个函数式接口。例如这样写:public interface FunctionalInterfaceTest { void test1();}如果在接口上面加入@FunctionalInterface注
2017-01-07 15:34:49 4379
原创 10.eureka源码分析
接上篇:Application的start()和handleConfigurationEvent(MaterializedConfiguration conf),handleConfigurationEvent方法是在启动时或者需要动态读取配置文件而配置文件发生变化时,会通过eventBus调用此方法。,该方法会先关闭所有组件再启动所有组件,因此,flume 所谓的动态加载并不是真正的动态,只
2016-11-04 17:49:52 4318
原创 9.eureka源码分析
flume的执行入口在flume-ng-node包下的Application类中,假如需要从kafka中读取数据,配置文件使用本地的配置文件:a1.sources = r1a1.sinks = k1a1.channels = c1a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSourcea1.sources.r1.zo
2016-11-04 10:50:29 2233 2
原创 8.eureka源码分析
flume使用maven管理,层级呈树状结构,树根节点是flume-parent项目,该项目是整个flume的父项目,其他项目集成于该项目,打开这个项目的pom文件,可以看到子模块: flume-ng-core flume-ng-configuration flume-ng-embedded-agent flume-ng-sinks flume-ng
2016-11-02 23:51:38 1142
原创 0.深入理解kubernetes:kubernetes in action 学习笔记
变更账户导致eclipse neon这个版本点开报could not create the java virtual machine这个错误,原因应该是没找eclipse本身的运行环境需要的jvm。按照网上上的方法试了重新设置环境变量,还是不行。后来又试了eclipse.ini文件中-vmargs参数这一行的前面添加-vm,然后换行,然后D:\Users\software\jdk1.8.0_05\
2016-10-18 14:02:54 10430 1
原创 7.eureka源码分析
原文地址:http://www.36dsj.com/archives/16917在多数数据和机器学习的blog里,特征工程 Feature Engineering 都很少被提到。做模型的或者搞Kaggle比赛的人认为这些搞feature工作繁琐又不重要不如多堆几个模型,想入手实际问题的小朋友又不知道怎么提取feature来建模型。我就用个性化推荐系统做个例子,简单说说特征工程在实际的问题里
2016-07-14 01:31:23 664
原创 6.eureka源码分析
地址:https://github.com/endymecy/spark-ml-source-analysis 感谢翻译的同学的辛勤劳动。
2016-06-20 16:39:49 1291
原创 5.eureka源码分析
引用自:http://www.tuicool.com/articles/imyueq在Java里, 当一个对象o被创建时, 它被放在Heap里. 当GC运行的时候, 如果发现没有任何引用指向o, o就会被回收以腾出内存空间. 或者换句话说, 一个对象被回收, 必须满足两个条件: 1)没有任何引用指向它 2)GC被运行.在现实情况写代码的时候, 我们往往通过把所有指向某个对象的r
2016-06-20 13:39:58 514
原创 4.eureka源码分析
1.下载安装包,两种方式:(1)手动下载http://www.aerospike.com/download/server/3.8.3/ 选择对应的版本即可(2)wget下载wget -O aerospike.tgz 'http://aerospike.com/download/server/latest/artifact/el6'2.解压安装包tar -zxvf ae
2016-06-17 10:29:45 1020
C primer plus编程练习答案 C primer plus答案
2009-12-31
在Linux世界驰骋系列教程 linux电子书
2009-12-26
CISSP学习指南 cissp
2009-12-26
J2EE架构师手册.chm(英文的)
2009-12-26
IPV6详解 tcp ip IPv6、ICMPv6
2009-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人