通常建议为 HBase 和 MapReduce 使用不同的集群。对此更好的限定是:不要将提供实时请求的 HBase 与重 MR 工作负载并置。 OLTP 和 OLAP 优化的系统具有相互冲突的要求,而另一个将失去另一个,通常是前者。例如,短暂的延迟敏感磁盘读取将不得不排在较长的读取后面,这些读取试图挤出尽可能多的吞吐量。写入 HBase 的 MR 作业也会产生刷新和压缩,这反过来会使 Block Cache 中的块无效。
如果需要处理 MR 中的实时 HBase 集群中的数据,可以使用 CopyTable 发送增量,或使用复制在 OLAP 集群上实时获取新数据。在最坏的情况下,如果您确实需要并置两者,请将 MR 设置为使用比您通常配置的更少的 Map 和 Reduce 插槽,可能只需一个。
当 HBase 用于 OLAP 操作时,最好以强化的方式设置它,例如将 ZooKeeper 会话超时配置得更高并为 MemStores 提供更多内存(因为工作负载是因为块缓存不会被使用很多通常很长的扫描)。