Flink架构

架构:flink-program 优化后通过 Actor-System提交到 JobManager(调度,checkpoint)并跟TaskMnager交互,分发任务,同时检查心跳,statistics、任务状态、TaskManager中包括了内存、I/O manager。 Application集群,Session集群。启动流程:还会创建其他一些组件、create RPC service、JMX service、blob server、delegationTokenManager、metricRegistry、haServices、heartbeatServices。ResourceManager内部包含了:JobManagerGateway、WebMonitorEndpoint、ResourceManagerGateway、DispatcherGateway、TaskExecutorGateway

阅读全文

Flink执行图的生成

StreamGraph,会根据 stream、batch 做转换,流的转换为 StreamGraph,批的转换为 OptimizedPlan,最后统一转换为 JobGraph,将算子链接在一起,之后根据并行度生成ExecutionGraph,最后做物理执行。StreamNode、StreamEdge、StreamGrapgh。Plan 继承 Visitor,后面对 Plan 做优化可以用访问者模式遍历。JobGraph和相关的类:JobVertex、JobEdge、IntermediateDataSet

阅读全文

学习一下 pytorch

numpy,tensor(创建、检查属性、reshap、基本运算、index & sliceing、for deep learning、Converting Between NumPy & Tensor;jupyter,Torchvision;MNIST 数据集是一个著名的手写数字数据集,训练模型,评估模型,加载模型,虚拟化展示;图像裁剪,RGB,图像翻转,像素取平均值,模型微调;卷积,Padding,空洞卷积。 一个深度学习项目包括了:模型的设计、损失函数的设计、梯度更新的方法、模型的保存与加载、模型的训练过程等。模型梯度:从输入层、隐藏层、再到输出层,导数。可视化工具:tensorboard、visdom,分布式训练

阅读全文

公有云中日志收集

云环境日志收集,收集方式:直接读日志文件、log4j扩展。日志处理:写kafka、直接写共享存储、直接写s3、使用raft集群处理、使用NewSQL

阅读全文

BTrace 的学习

btrace的一个例子,arthas 的retransform,jdb 调试。以及其他一些分析工具,如 JDK 内置的、分布式监控工具、火焰图、jfr、visualvm、jprofiler、MAT 等等

阅读全文

YARN原理分析

RPC协议,客户端<->RM,RM<->NM,RM<->AM,AM<->NM,ADMIN<->RM。使用了reactor模式,类似tomcat和jetty,也使用了异步事件处理模式。RM 内部的模块:用户交互的Web服务模块、NM管理模块、AM管理模块、application管理模块、状态机管理模块、安全管理模块、资源分配模块;其中包括ApplicationMasterService、AMLivelinessMonitor;状态机包括:RMApp 状态机、RMAppAttempt 状态机、RMContainer 状态机、RMNode 状态机。 资源调度体系:FIFO、Capacity Scheduler、Fari Scheduler;第一层,RM 中的资源调度器将资源分配给各个 AM、第二层,AM 再进一步将资源分配给它内部的各个任务;资源抢占流程、资源计算方式。层级管理方式:子队列,可以嵌套、最少容量,可以使用父队列的容量比、调度器有限选择当前资源使用率最低的、最大容量、用户权限管理。NodeManage内部模块:NodeStatusUpdater、ContainerManager、ContainerExecutor、NodeHealthCheckerService、DeletionService、Security、WebServer。分布式缓存,将应用所需的资源下载到本地再运行:public、private、application三个可见性;应用结束后会自动上传日志到HDFS,之后由JobHistory 负责清理。NM内部包括:Application 状态机、Container 状态机、LocalizedResource 状态机。container启动包括:资源本地化、启动(LinuxContainerExecutor cgroup管理)、资源清理

阅读全文

Spark 注册数据源

DataSourceRegister注册过程,自定阅读XXRelationProvider,DataSource 查找过程,DataFrameReader,DataFrameWriter,CheckpointRDDPartition,ReliableCheckpointRDD,SparkSession内部包含的变量SparkContext、sharedState、SQLContext、RuntimeConfig

阅读全文

Spark Core相关-2

调度过程,RDD的主要函数,DAGScheduler将各个RDD划分到不同stage,每个Stage包含若干个TaskSet,交给内部的并发队列处理事件;TaskScheduler有点像 YARN队列,创建调度池和本地性判断,之后交给SchedulerBackend;MemoryAllocator负责分配内存,包括off-heap和on-heap,其中的MemoryBlock包含了obj指向heap的对象、以及offset和length;TaskMemoryManager负责task的内存管理,MemoryConsumer的实现类负责消费这些内存;Task包括:ShuffleMapTask、ResultTask,TaskContext 会启动新线程运行Task;AppendOnlyMap类似HashMap但做了优化,shuffle和spill的几个类:ExternalSorter、ExternalAppendOnlyMap、ShuffleExternalSorter、UnsafeExternalSorter;ShuffleWriter和实现类体系负责写磁盘,ShuffleReader主要由ShuffleBlockFetcherIterator 去抓取数据,以及管理他们的ShuffleManager;Executor 调用 launchTask,在新线程中启动 TaskRunnerTaskRunner 又会启动 Task;Master和选举;Driver调度过程,Executor分配过程,尽可能跨Worker;集群模式下TaskSchedulerImpl->StandaloneSchedulerBackend->StandaloneAppClinet,跟Master通讯。Master调用launchExecutor给Wroker,Worker拼接ProcessBuilder启动新进程,CoarseGrainedExecutorBackend会跟Worker通讯。YARN cluster和client模式

阅读全文