alluxio短路读

恩慈2年前技术文章2031

原理

当Client和Worker在同一节点时,客户端对本地缓存数据的读写请求可以绕过RPC接口,使本地文件系统可以直接访问Worker所管理的数据,这种情况被称为短路写,速度比较快,如果该节点没有Worker在运行,则Client的读写需要通过网络访问其他节点上的Worker,速度受网络宽带的限制。

当应用程序需要读取的数据已经被缓存在本地Alluxio worker上时,即为本地缓存命中。应用程序通过Alluxio client请求数据访问后,Alluxio client会向 Alluxio master检索储存该数据的Alluxio worker位置。如果本地Alluxio worker存有该数据,Alluxio client将使用”短路读”绕过Alluxio worker,直接通过本地文件系统读取文件。短路读可避免通过TCP socket传输数据,并能提供内存级别的数据访问速度。短路读是从Alluxio读取数据最快的方式。
在默认情况下,短路读需要获得相应的本地文件系统操作权限。当Alluxio worker和client是在容器化的环境中运行时,可能会由于不正确的资源信息统计而无法实现短路读。在基于文件系统的短路读不可行的情况下,Alluxio可以基于domain socket的方式实现短路读,这时,Alluxio worker将通过预先指定的domain socket路径将数据传输到client

image.png

配置

  • 写参数: alluxio.user.file.writetype.default

  1. CACHE_THROUGH:数据被同步写入AlluxioWorker和底层存储

  2. MUST_CACHE:数据被同步写入AlluxioWorker,不写底层存储

  3. THROUGH:数据只写底层存储,不写入AlluxioWorker

  4. ASYNC_THROUGH:数据同步写入AlluxioWorker并异步写底层存储(速度快)

  • 读参数: alluxio.user.file.readtype.default

    1. CACHE_PROMOTE:数据在Worker上,则被移动到Worker的最高层,否则创建副本到本地Worker

    2. CACHE:数据不在本地Worker中时直接创建副本到本地Worker

    3. NO_CACHE:仅读数据,不写副本到Worker

    相关文章

    MySQL性能优化(二)优化排序操作

    MySQL性能优化(二)优化排序操作

    排序是数据库的基本功能。一个例子SELECT * FROM audit_log  WHERE user_id = xxx AND&nb...

    MySQL 同步方式

    同步方式一、分类同步大致为异步、半同步、增强版同步、全同步;二、详情1.异步复制MySQL 默认的复制策略,Master处理事务过程中,将其写入Binlog就会通知Dump thread线程处理,然后...

    RAC和DG的选择

    RAC和DG的选择

    RAC和DG的选择一、RAC1、什么是RAC实时应用集群,是负载均衡模式,两台机器同时工作参与到业务系统中,如果其中一个节点出现问题,所有的会话连接会转到另一个节点,保证业务系统正常运行,但是数据只有...

    MySQL DBA 常用工具 SQL

    MySQL DBA 常用工具 SQL

    【前言】本篇文章介绍一些 MySQL 管理的实用语句及适用的场景。SQL 基于 MySQL 5.7 版本。1. 长事务事务长时间未提交,即使状态为Sleep也可能造成一些锁等待的问题,使用该查询可以查...

    Ambari开启kerberos+安全方案

    Ambari开启kerberos+安全方案

    安装Kerberosserver节点安装kerberos相关软件yum install -y krb5-server krb5-workstation krb5-libsclient节点安装yum i...

    Containerd OCI runtime create failed

    Containerd OCI runtime create failed

    1、背景Kubernetes 集群新增 worker 节点(centos7、containerd),发现容器一直启动不起来。2、报错信息经查看系统 message 日志发现如下报错信息:rpc err...

    发表评论    

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。