我目前正在从事一个长期项目,需要支持:
许多通过restful服务的快速读/写操作
一个不断读取和理解数据的分析引擎
至关重要的是,分析引擎的性能不受来自api调用的读/写量的影响。
正因为如此,我想我可能不得不使用“前端”数据库和某种“后端”数据仓库。我还需要一些像ElasticSearch或solr索引数据仓库中存储的数据。
问题是:
这是推荐的设置吗?另一种选择是什么?
如果是的话。。。
我正在考虑将hive或pig作为数据仓库,将ElasticSearch或solr作为搜索引擎。哪种组合能更好地协同工作?
最后。。。
我真的认为Cassandra是“前端”数据库。cassandra和hadoop之间的关系是什么?什么时候/为什么要把它们放在一起工作而不是只有cassandra?
请注意,我的目的不是要就其中哪一个更好展开辩论,而是要了解如何才能使它们更有效地发挥作用。如果有什么不同的话,主代码是用scala和java编写的。
我真的很感谢你的帮助。我基本上是一边学习,所有的评论都会很有帮助。
谢谢您。
2条答案
按热度按时间eoigrqb61#
首先让我们谈谈Cassandra
这是一个具有最终一致性的nosql数据库,对于您来说,这基本上意味着在存在集群间通信/可用性问题的情况下,cassandra集群中的不同节点可能具有不同的数据“快照”。然而,数据最终将是一致的。
既然您将其视为“前端”数据库,那么您需要了解的是如何对数据进行建模。cassandra可以利用索引,但是仍然需要预先定义访问模式。
通常,cassandra和hadoop之间没有关系(除了都是用java编写的),但是datastax发行版(企业版)直接从cassandra获得hadoop支持。
作为一个通用的工作流程,您将从您的“小”数据库中读取/写入最新的数据(比如说-过去24小时),以确保足够的性能(cassandra对它有很好的支持),并且您会将任何超过x(超过24小时)的数据移动到“长期存储”中,例如hadoop,在那里您可以运行各种map reduce等。
至于文本搜索,这实际上取决于你需要什么-ElasticSearch是一种解决和逆转的竞争。你可以看看他们是怎么比较的http://solr-vs-elasticsearch.com/
ha5z0ras2#
至于你的第三个问题,
我认为Cassandra更像是一个保存数据的数据库。
hadoop负责提供一个计算模型,让您在cassandra中分析您的大数据。所以把cassandra和hadoop结合起来是非常有帮助的。
还有其他方法可以考虑,比如与mongo和hadoop结合,因为mongo支持hadoop和它的数据之间的mongo连接器。
另外,如果您有一些搜索需求,也可以使用solr,直接从mongo生成索引。