Tachyon源码结构分析(三)

2024-06-20 17:58
文章标签 分析 源码 结构 tachyon

本文主要是介绍Tachyon源码结构分析(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

发布人:南京大学PASA大数据实验室


前言

在上一篇《Tachyon源码结构分析(二)》中,我们具体分析了Common模块和Client模块的源码结构,本篇接着上一篇内容介绍Master模块的源码结构分析。
 
版本选择
Tachyon目前刚刚发布了新版本0.6.1,最新的开发版仍为0.7.0-SNAPSHOT。本篇我们仍然选择Tachyon-0.6.0版本保持与前两篇同步。

官方链接:Tachyon-0.6.0


Master模块

Master模块是Tachyon的核心模块,负责管理和协调Worker与Client的正常工作。Master保存了Tachyon系统的元数据信息、文件结构、日志和镜像以及所有Worker的状态信息,同时向Client提供了关于元数据的处理操作,包括创建文件、创建表格、删除文件等。Master还提供了基于重计算的丢失文件恢复机制来容错,提供了基于Zookeeper的竞争机制来保证Master节点的健壮性,提供了心跳机制来保证Tachyon系统的可靠性。总的来说,重计算、Zookeeper以及日志和镜像机制都是为了巩固Tachyon的容错性能,我们在后续章节会针对这些核心的机制进行详细的分析。

Master模块的源码包含三个部分,分别为tachyon.mastertachyon.retrytachyon.web。这样划分的原因是tachyon.retrytachyon.web目前都是以tachyon.master包为核心的。tachyon.master包主要实现了Master的核心机制(重计算、心跳、日志和镜像等);tachyon.retry目前为tachyon.master包中MasterClient的连接操作所使用,实现了连接失败后的退避策略;tachyon.web目前都是使用tachyon.master来收集web显示的数据信息。下面按每个包来介绍Master模块具体是如何实现的。


  • tachyon.master包

    tachyon.master包是Master模块的核心,实现了Master的主要功能。该包定义了文件节点的基本结构,实现了日志和镜像机制以及心跳机制,同时定义了依赖关系的具体内容,进一步实现了重计算机制。我们现在来介绍tachyon.master的源码结构。

    从图1可以看出,tachyon.master的源码结构是错综复杂的,各个类之间的关系联系比较紧密。从图中可以看出,JsonObjectImageElementEditLogOperation的基类,抽象出日志和镜像中数据的基本存储单元。ImageElementImageElementType和参数组成,描述了元数据的静态结构(Version、 CheckpointInodeFile、 InodeFolderRawTableDependency);EditLogOperationEditLogOperationType和参数组成,描述了元数据的动态操作(ADD_BLOCKADD_CHECKPOINTCREATE_FILECOMPLETE_FILESET_PINNEDRENAMEDELETE、CREATE_RAW_TABLEUPDATE_RAW_TABLE_METADATACREATE_DEPENDENCY)。ImageElementImage中的元素,EditLogOperationEditLog中的元素,ImageEditLog一起构成JournalImageWriterRawTablesInodeDependencyMasterInfo的基类,定义了写入镜像的基本接口,也就是说InodeDependencyRawTablesMasterInfo都可以将元数据写入到镜像文件。InodeFileInodeFolder继承于Inode,分别为文件和文件夹的索引节点。文件夹的索引节点保存了子文件夹或者子文件的索引节点Id,用于构成文件的树状结构。TachyonMaster是Master节点的入口函数,调用TachyonMastermain函数开启Master的web和数据服务。从图中我们还可以看出MasterInfo是Master节点的核心,它和InodeMasterWorkerInfoRawTablesDependency、RecomputeCommandBlockInfoCounters等都直接相关,向Master服务模块提供大量的数据信息。


     图1. tachyon.master源码结构

     

  • tachyon.retry包

    我们知道当连接网络放生冲突以后,立即重连会导致依然连接冲突的概率很大。该包的功能就是定义一系列退避策略,当连接发生冲突时,退避若干个时间单位以后重新连接,使得冲突的概率最小化。目前该包只定义了一种可用的退避策略,即二进制退避策略,当第i次连接失败以后,连接被延迟0到之间随机的时间单位之后,规避依然冲突的风险。

    该包包含四个类,分别为package-infoRetryPolicySleepingRetryExponentialBackoffRetry。其中RetryPolicy定义了退避策略的接口;SleepingRetry是实现了RetryPolicy接口的抽象类;ExponentialBackoffRetry继承了RetryPolicy


  • tachyon.web包

    Tachyon作为一个分布式内存文件系统,需要向用户提供友好的交互界面使得用户能够随时把握Tachyon当前状态和当前的文件结构。tachyon.web的作用就是为Tachyon网页显示提供必要的数据信息,保证Tachyon状态能够被实时监督。而Master作为主控制节点,它收集了所有文件的元数据信息以及所有从节点的当前状态信息,所以tachyon.web基本都是从Master节点获取实时数据,因而我们把tachyon.web划分为Master模块。(在接下来的版本中,每个Worker节点也开启了web服务,每个Worker节点从本地获取web信息,所以web也可以归为Common模块)

这篇关于Tachyon源码结构分析(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078853

相关文章

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud