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模式

阅读全文

Spark Core相关-1

SparkContext、存储体系、RPC、Web-UI。 存储体系,BlockManager和BlockManagerMaster、MemoryManager、MemoryStore、DiskBlockManager、DiskStore。监控体系:MapOutputTracker、MapOutputTrackerMaster、MapOutputTrackerWorker。 Web-UI体系:对应的层级结构为: SparkUI -> WebUITab -> WebUIPage。执行环境:安全体系(SecurityManager、用于设置 yarn,hadoop 的 secret key);SparkContext 会附带初始化:Metrics 体系、Listener、SparkUI、RPC 整套体系、BlockManager,storage 体系、Executor 体系、Heartbeater、KVStore、SerializerManager,还有度量类、日志体系。 PRC 体系:MessageLoop 中维护了 Inbox 的链表、每个Inbox 中为了 InboxMessage 的链表,InboxMessage包含很多实现类,如 HeartbeatReceiver ,包括了 receiveAndReply。RPC中用到了 netty的通讯体系,根据发送地址,选择对应的 Outbox,每个 Outbox维护一个 OutboxMessage的链表,再通过netty 的 NettyChannel 发送出去

阅读全文

k8s 网络

覆盖网络,Flannel 的 UDP模式、xvlan模式、host-gw,Calico 采用了BGP做三层转发,为防止退化为 IPIP,需要设置 BGP 的跳数。 使用 Network Policy 做网络隔离,k8s 的网络本质都是连通的,像是弱多租户。CNI 插件 的网络插件。Service 是由 kube-proxy 组件,加上 iptables 来共同实现的;所谓 Ingress,就是 Service 的“Service”。 调度:根据 etcd 的变化选择合适的 Node 做调度,Priorities为节点打分;Pod 调度失败的情况(抢占、优先级);K8S 中两个不可替代的组件:kube-apiserver、kubelet;核心是循环控制器检查,容器运行时:CRI,除了docker还有containerd,基于虚拟化的:Kata Containers、gVisor

阅读全文

ozone

ozone的三个角色Ozone Manager (OM),Storage Container Manager (SCM),DataNode,三个角色的具体存储内容,datanode中数据存储在 container中,按照offset保存数据的位置,recon 提供管理界面,ozone mager和 SCM 的高可用:使用 rocksdb + raft 实现的,这里用的是:ratis。整合spark,flink,presto/trino,doris 都比较容易

阅读全文

ES的简单学习

主节点管理元数据,数据节点(主分片,从分片),协调节点,预处理节点。索引-分片-segment。查询:term query、ranger、prefix、wildcard query,组合查询、聚合查询(每个分片做topN协调节点汇总topN可能数据不准确),各种字段类型。 倒排索引原理,term-index、term dictionary、posting List。Lucene的segment包含多个document,一个document包含多个filed,每个filed有杜丽丽的索引(倒排索引),变种的前缀树、数据编码、Roaring Bitmaps。相关性评分:TF-IDF (Term Frequency-inverse Document Frequency)、BM25 算分模型。分词器:格式处理清洗、文本切分、对切换后的单词做处理。近实时的原因:Refresh,写入的数据会定期刷盘,刷盘后生成不可变文件就可以被读取。index buffer、transaction log。分页方式:from + size、search after、scroll API、point in time。PacificA主从副本同步协议,多个master使用 raft 协议,主副本写入会带SN,将写入数据和SN一起同步给从分片。监控:cluster API,CAT api,索引生命周期管理:hot、warn、colod、delete。 索引别名、reindex、索引模版,收缩index。 ELK 架构。 ES优化:snapshoot、生命周期管理,批量读写,慢日志查询/CPU/内存/磁盘/网络 监控,索引rate,segment大小,shared数量,存储限流,refresh频率

阅读全文

国内几个云厂商大数据平台

国内几个厂商,阿里、华为、腾讯、网易的大数据平台产品粗略调研;共同点:去Ambari 自己的管控平台,报警 监控 自动化运维,智能诊断,数据治理,集成各开源组件,离线、实时、OLAP,数据服务。 阿里云:有 celeborn向量化, EMR on ECS、on ACK,Serverless, 网易:自动化诊断做的不错,Kyuubi、Impala两个增强点; 华为云:基于OpenStack还有 API,鲲鹏硬件整合、CarbonData,Superiro Scheduler;腾讯:TDBS 比较中规中矩 各种都有

阅读全文