问题标签 [distributed-filesystem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - 让人们在 AWS 负载平衡环境中上传文件的最佳方式是什么?
假设您在 AWS 中运行 instance1、instance2 和 instance3。
它们都在运行 Apache,您运行的 Web 应用程序需要允许用户上传图像,这在许多项目中都是如此。
此外,当您显示图像时,您需要将其裁剪为正确的大小,因此您基本上需要确保所有实例始终可以访问相同的文件。
假设一个用户将一张图片上传到instance1,另一个用户正在访问一个页面,其中相同的图像以100x100 大小显示,他点击了instance2。另一个用户试图在 instance3 上查看 300x300 大小的相同图像。以及许多其他不易预测的尺寸。
所以你基本上需要一个分布式文件系统,我使用的是 Gluster FS。因此,所有实例都可以访问相同的文件,当请求查看图像时,我有一个 PHP 脚本来检查图像是否已经调整到给定的尺寸,如果是,它将显示它们,如果不是,它将调整大小它然后再次显示。
Gluster FS 运行非常顺利,我对此非常满意,但我认为我正在重新发明轮子,AWS 应该为此提供某种解决方案。使用 top 命令我可以看到 glusterfs 总是在使用我的一些 CPU。
我还使用 CloutFront 缓存我的调整大小脚本的输出,这在很大程度上减少了服务器负载,但 Gluster FS 的运行成本仍然很高。
你可以在没有 Gluster FS 的情况下使用 rsync 和某种 cron 作业来做同样的事情,但这是很多工作而且不是很可靠,因为你需要知道什么时候触发 rsyncing 过程,你仍然不会得到很大的好处Gluster FS 提供的。我也尝试过 s3fs,我只想说这绝对是一场噩梦。
与 Gluster FS 相比,NFS 驱动器似乎也非常原始,我认为它们使用 UDP,因此它们将您的数据视为无关紧要。
那么做这样的事情的最好方法是什么?我试图找到 AWS 提供的分布式文件系统,因为我认为许多开发人员会遇到相同或相似的问题,但没有任何问题。
您可能会说只是上传到 s3,但 s3 对我没有帮助,我需要知道图像是否已经调整大小,然后调整大小并服务或只是服务,所以我需要一些我可以编写脚本的东西。
你也可能会说,你为什么不先调整所有图像的大小,然后将它们全部上传到s3,我不能这样做的原因是
- 大约有 100 万张图像和 100 种尺寸,所以我们正在寻找大量要转换的文件
- 可能每天都会添加新的尺寸,因此先调整尺寸的策略不起作用
performance - Azure 网站上的文件系统是分布式的吗?
我知道几乎所有非静态数据都首选其他存储解决方案。
但是,我仍然看到一些人使用 Azure 网站服务中提供的文件系统,该文件系统目前达到 10GB 的空间,特别是对于顽固的用户App_Data
。
- 它是真正分布式的,还是根本无法扩展?我真的很难找到一个明确的答案。
出于好奇,如果不是:
- 它至少被复制了吗?
- 如果是这样,它是在实例之间复制的,还是完全专用的服务?
如果它也没有被复制,
- 是否有一个我们应该希望永远不会消亡的主实例,或者它是否又是一个与应用程序实例完全隔离的专用服务?
谢谢。
hadoop - 带有分布式文件系统的 HBASE?
很明显,HBASE 是将其文件保存在 HDFS 中的数据库。HBASE 甚至可以与其他分布式文件系统集成吗?如果是,那么底层方法应该是什么?例如,如果我将 Hadoop 与 Ceph 一起使用,那么 HBASE 可以将其数据保存在 CEPH fs 中。
hadoop - HDFS的分裂逻辑?
FileInputFormat 类的 isSplittable() 方法有什么意义? http://hadoop.apache.org/docs/r2.2.0/api/index.html
hdfs - 分布式文件系统中的类似 Inotify 的功能
正如标题所示,我想在某些事件发生时触发通知。
上面的事件可以是用户定义的,例如updating specified files in 1-miniute
.
如果文件存储在本地,我可以通过系统调用轻松完成inotify
,但情况是文件位于分布式文件系统上,例如 mfs..
怎么做?我想知道是否有一些解决方案或开源项目可以解决这个问题。谢谢。
distributed-transactions - 三阶段提交协议 - 分布式系统
我在一次采访中被问到这个问题。我很好奇这个问题的答案:
如果在发送 pre-commit 消息后的 3 阶段提交协议中,协调器收到所有资源管理器的肯定响应,并且当协调器发送提交命令时,其中一个资源管理器未能提交,会发生什么情况?
对此的任何想法将不胜感激。
谢谢。
high-availability - 用于存储和检索的分布式文件系统
我需要一个高度可用的分布式文件系统,可以存储和检索各种类型的文档,并且应该能够水平扩展。什么是理想的选择?在此之上应该使用哪些数据层来检索和插入?
java - XtreemFS 的 Java 客户端
我正在构建一个需要存储和检索大文件的 Java Web 应用程序。我希望能够为未来扩展应用程序,因此我计划使用 XtreemFS http://www.xtreemfs.org/作为分布式文件系统。它提供了我需要的冗余和速度。
我希望为它找到一个直接的 Java 客户端,但找到一个有点麻烦。XtreemFS 有一些高级功能允许控制冗余级别,并且通过将文件设置为只读可以减少锁定开销。
如果我找不到 Java 客户端,那么我将在我的服务器上挂载 XtreemFS 数据存储,像对待本地存储一样对待它,并使用基本的 java.io.* 类从中读取和写入文件,就好像它是只是磁盘上的文件。
关于使用 XtreemFS 的最佳实践有什么建议吗?
rest - 实现 Blob 存储
我正在寻找一种方法来为我正在构建的应用程序实现(提供)blob 存储。
我需要的是以下内容:
- 使用简单的键(如主键;我不需要层次结构)进行访问;
- 大小为 1KiB 到 1GiB 的 Blob。这两种情况都必须快速且受支持(因此基于大块工作的系统,就像我相信的 Hadoop 一样,已经过时了);
- 对 blob 的流式访问(即能够读取 blob 的随机部分);
- 通过 REST 访问;
- 没有最终的一致性。
我的基础设施要求如下:
- 水平扩展,但是分片是可以的(所以不需要系统原生支持水平扩展);
- 高可用性(因此复制和自动故障转移);
- 我无法使用 Azure 或 Google blob 存储;这是一个私有云应用程序。
我准备自己实现这样的系统,但我更喜欢开箱即用的系统来实现这个或至少部分实现。
例如,我查看了 Hadoop,但它具有最终的一致性,所以已经过时了。似乎有许多 Linux DFS 实现,但这些都使用挂载工作,我只需要 REST 访问。此外,看起来 blob 大小的范围使事情变得困难。
我可以为此使用什么系统?
java - 分布式文件系统类使用本地而不是分布式类
我的代码中有这一行:
otherArgs[1]
有这个值:hdfs://master:54310/input/results
我收到此异常:
注意:我尝试在new Path(otherArgs[1])
没有 URI 的情况下使用,但得到了完全相同的错误!
谢谢,-K