最初,我不得不处理1.5 [TB]的数据.由于我只需要快速写入/读取(没有任何SQL),我设计了自己的平面二进制文件格式(使用python实现),并且轻松(并且愉快地)保存了我的数据并在一台机器上操作它.当然,为了备份,我添加了2台机器作为精确镜像(使用rsync).
目前,我的需求正在增长,并且需要构建一个能够成功扩展到20 [TB](甚至更多)数据的解决方案.我很乐意继续使用我的平面文件格式进行存储.它快速,可靠,并为我提供了所需的一切.
我关心的是复制,数据一致性等(显然,数据必须通过网络分发 – 并非所有数据都可以存储在一台机器上).
是否有任何现成的解决方案(基于Linux / python)允许我继续使用我的文件格式进行存储,但是会处理NoSql解决方案通常提供的其他组件吗? (数据一致性/可用性/易复制)?
基本上,我想确保我的二进制文件在整个网络中都是一致的.我正在使用60个核心双核机器的网络(每个机器有1GB RAM和1.5TB磁盘)
解决方法:
方法:使用Disco项目在Python中减少分布式地图
似乎是解决问题的好方法.我使用了the disco project类似的问题.
您可以在n个机器(进程)之间分发文件,并实现映射并减少适合您逻辑的函数.
The tutorial of the disco project,确切地描述了如何为您的问题实施解决方案.您将需要编写的代码很少,并且您可以保留二进制文件的格式.
另一个类似的选择是使用Amazon’s Elastic MapReduce