1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| 单层存储 alluxio.worker.memory.size=16GB alluxio.worker.tieredstore.level0.dirs.path=/mnt/ramdisk,/mnt/ssd1,/mnt/hdd alluxio.worker.tieredstore.level0.dirs.mediumtype=MEM,SSD,HDD alluxio.worker.tieredstore.level0.dirs.quota=16GB,100GB,100GB
多层存储 alluxio.worker.tieredstore.levels=2 alluxio.worker.tieredstore.level0.alias=MEM alluxio.worker.tieredstore.level0.dirs.path=/mnt/ramdisk alluxio.worker.tieredstore.level0.dirs.mediumtype=MEM alluxio.worker.tieredstore.level0.dirs.quota=100GB alluxio.worker.tieredstore.level0.watermark.high.ratio=0.9 alluxio.worker.tieredstore.level0.watermark.low.ratio=0.7
alluxio.worker.tieredstore.level1.alias=HDD alluxio.worker.tieredstore.level1.dirs.path=/mnt/hdd1,/mnt/hdd2,/mnt/hdd3 alluxio.worker.tieredstore.level1.dirs.mediumtype=HDD,HDD,HDD alluxio.worker.tieredstore.level1.dirs.quota=2TB,5TB,500GB alluxio.worker.tieredstore.level1.watermark.high.ratio=0.9 alluxio.worker.tieredstore.level1.watermark.low.ratio=0.7
I/O选项 读取方式 CACHE_PROMOTE: 默认 数据在Alluxio,移动到最高层存储 不在Alluxio,从UFS读取数据并写入到最高层存储 CACHE: 数据在Alluxio,直接读取 不在Alluxio,从UFS读取数据并写入到最高层存储 NO_CACHE: 数据直接从UFS读取,不存入Alluxio 写入方式 CACHE_THROUGH: 数据同步写入Alluxio和UFS MUST_CACHE: 数据仅写入Alluxio THROUGH: 数据仅写入UFS ASYNC_THROUGH: 数据写入Alluxio后,异步写入UFS alluxio.user.file.replication.durable,数据同步写入多个Alluxio Worker,异步写入UFS
定位策略 alluxio.user.block.write.location.policy.class LocalFirstPolicy: 本地Worker优先(默认策略) 优先本地节点,容量不够,从存活worker中随机选择 MostAvailableFirstPolicy: 最大可用容量优先 选择最大可用容量的节点 RoundRobinPolicy: 循环遍历策略 循环方式选择下一可用节点,跳过无足够容量的节点 SpecificHostPolicy: 指定主机策略 选择特定主机上的Worker,不能设置为默认策略 自定义策略 继承alluxio.client.block.policy.BlockLocationPolicy 使用ASYNC_THROUGH写类型,一个文件的所有blocks必须写入统一个worker
数据回收 Worker存储满时,会为新数据释放空间 异步回收,每个worker存在一个周期性的空间存储线程 利用率达到上限,进行数据回收直到利用率降到下限 存储每层都有回收的上限和下限使用率 alluxio.worker.tieredstore.level0.watermark.high.ratio=0.9 alluxio.worker.tieredstore.level0.watermark.low.ratio=0.75 回收策略(alluxio.worker.evictor.class) Greedy: 释放任意块,直到释放所需的大小 LRU: 默认,释放最近最少使用的块,直到释放所需的大小 LRFU: 根据最近使用和最不频繁使用的可配置权重释放块,直到释放所需的大小为止 PartialLRU: 基于最近最少使用的释放,但将选择具有最大可用空间的存储目录,仅从那里释放,直到释放所需的大小为止
数据生命周期 free 从Alluxio缓存中删除数据,但不删除UFS上的数据 alluxio fs free DATA_PATH load 将数据从UFS加载到Alluxio缓存 alluxio fs load DATA_PATH persist 将Alluxio存储中的数据写回到UFS alluxio fs persist DATA_PATH TTL(alluxio.master.ttl.checker.interval=10m) 定期(默认1h)检查文件是否达到了TTL过期 设置TTL alluxio fs setTtl DATA_PATH 86400000 指定一天后释放空间 alluxio fs setTtl --action free DATA_PATH 86400000 锁定/解锁文件 防止被回收,确保重要文件一直存储在Alluxio中 alluxio fs pin DATA_PATH alluxio fs unpin DATA_PATH
副本控制 被动副本: Alluxio根据实际情况调整副本数 主动副本: 用户控制副本数的上下限 alluxio.user.file.replication.min: 最小副本数 默认0,当文件不再使用可以被回收 配置大于0时 读取时,多个客户端要读取文件,提供更好的性能 写入时,确保节点故障时数据持久性 alluxio.user.file.replication.max: 最小副本数 默认-1,无限制 超过限制时,移出多余副本数 设置副本数 alluxio fs setReplication -min 3 -max 5 DATA_PATH alluxio fs setReplication -max -1 DATA_PATH 检查文件副本数 alluxio fs stat DATA_PATH
|