本文基于将alluxio 2.X集成到大数据发行版的经验,从各个方面介绍alluxio

什么是alluxio?

alluxio是一个以内存为中心的分布式虚拟存储系统

为什么需要alluxio?

借用官网的一张图来说明

最主要有两点功能:

  • 在数据分析系统和底层存储之间架起桥梁,alluxio像胶水一样,将不同的底层存储用统一的接口统一暴露给上层的计算引擎,起到了一个文件系统gateway的作用
  • 内存优先的分布式架构,领先其他方案数量级的差别,alluxio支持多级缓存,优先使用内存缓存,同时也可以设置ssd缓存,hdd缓存

alluxio的优势

  • 内存速度I/O,相对于磁盘I/O来说更加快速
  • 简化云存储和对象存储,解决了应用没有节点级缓存或者跨节点的分布式缓存
  • 简化数据管理,多个数据源可以使用alluxio进行统一的入口访问
  • 应用易于部署,应用侧不需要修改代码即可集成

alluxio服务的几个组件

组件名称 作用
client 集成到其他计算框架中,调用alluxio服务端
master 1.管理全局的元数据信息,包括:目录树(inode tree),块信息(block),worker的容量信息;2.worker发送心跳; 3.client获取元数据
worker 1.底层数据存储在worker中供客户端使用; 2.alluxio客户端不依赖底层存储
jobmaster 1.负责在Alluxio中异步调度许多重量级文件系统操作,提高master吞吐量;2.为后期复杂操作提供扩展性
jobworker 执行job master分配的任务,建议与worker放在同一节点上

alluxio读场景数据流

  • 命中本地worker
    client请求master获取存储的worker在本机,直接从本地内存或磁盘读取,避免远程交互
  • 命中远程worker
    client请求master获取存储的worker在其他节点的worker,client使用远程请求获取数据,并且在本地的worker缓存该数据(用户可通过配置禁用本地副本写入)
  • 未命中worker
    client请求master发现需要的数据没有缓存在alluxio中,client会通过worker从底层的存储系统中获取一个完整的数据块,异步缓存至alluxio,并且将数据返回给client

写入时的四种缓存策略

策略 注释
MUST_CACHE 只写入缓存
CACHE_THROUGH 同步写入缓存和底层存储系统
ASYNC_THROUGH 异步写入缓存和底层存储系统,调用jobmaster和jobworker完成
THROUGH 只写入底层存储

实践过程中需要注意的点

1.编译源码需要使用git clone下来的代码

编译过程中会用到git命令获取对应的tag,如果不使用源码的git仓库,则需要修改maven打包相关的配置

2.alluxio相关的配置项过多

集成的过程中需要的配置非常多,需要记录成功配置的信息,避免后边遇到配置问题时难处理

3.实际业务场景下alluxio的优劣

优势

  • 在底层文件系统压力比较大的情况下,能够缓解压力

劣势

  • 不适用写操作较多的场景

alluxio 1.X 和 2.X主要差别

从实践看来最主要的有两方面的差别

1.增加了jobmaster和jobworker组件

2.X版本为了增加alluxio服务的稳定性和扩展性,将比较重量级的操作都交给了jobmaster和jobworker组件进行,后边进行类似的操作也都放在jobmaster和jobworker中,当前有以下四个操作放在了jobmaster中:

  • Loading data into Alluxio from a UFS 从用户文件系统加载到alluxio
  • Persisting data to a UFS 将alluxio文件传递到UFS中
  • Replicating files within Alluxio 在alluxio中复制文件
  • Moving or copying data between UFS or Alluxio locations 在用户文件系统和alluxio中移动或者拷贝文件

2.高可用选主支持zookeeper和自带的选主逻辑

在alluxio1.X中,master选主只能支持zookeeper配置,在2.0版本中加入了自带的高可用逻辑,并且官方推荐使用这种方式,减少了对其他组件的依赖

