Alluxio常用操作
前期准备
使用Alluxio Shell
Alluxio shell包含多种与Alluxio交互的命令行操作。
- 要查看文件系统操作命令列表。
- 使用ls命令列出Alluxio里的文件。例如列出根目录下所有文件。
alluxio fs ls /
- 使用copyFromLocal命令可以复制本地文件到Alluxio中。
alluxio fs copyFromLocal /home/test_input.txt /test_input.txt
命令执行后回显:Copied file:///home/test_input.txt to /test_input.txt
- 再次使用ls命令列出Alluxio中的文件,可以看到刚刚拷贝的test_input.txt文件。
命令执行后回显:
12 PERSISTED 11-28-2019 17:10:17:449 100% /test_input.txt
输出显示test_input.txt文件在Alluxio中,各参数含义为文件的大小、是否被持久化、创建日期、Alluxio中这个文件的缓存占比、文件名。
- 使用cat命令打印文件的内容。
alluxio fs cat /test_input.txt
命令执行后回显:Test Alluxio
Alluxio中的挂载功能
Alluxio通过统一命名空间的特性统一了对存储系统的访问。详情请参考:https://docs.alluxio.io/os/user/2.0/cn/advanced/Namespace-Management.html
这个特性允许用户挂载不同的存储系统到Alluxio命名空间中并且通过Alluxio命名空间无缝地跨存储系统访问文件。
- 在Alluxio中创建一个目录作为挂载点。
- 挂载一个已有的OBS文件系统到Alluxio(前提:给集群配置有OBS OperateAccess权限的委托,具体请参见配置存算分离集群(委托方式))。此处以obs-mrstest文件系统为例,请根据实际情况替换文件系统名。
alluxio fs mount /mnt/obs obs://obs-mrstest/data
Mounted obs://obs-mrstest/data at /mnt/obs
- 通过Alluxio命名空间列出OBS文件系统中的文件。使用ls命令列出OBS挂载目录下的文件。
alluxio fs ls /mnt/obs
38 PERSISTED 11-28-2019 17:42:54:554 0% /mnt/obs/hive_load.txt 12 PERSISTED 11-28-2019 17:43:07:743 0% /mnt/obs/test_input.txt
新挂载的文件和目录也可以通过Alluxio WebUI查看。
- 挂载完成后,通过Alluxio统一命名空间,可以无缝地从不同存储系统中交互数据。例如,使用ls -R命令,递归地列举出一个目录下的所有文件。
alluxio fs ls -R /
0 PERSISTED 11-28-2019 11:15:19:719 DIR /app-logs 1 PERSISTED 11-28-2019 11:18:36:885 DIR /apps 1 PERSISTED 11-28-2019 11:18:40:209 DIR /apps/templeton 239440292 PERSISTED 11-28-2019 11:18:40:209 0% /apps/templeton/hive.tar.gz ..... 1 PERSISTED 11-28-2019 19:00:23:879 DIR /mnt 2 PERSISTED 11-28-2019 19:00:23:879 DIR /mnt/obs 38 PERSISTED 11-28-2019 17:42:54:554 0% /mnt/obs/hive_load.txt 12 PERSISTED 11-28-2019 17:43:07:743 0% /mnt/obs/test_input.txt .....
输出显示了Alluxio文件系统根目录(默认值是HDFS的根目录,即hdfs://hacluster/)中来源于挂载存储系统的所有文件。/app-logs和/apps目录在HDFS文件系统中,/mnt/obs/目录在OBS中。
用Alluxio加速数据访问
由于Alluxio利用内存存储数据,它可以加速数据的访问。例如:
- 上传一个文件test_data.csv(文件是一份记录了食谱的样本)到obs-mrstest文件系统的/data目录下。通过ls命令显示文件状态:
alluxio fs ls /mnt/obs/test_data.csv
294520189 PERSISTED 11-28-2019 19:38:55:000 0% /mnt/obs/test_data.csv
输出显示了该文件在Alluxio中缓存占比为0%,即不在Alluxio内存中。
- 统计该文件中单词"milk"出现的次数,并计算耗时。
- 第一次读取数据后会将数据放在内存中,Alluxio再次读取时可以提高访问该数据的速度。例如:在通过cat命令获取文件后,用ls命令再查看文件的状态。
alluxio fs ls /mnt/obs/test_data.csv
294520189 PERSISTED 11-28-2019 19:38:55:000 100% /mnt/obs/test_data.csv
输出显示文件已经100%被加载到Alluxio中。
- 再次访问该文件,统计单词“eggs”出现的次数,并计算耗时。
time alluxio fs cat /mnt/obs/test_data.csv | grep -c eggs
59510 real 0m5.777s user 0m5.992s sys 0m0.592s
对比两次耗时可以看出存储在Alluxio内存中的数据,数据访问耗时明显缩短。