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)
请帮忙.我搜索了很多,但找不到任何可以帮助我的东西.
如果您有实时需求或者需要~ms的性能,Hadoop或任何其他批处理系统都不是合适的选择.无论您的h/W有多好以及您的MR工作有多好,当您运行MR工作时总会有一些初始延迟.这是不可避免的.原因是,当您提交MR作业时,在处理实际开始之前会发生很多事情,例如检查输入路径,创建拆分,创建地图任务等.
HBase提供实时数据访问是正确的.但是如果你通过MR访问HBase,它并不成功.如果您确实需要~ms访问权限,那么最好编写正常的Java + HBase API程序.但是你将无法利用MR提供的并行性.所以,在你做出任何决定之前,你基本上需要好好思考.
如果您有实时需求,Impala和Phoenix等工具可能会有所帮助.但他们有自己的+和 - .
我想在此指出一件事.如果您的计划是一次访问不那么大的数据,那么您肯定可以将HBase与顺序Java程序一起使用.但请记住,与顺序访问相比,随机读/写总是带来更高的成本.所以,在行动之前要好好想想.