为什么hbase与hadoop map reduce的性能很慢?

ryevplcw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(344)

我已将hadoop1.0.3配置为3台具有完全分布式模式的计算机。在第一台计算机上,以下作业正在运行:

  1. 4316 SecondaryNameNode 4006 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上为100000个数据运行map reduce作业时,它需要1分钟,对于1000000个数据也是如此。我应该采取什么措施来改进?
我是一个新手,所以请帮助我或建议一些层次的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 are 列。 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

请帮个忙。因为我在谷歌上搜索了很多,但找不到任何对我有帮助的东西。
qgzx9mmu

qgzx9mmu1#

如果您有实时需求或需要~ms的性能,hadoop或任何其他批处理系统都不是一个合适的选择。无论您的h/w有多好,mr作业有多好,运行mr作业时总会有一些初始延迟。这是不可避免的。原因是,当您提交mr作业时,在处理实际开始之前会发生很多事情,例如检查输入路径、创建拆分、创建Map任务等。
hbase提供实时数据访问是正确的。但是,如果您是通过mr访问hbase,则不适用。如果您确实需要~ms access,最好编写普通的java+hbase api程序。但你将无法利用当时先生提供的并行性。所以,在你做出任何决定之前,你基本上需要好好考虑。
像 Impala 和Phoenix城这样的工具可以帮助你,如果你有实时的需要。但是他们有自己的+和-。
我想在这里指出一件事。如果您的计划是一次访问不太大的数据,那么您完全可以将hbase与顺序java程序结合使用。但请记住,随机读/写总是比顺序存取成本更高。所以,三思而后行。

相关问题