在选择hbase之前应该考虑什么?
what should be considered before choosing hbase?
我是大数据新手space。
我们从团队那里得到建议,我们应该使用 hbase 而不是 RDBMS 以获得高性能。我们不知道在将 RDMS 切换到 hbase 之前要考虑什么 should/must。有什么想法吗?
这是一个很难的问题,需要考虑的事情很多。
- 你能优化你的 RDBMS 吗?添加索引,连接的非规范化成本太高......有很多途径需要考虑,我不是专家。
- 你的数据大吗?这是非常模糊的,并且您在 RDBMS 和大数据之间有一个 space,您无法确定使用哪一个。 RDBMS 仍然可以有效地处理数百万行。
- 你的数据需要关联吗?否SQL 数据库不使用关系,这对于来自 SQL 背景的人来说可能很难。有框架为 HBase 提供 SQL,但在使用大数据时拥有 RDBMS 模型通常是一个坏主意
如果您可以回答这些问题并且您认为否SQL 是练习,请询问您的团队对此有何看法。没有 SQL 数据库会带来您在 SQL 世界中永远不会遇到的问题。他们应该首先构建一个原型以了解所有这些是如何工作的,并可能为他们提供一些培训。
总结:
- 查找是否需要非关系数据库
- 选择合适的(Hbase真的是你需要的吗?为什么不考虑Cassandra或者MongoDB?)
One of my favourite book describes..
来到@Whitefret 的最后一点:有一些叫做 CAP theorm 的东西可以根据它做出决定。
一致性(所有节点同时看到相同的数据)
可用性(每个请求都会收到关于成功或失败的响应)
分区容忍度(由于网络故障任意分区,系统仍继续运行)
在此上下文中,Hbase 支持 CP
但是,要将 RDBMS 切换到 HBASE,您可以使用 SQOOP。
HBase 与所有 NoSQL DB 一样具有强大的新功能,但遗憾的是没有什么是免费的(甚至不提金钱成本)。
在 HBase 中,您确实应该检查是否所有您可能想要执行的查询都可以用 HBase 数据模型来填充。需要考虑的一个重要事项是模式设计(最重要的是行键的模型化)。
我建议你阅读这篇非常好的论文:
我认为可以在 HBase 官方网站上找到对您的问题的一个非常好的答案。
“HBase 并不适合所有问题。
首先,确保你有足够的数据。 如果您有数亿或数十亿行,那么 HBase 是一个不错的选择。如果您只有少数 thousand/million 行,那么使用传统的 RDBMS 可能是更好的选择,因为您的所有数据可能都集中在一个(或两个)节点上,并且集群的其余部分可能闲置。
其次,确保您可以在没有 RDBMS 提供的所有额外功能(例如,类型化列、二级索引、事务、高级查询语言等)的情况下生活例如,针对 RDBMS 构建的应用程序不能通过简单地更改 JDBC 驱动程序来 "ported" 到 HBase。考虑从 RDBMS 迁移到 HBase 作为完全重新设计而不是移植。
第三,确保你有足够的硬件。即使是 HDFS 也不能很好地处理少于 5 个 DataNode(由于诸如 HDFS 块复制之类的默认值为 3),再加上一个 NameNode。
HBase 可以 运行 在笔记本电脑上很好地独立运行 - 但这应该被视为仅开发配置。 “
我是大数据新手space。
我们从团队那里得到建议,我们应该使用 hbase 而不是 RDBMS 以获得高性能。我们不知道在将 RDMS 切换到 hbase 之前要考虑什么 should/must。有什么想法吗?
这是一个很难的问题,需要考虑的事情很多。
- 你能优化你的 RDBMS 吗?添加索引,连接的非规范化成本太高......有很多途径需要考虑,我不是专家。
- 你的数据大吗?这是非常模糊的,并且您在 RDBMS 和大数据之间有一个 space,您无法确定使用哪一个。 RDBMS 仍然可以有效地处理数百万行。
- 你的数据需要关联吗?否SQL 数据库不使用关系,这对于来自 SQL 背景的人来说可能很难。有框架为 HBase 提供 SQL,但在使用大数据时拥有 RDBMS 模型通常是一个坏主意
如果您可以回答这些问题并且您认为否SQL 是练习,请询问您的团队对此有何看法。没有 SQL 数据库会带来您在 SQL 世界中永远不会遇到的问题。他们应该首先构建一个原型以了解所有这些是如何工作的,并可能为他们提供一些培训。
总结:
- 查找是否需要非关系数据库
- 选择合适的(Hbase真的是你需要的吗?为什么不考虑Cassandra或者MongoDB?)
One of my favourite book describes..
来到@Whitefret 的最后一点:有一些叫做 CAP theorm 的东西可以根据它做出决定。
一致性(所有节点同时看到相同的数据)
可用性(每个请求都会收到关于成功或失败的响应)
分区容忍度(由于网络故障任意分区,系统仍继续运行)
在此上下文中,Hbase 支持 CP
但是,要将 RDBMS 切换到 HBASE,您可以使用 SQOOP。
HBase 与所有 NoSQL DB 一样具有强大的新功能,但遗憾的是没有什么是免费的(甚至不提金钱成本)。
在 HBase 中,您确实应该检查是否所有您可能想要执行的查询都可以用 HBase 数据模型来填充。需要考虑的一个重要事项是模式设计(最重要的是行键的模型化)。 我建议你阅读这篇非常好的论文:
我认为可以在 HBase 官方网站上找到对您的问题的一个非常好的答案。
“HBase 并不适合所有问题。
首先,确保你有足够的数据。 如果您有数亿或数十亿行,那么 HBase 是一个不错的选择。如果您只有少数 thousand/million 行,那么使用传统的 RDBMS 可能是更好的选择,因为您的所有数据可能都集中在一个(或两个)节点上,并且集群的其余部分可能闲置。
其次,确保您可以在没有 RDBMS 提供的所有额外功能(例如,类型化列、二级索引、事务、高级查询语言等)的情况下生活例如,针对 RDBMS 构建的应用程序不能通过简单地更改 JDBC 驱动程序来 "ported" 到 HBase。考虑从 RDBMS 迁移到 HBase 作为完全重新设计而不是移植。
第三,确保你有足够的硬件。即使是 HDFS 也不能很好地处理少于 5 个 DataNode(由于诸如 HDFS 块复制之类的默认值为 3),再加上一个 NameNode。
HBase 可以 运行 在笔记本电脑上很好地独立运行 - 但这应该被视为仅开发配置。 “