【问题标题】:Saving HBase table data in a particular HDFS location将 HBase 表数据保存在特定的 HDFS 位置
【发布时间】:2020-12-18 05:45:51
【问题描述】:

在 Hive 表上,我可以创建将数据保存在特定 HDFS 位置的外部表。我想在 HBase 上做类似的事情,以便 HBase 表数据可以保存在外部 HDFS 位置。是否可以在类似于 Hive 的 HBase 上执行此操作?我想知道 HBase 表数据保存在 HDFS 上的默认路径是什么?

谢谢

【问题讨论】:

    标签: hive hbase


    【解决方案1】:

    简短的回答是否定的,HBase 没有提供与 Hive 相同的外部表功能。

    HBase 的设计与 Hive 不同,并且使用不同的方法和软件来读取和写入数据。 Hive 传统上使用 MapReduce 或 Tez 与 HDFS 中的数据进行交互,例如您的外部表,而 HBase 使用其在集群上运行的 RegionServer 进程的集合。按照设计,RegionServer 共享 HDFS 中的目录树,它们在其中操作文件。

    hbase-site.xml 配置文件中有一个名为hbase.rootdir 的属性,它为所有 HBase 数据文件设置 HDFS 中的根路径。该属性如下所示:

    <property>
      <name>hbase.rootdir</name>
      <value>hdfs://hostname:8020/hbase</value>
    </property> 
    

    (这个目录不需要手动创建,HBase会做。如果没有设置这个参数,那么默认所有数据都会进入hbase.tmp.dir的子目录,通常是/tmp。)

    但同样,此配置设置类似于在 Hive 中创建外部表。在将数据持久化到磁盘时,此 HDFS 路径由所有 RegionServer 共享。它不是您(用户)在读写数据时直接与之交互的目录。

    【讨论】:

      猜你喜欢
      • 2014-09-16
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 2015-12-21
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多