【发布时间】:2016-10-13 09:56:07
【问题描述】:
我是大数据领域的新手。
我们从团队那里得到建议,我们应该使用 hbase 而不是 RDBMS 以获得高性能。在将 RDMS 切换到 hbase 之前,我们不知道应该/必须考虑什么。有什么想法吗?
【问题讨论】:
标签: hadoop hbase rdbms bigdata
我是大数据领域的新手。
我们从团队那里得到建议,我们应该使用 hbase 而不是 RDBMS 以获得高性能。在将 RDMS 切换到 hbase 之前,我们不知道应该/必须考虑什么。有什么想法吗?
【问题讨论】:
标签: hadoop hbase rdbms bigdata
One of my favourite book describes..
回到@Whitefret 的最后一点:有一些东西叫做CAP theorm,基于它可以做出决定。
一致性(所有节点同时看到相同的数据)
可用性(每个请求都会收到关于它是成功还是失败的响应)
分区容错(尽管由于网络故障导致任意分区,系统仍继续运行)
但是,要将 RDBMS 切换到 HBASE,您可以使用 SQOOP。
【讨论】:
这是一个很难的问题,有很多事情需要考虑。
如果您能回答这些问题并且您认为 NoSQL 是一种练习,请询问您的团队对此有何看法。 NoSQL 数据库带有您在 SQL 世界中永远不会遇到的问题。他们应该首先建立一个原型来了解这一切是如何工作的,也许可以为他们提供一些培训。
总结:
- 查找是否需要非关系数据库
- 选择合适的(Hbase 真的是你需要的吗?为什么不考虑 Cassandra 或 MongoDB?)
【讨论】:
HBase 与所有 NoSQL DB 一样具有出色的新功能,但遗憾的是没有什么是免费的(更不用说金钱成本了)。
在 HBase 中,您确实应该检查是否可以使用 HBase 数据模型完成所有可能想要执行的查询。需要考虑的重要一点是模式设计(最重要的是行键的建模)。 我建议你阅读这篇非常好的论文:
我认为在 HBase 官方网站上可以找到对您问题的一个很好的答案。
“HBase 并不适合所有问题。
首先,确保您有足够的数据。 如果您有数亿或数十亿行,那么 HBase 是一个不错的选择。如果您只有几千/几百万行,那么使用传统的 RDBMS 可能是更好的选择,因为您的所有数据可能最终都在一个(或两个)节点上,而其余的集群可能处于空闲状态。
第二,确保您可以在没有 RDBMS 提供的所有额外功能的情况下生活(例如,类型化列、二级索引、事务、高级查询语言等)针对 RDBMS 构建的应用程序例如,不能通过简单地更改 JDBC 驱动程序将其“移植”到 HBase。考虑从 RDBMS 迁移到 HBase 作为完全重新设计,而不是移植。
第三,确保你有足够的硬件。即使是 HDFS 也不能很好地处理少于 5 个 DataNode(由于 HDFS 块复制,默认值为 3)以及 NameNode。
HBase 可以在笔记本电脑上很好地独立运行 - 但这应该仅被视为开发配置。 "
【讨论】: