HBase中的每个区域服务器都被分配了一些表的一些区域,这些区域服务器可能有很多区域,它们对应的存储文件在其他HDFS数据节点上有副本。如果一个区域服务器出现故障,HMaster将分配另一个服务器来接管并为离线区域提供服务。我的问题是--丢失区域的存储文件是否都存储在一个区域服务器上?
92dk7w1h1#
将@ramachandran-a-g的回答稍加转述和扩展:任何区域服务器都可以访问任何区域的数据,因为所有数据都存储在HDFS中。但是,为了获得更好的性能,区域服务器需要考虑(从Hadoop早期开始)并跟踪 * 数据局部性 *,即区域的存储文件是否位于本地HDFS数据节点中。RS指标hbase.regionserver.percentFilesLocal显示 “可从本地DataNode读取的存储文件数据的百分比,0-100”。
hbase.regionserver.percentFilesLocal
zynd9foi2#
如果我理解正确的话,问题是从RS指向的数据存储在哪里。从文档中:https://hbase.apache.org/book.html#config.files与伪分布式模式一样,完全分布式配置要求将hbase.cluster.distributed属性设置为true。通常,hbase.rootdir配置为指向高可用性HDFS文件系统。且还hbase.根目录:项目名称区域服务器共享的目录,HBase保存在该目录中。URL应该是“完全限定的”,以包括文件系统方案。例如,要指定HDFS目录“/hbase”,其中HDFS示例的名称节点在namenode.example.org的端口9000上运行,请将此值设置为:hdfs:namenode.example.org:9000/hbase。默认情况下,我们也会写入任何设置的${hbase.tmp.dir}-通常是/tmp -因此请更改此配置,否则所有数据将在机器重新启动时丢失。
2条答案
按热度按时间92dk7w1h1#
将@ramachandran-a-g的回答稍加转述和扩展:任何区域服务器都可以访问任何区域的数据,因为所有数据都存储在HDFS中。但是,为了获得更好的性能,区域服务器需要考虑(从Hadoop早期开始)并跟踪 * 数据局部性 *,即区域的存储文件是否位于本地HDFS数据节点中。RS指标
hbase.regionserver.percentFilesLocal
显示 “可从本地DataNode读取的存储文件数据的百分比,0-100”。zynd9foi2#
如果我理解正确的话,问题是从RS指向的数据存储在哪里。
从文档中:https://hbase.apache.org/book.html#config.files
与伪分布式模式一样,完全分布式配置要求将hbase.cluster.distributed属性设置为true。通常,hbase.rootdir配置为指向高可用性HDFS文件系统。
且还
hbase.根目录:项目名称
区域服务器共享的目录,HBase保存在该目录中。URL应该是“完全限定的”,以包括文件系统方案。例如,要指定HDFS目录“/hbase”,其中HDFS示例的名称节点在namenode.example.org的端口9000上运行,请将此值设置为:hdfs:namenode.example.org:9000/hbase。默认情况下,我们也会写入任何设置的${hbase.tmp.dir}-通常是/tmp -因此请更改此配置,否则所有数据将在机器重新启动时丢失。