【问题标题】:why Hbase with Hadoop map reduce performance is slow?为什么 Hbase 与 Hadoop map 降低性能很慢?
【发布时间】:2013-07-24 07:04:08
【问题描述】:

我已经在 3 台机器上配置了 hadoop1.0.3 和完全分布式模式。在下面的第一台机器上,作业正在运行:

1) 4316 SecondaryNameNode4006 NameNode 4159 DataNode 4619 TaskTracker 4425 JobTracker

2) 2794 TaskTracker 2672 DataNode

3) 3338 DataNode 3447 TaskTracker

现在,当我在其上运行简单的 map reduce 作业时,执行 map reducejob 需要更长的时间。所以我在 Hadoop 上安装了 HBASE 层。现在我在 3 个集群上为 HBASE 提供了以下进程。

1)    5115 HQuorumPeer     5198 HMaster    5408 HRegionServer
2)    3719 HRegionServer    3617 HQuorumPeer
3)    2937 HQuorumPeer    2719 HRegionServer

当我在 HBASE 上为 1,00,000 个数据运行 map-reduce 作业时,它需要 1 分钟,而对于 1,00,00,000 个数据也是如此。现在我希望在几毫秒内得到结果。我应该采取哪些措施来改进?

我是新手,所以请帮助我或建议在 HBASE 或 hadoop 上进行一些分层,以便我可以在几毫秒内得到结果。

我正在总结以下记录:

hbase(main):007:0> describe 'weblog'
DESCRIPTION                                                                 ENABLED                                       
 'weblog', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER =>    true
 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '3', COMPRESSION => 'NONE'
 , MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CELLS =>
 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', 
  ENCODE_ON_DISK => 'true', BLOCKCACHE => 'true'}   

在博客表中 -> info:category,info:hits 是列。

info:category info:hits

web             2

mail           10

ftp             1

web             3

mail           11

ftp             2

数据将在 map reduce 中汇总并存储在另一个表中。

hbase(main):004:0> put 'weblog', 'row1', 'info:category', 'web'
0 row(s) in 0.0560 
hbase(main):004:0> put 'weblog', 'row1', 'info:hits', '2'
0 row(s) in 0.0560 

请对此提供帮助。因为我在 Google 上搜索了很多,但找不到任何对我有帮助的东西。

【问题讨论】:

  • 我真的不知道你真正想做什么。你想提高你的 hadoop 速度吗?您想提高 HBASE 数据的一致性吗?你能澄清一下吗?
  • 我只想要以毫秒为单位的数据检索速度。所以我在 hadoop 上应用了 HBASE 层。
  • 由于启动 MapReduce 作业通常需要几秒钟,因此很难将延迟降低到毫秒
  • 没错,但如果我可以将它减少到
  • 首先取决于您的硬件配置。例如,您每个节点的磁盘数量可以大大提高您的性能。请参阅cmg.org/measureit/issues/mit97/m_97_3.pdf 和您可以在网上找到的其他链接

标签: hadoop cloud hbase


【解决方案1】:

如果您有实时需求或需要以 ~ms 为单位的性能,Hadoop 或任何其他批处理系统都不是合适的选择。无论你的硬件有多好,你的 MR 工作有多好,当你运行 MR 工作时总会有一些初始延迟。这是不可避免的。原因是,当您提交 MR 作业时,在处理实际开始之前会发生很多事情,例如检查输入路径、创建拆分、创建地图任务等。

HBase 提供实时数据访问是正确的。但是如果你是通过 MR 访问 HBase 就不行了。如果你真的需要 ~ms 访问,你最好编写普通的 Java+HBase API 程序。但是您将无法利用 MR 提供的并行性。因此,您基本上需要在做出任何决定之前好好考虑一下。

如果您有实时需求,Impala 和 Phoenix 等工具可能会有所帮助。但他们有自己的 + 和 -。

我想在这里指出一件事。如果您的计划是一次访问 不太大 数据,那么您绝对可以将 HBase 与顺序 Java 程序一起使用。但请记住,与顺序访问相比,随机读/写总是带来更大的成本。所以,行动前要三思而行。

【讨论】:

  • 是的。要求是在一天内访问以 GB 为单位的大数据。因此需要处理这些数据并在几毫秒内给出结果。
  • 在这种情况下请看一下 Impala。在这种情况下,MR 不会有太大帮助。
  • 我猜 Impala 是 cloudera 的,可能不是免费版本。请推荐一些与之相关的开源技术。
  • Impala 来自 Cloudera 并且是开源的。你可以在这里找到更多关于 impala 的信息:cloudera.com/content/cloudera/en/products/cdh/impala.html
  • 经过一些修改,应该可以将它与 Apache Hadoop 一起使用。 Impala 是 100% 开源的(Apache 许可证)。
猜你喜欢
  • 1970-01-01
  • 2018-02-09
  • 2015-04-16
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多