首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在HDFS中本地化HFile块

在HDFS中本地化HFile块
EN

Stack Overflow用户
提问于 2015-08-09 10:10:26
回答 1查看 679关注 0票数 2

我们使用Mapreduce批量创建HFiles,然后以增量方式/批量加载到HBase中。我注意到,load只是一个HDFS移动命令(它不会物理上移动文件的块)。

由于我们进行了大量的HBase表扫描,并且启用了短路读取,因此将这些HFiles本地化到其各自区域的节点将是有益的。

我知道主要的压缩可以做到这一点,但当HFiles与区域大小相比很小时,效率就会很低。

EN

回答 1

Stack Overflow用户

发布于 2015-08-11 22:48:10

HBase uses HDFS as a File System. HBase does not controls datalocality of HDFS blocks.

当HDFS用于将数据写入到HBase时,然后是HBase RegionServer becomes a client to HDFS;在HDFS中,如果客户端节点也是datanode,则还会创建一个本地块。因此,当使用HBase API进行写入时,localityIndex较高。

当使用大容量加载时,HFiles已经存在于HDFS中。因为,它们已经存在于hdfs中。HBase将使这些hfile成为区域的一部分。在这种情况下,不能保证数据的局部性。

如果您确实需要高数据局部性,那么我建议您使用HBase应用程序接口进行写入,而不是批量加载。

我一直在使用HBase应用程序接口从我的MR工作中写入HBase,到目前为止,它们工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31900276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档