对于0.94版本来说,有几个地方会发生检验
(1)HFile (HRegionServer里面)
(2)FSInputChecker (DFSClient里面)
DFSClient :
非本地读取,通过DataNode读取,RemoteBlockReader
Disk -> 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 cache
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?
分享到:
相关推荐
1. **硬件容错**:HDFS 能够在硬件出现故障时自动检测并恢复,通过数据块的冗余备份实现容错。 2. **流式数据读写**:HDFS 适合批量处理,而非交互式或随机读写,因此数据以流的形式进行读取,提高吞吐率。 3. **...
### Facebook开发HDFS和HBase的新进展:深度解析与创新亮点 #### HDFS与HBase在Facebook的应用背景 Facebook作为全球领先的社交网络平台,每天处理着海量的数据交互,包括用户生成的内容、广告数据、社交图谱等。...
HDFS的设计原则包括:故障检测与恢复、数据局部性和高并发读写能力。 接下来,Bigtable是谷歌的一个分布式数据库系统,专为处理大规模结构化数据而设计。它采用了类似于Google BigTable的模型,支持实时在线查询,...
0.98.3是HBase的一个稳定版本,提供了增强的性能和更多的特性,如更强大的RegionServer,改进的Compaction机制,以及更好的监控和故障检测。 4. **大数据处理**: HBase与Hadoop结合,为大数据处理提供了一种强大...
1. **分布式架构**:HBase采用Master-Slave架构,由一个HMaster主节点负责区域服务器(RegionServer)的管理、故障检测和负载均衡,多个RegionServer存储实际的数据,提供读写服务。 2. **表和列族**:HBase的表是...
HBase 建立在 Hadoop 分布式文件系统(HDFS)之上,利用 HDFS 的高容错性和大规模数据存储能力。HBase 通过将数据分布在多个节点上来实现水平扩展,这使得它可以处理 PB 级的数据量。由于 HDFS 的特性,HBase 能够在...
在HBase中,Zookeeper用于管理集群状态,包括节点的注册、主节点选举以及故障检测等,确保系统的高可用性。 在HBase 1.3.0中,有以下几个关键特性值得关注: 1. 支持Region Server的动态调整:管理员可以在线添加...
HBase基于Hadoop文件系统(HDFS)提供高可用性和容错性,其设计目标是支持实时读写操作,适用于大规模数据处理场景。 二、多线程与HBase 1. **批量操作**:在HBase中,多线程可以用于批量写入和读取操作。例如,...
2. **Zookeeper**:在HBase中,Zookeeper负责协调和管理集群状态,包括HRegion服务器的注册和监控、故障检测以及元数据的存储等。 四、HBase与Hadoop的紧密关系 HBase是Hadoop生态系统的一部分,它利用HDFS作为...
- HBase依赖Zookeeper进行元数据管理、故障检测和集群协调。 - Zookeeper记录了Master Server和Region Server的信息,确保集群的高可用性。 7. **MapReduce集成** - HBase与Hadoop的MapReduce框架紧密集成,支持...
2. **水平扩展性**:HBase是基于HDFS(Hadoop Distributed File System)构建的,可以轻松地在多台服务器上进行水平扩展,通过增加节点来提高存储和处理能力。 3. **高可用性**:HBase利用Zookeeper进行主节点选举...
- **软件资源**:Java运行环境(JRE)、Hadoop(包括HDFS和MapReduce)、HBase本身、Zookeeper。 - **网络资源**:所有节点之间需要有良好的网络通信,以保证数据同步和心跳检测。 5. **部署步骤**: - 安装并...
Hadoop提供了HDFS(Hadoop Distributed File System)作为HBase的数据存储层。 2. **环境配置**:解压`hbase-1.1.5-bin.tar`后,你需要将HBase的bin目录添加到系统的PATH环境变量中,以便在命令行中直接运行HBase...
2. 自动故障转移:HBase具有自动故障检测和恢复功能,保证了高可用性。 3. 一致的读写:HBase利用Hadoop的HDFS作为底层存储,并提供了一致的数据读写操作。 4. 集成Hadoop生态系统:作为Hadoop生态系统的一部分,...
Apache HBase 是一个非关系型的分布式数据库,基于谷歌的 Bigtable 模型构建,运行在 Hadoop 文件系统(HDFS)之上。HBase 提供高吞吐量的随机读写能力,支持大规模数据存储,并且能够对数据进行快速检索。它的设计...
在写入过程中,HBase还监控了操作的时间,如果超过1秒,系统会发出警告,以检测潜在的性能问题。 在HBase的生命周期中,当Region的MemStore达到一定大小后,会触发flush操作,此时内存中的数据将被写入HLog,随后...
- **过时数据节点检测**: HDFS通过数据节点定期发送块报告给名称节点来检测。如果10分钟内未收到报告,则数据节点会被认为过时,设置`dfs.namenode.avoid.read.stale.datanode`和`dfs.namenode.avoid.write.stale....
1. **分布式存储**:HBase将数据分布在多台服务器上,通过Hadoop的HDFS(Hadoop Distributed File System)作为底层存储,实现高可用性和容错性。 2. **列族存储**:不同于传统的关系型数据库,HBase按照列族存储...
在Ambari中,你可以预定义HBase的服务配置,包括Zookeeper、HDFS、YARN等依赖服务的设置,以及HBase自身的集群参数。 三、HBase的编译 1. 环境准备:确保你已安装Java开发环境(JDK)、Maven和Git。Ambari 2.7.x...
HBase依赖于Zookeeper进行协调服务,如元数据管理和故障检测。Zookeeper确保HBase的高可用性和一致性。 9. **MapReduce集成** HBase与Hadoop的MapReduce框架紧密集成,允许用户编写复杂的批处理作业来分析存储在...