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

相关文章

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

关于MyISAM和InnoDB对比分析

《关于MyISAM和InnoDB对比分析》:本文主要介绍关于MyISAM和InnoDB对比分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录开篇:从交通规则看存储引擎选择理解存储引擎的基本概念技术原理对比1. 事务支持:ACID的守护者2. 锁机制:并发控制的艺