我已将hadoop1.0.3配置为3台具有完全分布式模式的计算机。在第一台计算机上,以下作业正在运行:
4316 SecondaryNameNode
4006 NameNode4159 DataNode
4619 TaskTracker4425 JobTracker
2)
2794 TaskTracker2672 DataNode
3)
3338 DataNode3447 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
请帮个忙。因为我在谷歌上搜索了很多,但找不到任何对我有帮助的东西。
1条答案
按热度按时间qgzx9mmu1#
如果您有实时需求或需要~ms的性能,hadoop或任何其他批处理系统都不是一个合适的选择。无论您的h/w有多好,mr作业有多好,运行mr作业时总会有一些初始延迟。这是不可避免的。原因是,当您提交mr作业时,在处理实际开始之前会发生很多事情,例如检查输入路径、创建拆分、创建Map任务等。
hbase提供实时数据访问是正确的。但是,如果您是通过mr访问hbase,则不适用。如果您确实需要~ms access,最好编写普通的java+hbase api程序。但你将无法利用当时先生提供的并行性。所以,在你做出任何决定之前,你基本上需要好好考虑。
像 Impala 和Phoenix城这样的工具可以帮助你,如果你有实时的需要。但是他们有自己的+和-。
我想在这里指出一件事。如果您的计划是一次访问不太大的数据,那么您完全可以将hbase与顺序java程序结合使用。但请记住,随机读/写总是比顺序存取成本更高。所以,三思而后行。