Hadoop将通过从Hbase读取数据并将数据写入来运行大量作业 HBase的。假设我有100个节点,那么有两种方法可以构建我的Hadoop / Hbase 簇:
100个节点hadoop& hbase集群(1大Hadoop& Hbase)
分离数据库(Hbase),然后我们有两个集群: 60个节点Hadoop集群和40个节点Hbase集群(1个Hadoop + 1个Hbase)
哪个选项更好?为什么?
感谢。
答案 0 :(得分:1)
我会说选项2 更好。
我的理由 - 即使您的要求主要是运行大量mapreduce作业来从hbase读取和写入数据,但有很多为hbase优化那些读取和写入您提交的作业的事情。 Hmaster必须经常进行负载平衡,除非您的区域键完全平衡。表热点可以在那里。对于Regionserver,会有重大压缩,如果你的jvm技能不那么好,那么偶尔停止世界可能会发生垃圾收集。所有地区可能会同时开始分裂。您的区域服务器可能会停机等等。
模拟点是 - 调整hbase需要时间。如果您只有一个专用于hbase的节点,则上述问题的可能性会更高。拥有多个节点总是更好,因此所有性能压力都不适用于一个节点。顺便说一句,hbase的得分点本质上是分布式的,你不会想要杀掉它。所有人说,你可以试验一下hadoop和hbase之间的节点比例 - 可能是70:30或80:20。里程可能会根据您的申请要求而有所不同。
答案 1 :(得分:1)
分离HBase和Hadoop的主要原因是它们具有不同的使用场景 - 即HBAse以低延迟进行随机读写,而Hadoop进行连续批处理。在这种情况下,不同的访问模式可能会相互干扰,最好将群集分开。
如果你只是在批处理模式下使用HBase,你可以使用相同的集群(并且可能使用HBase重新思考,因为它比批处理中的原始hadoop慢)。
请注意,无论您走的是什么路径,都需要沿Chandra Kant提到的线调整HBase