首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

HBase HDFS 的查验

2012-10-07 
HBase HDFS 的检验对于0.94版本来说,有几个地方会发生检验(1)HFile (HRegionServer里面)(2)FSInputChecker

HBase HDFS 的检验

对于0.94版本来说,有几个地方会发生检验

(1)HFile (HRegionServer里面)

(2)FSInputChecker (DFSClient里面)

?

DFSClient :

?

非本地读取,通过DataNode读取,RemoteBlockReaderDisk -> DataNode -> ?DFSClient(RemoteBlockReader) -> HFile (HRegionServer)Disk -> DataNode -> ?DFSClient(RemoteBlockReader) -> HLog (HRegionServer)
本地读取,BlockReaderLocal ?Disk -> ?DFSClient(BlockReaderLocal) -> HFile (HRegionServer)Disk -> ?DFSClient(BlockReaderLocal) -> HLog (HRegionServer)
其中:RemoteBlockReader 和?BlockReaderLocal 都继承自FSInputChecker?
HFileSystem:里面有两个FileSystem实例 一个是 fs,一个是 FileSystem noChecksumFs; ? // read hfile data from storage(1)?noChecksumFs?用于HFile(2) fs 可以用于HLog、以及其他文件目前0.94.1以及之前的版本noChecksumFs 和?fs?使用相同的配置(configuration),只有verifyChecksum不同
support checksums in HBase block cachehttps://issues.apache.org/jira/browse/HBASE-5074

?

?

public?static?final?String?HBASE_CHECKSUM_VERIFICATION?=??????"hbase.regionserver.checksum.verify";默认为true,所以HRegionServer通过DFSClient读取到HFile的数据后会进行检验。
通过DataNode读取(RemoteBlockReader)是否检验由?DistributedFileSystem.verifyChecksum?来决定
本地读取,DFSClient直接读取文件,是否检验由?public?static?final?String??DFS_CLIENT_READ_SHORTCIRCUIT_SKIP_CHECKSUM_KEY?? ? ?=?"dfs.client.read.shortcircuit.skip.checksum";?来决定
如果DFS_CLIENT_READ_SHORTCIRCUIT_KEY = "dfs.client.read.shortcircuit";设置为true,并且DataNode是local的,那么DFSClient会先跟DataNode通信获取block的path,然后自己直接读取block(本地读取,BlockReaderLocal)。?

Skip checksum is broke; are we double-checksumming by default?https://issues.apache.org/jira/browse/HBASE-6868

关于本地读的建议:
Read short circuit should always be enabled, unless you’re constantly trashing the cache.
来自committer Jean-Daniel Cryans,
http://files.meetup.com/1350427/hug_ebay_jdcryans.pdf

热点排行