我很高兴学习 Hadoop 及其周围的各种项目,目前我正在考虑两种不同的策略来构建一个系统来存储大量市场报价数据,我刚刚开始使用 Hadoop/HDSF和 HBase,但希望有人可以帮助我种下系统种子,以后我不必再使用这些技术进行垃圾处理。下面是我的系统和要求的概述,其中包含一些查询和数据使用用例,最后是我目前从我读过的小文档中对最佳方法的思考。这是一个开放式问题,我很乐意喜欢任何有见地的答案并接受最好的答案,请随时对以下任何或所有观点发表评论。- 邓肯·克雷布斯
系统要求 - 能够利用数据存储对系统进行历史回溯测试、历史数据图表和未来数据挖掘。一旦存储,数据将始终是只读的,需要快速数据访问,但在回测时不是必须的。
静态架构- 非常简单,我想从提要中捕获 3 种类型的消息:
- 时间戳,包括日期、日期、时间
- 报价包括Symbol,timestamp,ask,askSize,bid,bidSize,volume....(约40列数据)
- 交易包括Symbol,timestamp,price,size,exchange....(约20列数据)
数据插入用例- 来自实时市场数据流或通过代理 API 查找
数据查询用例- 下面演示了我想如何从逻辑上查询我的数据。
Get me all Quotes,Trades,Timestamps for GOOG on 9/22/2014
Get me all Trades for GOOG,FB BEFORE 9/1/2014 AND AFTER 5/1/2014
Get me the number of trades for these 50 symbols for each day over the last 90 days.
圣杯- MapReduce 可以用于以下这些用例吗?
通过分布式代理从原始市场数据生成元数据。例如,编写一个作业,计算存储在数据库中的所有股票和所有交易时段的平均交易量,间隔为 1 分钟。创建作业以让每个股票/会话都有一个代理,我告诉它应该为哪个股票和会话计算这个值。(这是 MapReduce 能做的吗???)
在代理的类路径上,我可以添加我自己的 util 代码,以便上面的用例可以将其值发布到中央存储库或消息服务器中吗?我可以将代理部署为 OSGI 捆绑包吗?
为每天早上在盘前交易前执行的不同类型的指标和分数创建不同类型的代理?
高频交易
如果有人能分享一些在高频交易系统环境中使用 Hadoop 的经验,我也很感兴趣。刚接触这项技术,我最初的感觉是 Hadoop 可以很好地存储和处理大量历史分时数据,如果有人使用它进行实时交易,我有兴趣了解更多!- 邓肯·克雷布斯