通过命令行创建文件
创建文件夹目录
./bin/alluxio fs mkdir /alluxiotest
将本地文件复制到docker中 用于上传alluxio
docker cp /Users/mengfanxiao/Documents/work/code/simple-alluxio/README.MD 52f831088dd8:/opt/alluxio-2.3.0
创建文件
./bin/alluxio fs copyFromLocal /opt/alluxio-2.3.0/README.MD /alluxiotest/
查看文件是否上传成功
使用java api
引入依赖
注:jar pom版本必须要和部署的alluxio版本一致
我部署的是 2.3.0版本的alluxio
java api依赖的版本号如下
<dependency> <groupId>org.alluxio</groupId> <artifactId>alluxio-core-client-fs</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.alluxio</groupId> <artifactId>alluxio-core-common</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.codahale.metrics</groupId> <artifactId>metrics-core</artifactId> <version>3.0.0</version> </dependency>
我在这块耽误了至少一下午时间 我用的是1.8版本的pom 去访问 2.3.0版本的alluxio 😂
至于为什么用1.8版本的 因为我百度了下 看到有一位网友用的1.8版本的 殊不知 人家部署的alluxio也是1.8版本的 。
因为版本不兼容的问题 会导致各种各样的问题 然后再去解决这些问题 肯定处理不好呀
因为本质是版本不兼容 所以这块浪费了一些时间
这里要反思下工作方法的问题
文件操作demo
##读取默认配置 AlluxioProperties alluxioProperties=ConfigurationUtils.defaults(); ##设置操作用户 alluxioProperties.set(PropertyKey.SECURITY_LOGIN_USERNAME, "alluxio"); AlluxioConfiguration alluxioConf = new InstancedConfiguration(alluxioProperties); ##目标文件 AlluxioURI inputPath = new AlluxioURI("/alluxiotest/README.MD"); ##输出文件 AlluxioURI outputPath = new AlluxioURI("/alluxiotest/hello.txt"); ##创建文件系统实例 FileSystem fileSystem = FileSystem.Factory.create(alluxioConf); ##打开目标文件 FileInStream is = fileSystem.openFile(inputPath); CreateFilePOptions options = CreateFilePOptions.newBuilder().setWriteType(WritePType.CACHE_THROUGH).setRecursive(true).build(); ##生成输出文件并上传到文件系统 FileOutStream os = fileSystem.createFile(outputPath, options); IOUtils.copy(is, os); is.close(); os.close();
查看操作结果
本地电脑访问上面的demo代码 需要访问 alluxio-worker:29999 所以需要本地host文件中配置下域名访问转发
查看host文件
sudo vim /private/etc/hosts 添加 127.0.0.1 alluxio-worker
刷新缓存
dscacheutil -flushcache