Tachyon源码结构分析(一)

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

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

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


前言

在上一篇博客中,我们介绍了Tachyon的安装、配置和使用,用户已经对Tachyon有了初步的了解。从本篇开始,我们将对Tachyon的源码结构进行分析,让用户进一步更深入的了解Tachyon的工作机制。由于源码分析的内容比较多,我们将分成多篇来详细阐述。

 

版本选择

Tachyon目前的最新发布版为0.6.0,最新开发版为0.7.0-SNAPSHOT。本篇我们选择的Tachyon版本为0.6.0。

官方链接:Tachyon-0.6.0

 

概述

Tachyon在系统架构上由Client、Master、Worker三个核心部分组成,对应在Tachyon源码中的一个或多个包(package)中。为了方便分析,我们将Tachyon源码按主要功能分为Client、Master、Worker以及Common模块。每个模块在Tachyon中各司其职,发挥着各自的作用。

  • Client模块:Client模块是Tachyon向用户提供的一扇大门,用户只能在Client模块获取对Tachyon的访问接口,从而对Tachyon文件系统进行各种操作,包括文件的创建、删除、读取、写入等。
  • Master模块:Master模块向Client和Worker提供远程调用接口,负责管理和协调Client与Worker的正常工作,保存了Tachyon文件系统的元数据信息、文件结构、日志和镜像文件以及Workers的信息列表等,同时Master向Client提供了关于元数据的处理操作,包括创建文件、创建表格、删除文件等。Worker向Master注册自己的信息加入到Master的管理,然后和Client一样通过心跳保持其与Master的联系并传递必要的数据信息。Client和Worker通过该模块的MasterClient类远程调用MasterServiceHandler类提供的方法。
  • Worker模块:向Client提供远程调用接口,负责管理本地存储(Storage),在0.6.0版本中就是以层次存储(HierarchyStorage)的方式来管理本地数据。数据在Worker中以数据块为基本单位进行存储和管理,向用户提供以数据块为单位的操作。Client通过该模块的WorkClient类远程调用WorkerServiceHandler类提供的方法。
  • Common模块:向Client、Master、Worker提供本地调用接口,定义了三个模块的通用操作,包括网络访问、数据格式、底层文件系统、用户信息、系统配置等。

下面的表格精确的列出了各个模块所包含的源码文件,具体对各个源码文件的分析在后面的博客中会详细介绍。





四个模块之间相互调用的关系如图1所示,Common向各个模块提供直接调用接口,Master向Client和Worker提供远程调用接口,Worker向Client提供远程调用接口(PS:这里需要注意的是Tachyon远程调用是通过thrift-0.91自动生成的,即tachyon.thrift包。thrift是RPC(RemoteProcedure Call)的一种Java实现,tachyon.thrift中的代码都是根据’tachyon/core/src/thrift/tachyon.thrift’文件由thrift工具自动生成的,在源码分析部分我们不会讨论thrift相关的内容,也不把tachyon.thrift归为上述任何一个模块中)。



图1. Client、Master、Worker、Common模块关系图

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



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

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group