Hbase用Hadoop映射降低性能的原因是什么?

Ash*_*hti 2 cloud hadoop hbase

我已经使用完全分布式模式的3台计算机配置了hadoop1.0.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.now上安装了HBASE层我在3个集群上有以下HBASE进程.

1)    5115 HQuorumPeer     5198 HMaster    5408 HRegionServer
2)    3719 HRegionServer    3617 HQuorumPeer
3)    2937 HQuorumPeer    2719 HRegionServer
Run Code Online (Sandbox Code Playgroud)

在HBASE当我运行映射简化工作为1,00,000数据,它正在采取1分钟,同为1,00,00,000 data.now我想要的结果,在短短毫秒.我应该采取哪些措施进行改进?

我是一个新手,所以请帮助我或建议一些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'}   
Run Code Online (Sandbox Code Playgroud)

在weblog表中 - > info:category,info:hits是列.

info:category info:hits

web             2

mail           10

ftp             1

web             3

mail           11

ftp             2
Run Code Online (Sandbox Code Playgroud)

数据将在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 
Run Code Online (Sandbox Code Playgroud)

请帮忙.我搜索了很多,但找不到任何可以帮助我的东西.

Tar*_*riq 5

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

HBase提供实时数据访问是正确的.但是如果你通过MR访问HBase,它并不成功.如果您确实需要~ms访问权限,那么最好编写正常的Java + HBase API程序.但是你将无法利用MR提供的并行性.所以,在你做出任何决定之前,你基本上需要好好思考.

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

我想在此指出一件事.如果您的计划是一次访问不那么大的数据,那么您肯定可以将HBase与顺序Java程序一起使用.但请记住,与顺序访问相比,随机读/写总是带来更高的成本.所以,在行动之前要好好想想.