Alluxio2.X简要介绍相关推荐

  1. Hadoop学习笔记一 简要介绍

    Hadoop学习笔记一 简要介绍 这里先大致介绍一下Hadoop.     本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一 ...

  2. 数据结构的简要介绍:图形如何工作

    by Michael Olorunnisola 通过Michael Olorunnisola 数据结构的简要介绍:图形如何工作 (A Gentle Introduction to Data Struc ...

  3. R语言效用分析 ( 效能分析、Power analysis)、除了pwr包之外还有其它包、例如、基因研究中的效能分析、MBESS包可用于各种形式的效能分析和最少样本量确定、其他效用分析包的简要介绍

    R语言效用分析 ( 效能分析.Power analysis).除了pwr包之外还有其它包.例如.基因研究中的效能分析(power analysis).MBESS包可用于各种形式的效能分析(power ...

  4. 简要介绍一下贝叶斯定理( Bayes‘ theorem)

    简要介绍一下贝叶斯定理( Bayes' theorem) 在引出贝叶斯定理之前,先学习几个定义: 条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率.条件概率表示为P(A|B) ...

  5. 各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言)

    各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言) 总结 a.一个语言或者一个东西能火是和这种语言进入某一子行业的契机有关.也就是说这个语言有没有解决社会急需的问题. ...

  6. [翻译]敏捷软件开发 一 之简要介绍

    敏捷软件开发一之简要介绍       原则.模式与实践是重要的,但是这三个要素都要由人来使得它们协同工作.正如Alistair Cockburn所说:"一个成功的项目,过程与技术永远都是排第 ...

  7. 导向滤波python_导向滤波(Guided Filter)简要介绍

    1.介绍 提到导向滤波,首先想到的是"何恺明",他的确是真大神,在图像领域,是中国人的骄傲,深度学习流行的时候,也是提出各种新算法,比如ResNets,而最近两年,深度学习的发展已 ...

  8. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划

    在Android系统中,提供了独特的匿名共享内存子系统Ashmem(Anonymous Shared Memory),它以驱动程序的形式实现在内核空间中.它有两个特点,一是能够辅助内存管理系统来有效地 ...

  9. Android进程间通信(IPC)机制Binder简要介绍和学习计划

    在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中.那么,不在同一个进程的 ...

最新文章

  1. 兔子生兔子递归的理解
  2. ai皮肤检测分数_智能AI皮肤检测仪三步走话术
  3. 建设网站套用模板优化难吗?
  4. Opengl-基本概念-转换矩阵坐标系(最难理解的两章)
  5. 实战项目五:抓取简书文章信息
  6. CentOS下screen 命令详解
  7. 七大你可能不知道的 Chrome 使用技巧
  8. 关于SAP Kyma在国内的落地情况
  9. JUnit3 一次运行多个测试类和进行多次重复测试:使用测试套件和RepeatedTest
  10. osgi 模块化_OSGI –模块化您的应用程序
  11. libxml2交叉编译问题及解决办法
  12. MAC下使用OpenSSL生成私钥和公钥
  13. 游戏筑基开发之简单迷宫行走(内附碰撞检测底层逻辑)
  14. matlab函数的线性化,[原创]非线性Simulink模型线性化方法讨论
  15. BLUES吉他学习笔记001 bluesrv[1-5]
  16. 【KnewOne Talk】芋头君:不想做码农
  17. JavaSE 知识大纲
  18. App渠道打包的两种方法
  19. Multiple Errors Encountered——Windows环境下anaconda新建environment时报错
  20. oracle把一个表的数据复制到另一个表中

热门文章

  1. entity framework 删除数据库出现错误的解决方法--最土但是很有效的方法
  2. 解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置)
  3. 为什么更改总和顺序会返回不同的结果?
  4. ios 销毁当前页面重新开启_利用Vue中keep-alive,快速实现页面缓存
  5. 电脑不能正常启动windows怎么办,电脑系统无法正常启动
  6. aidl使用_Android-Service学习鸭-入门实践-远程服务(bindService方式-AIDL)
  7. IoT:电子密本ECB和DES模式详解
  8. 在Makefile中进行宏定义-D
  9. 跳出多重循环_代码里的俄罗斯套娃 | 07 多重循环
  10. android gradle时间长,Android Studio gradle需要很长时间才能构建