是否可以将hbase数据存储在aws s3上以供在线应用?怎样?

ergxz8rk  于 2021-06-10  发布在  Hbase
关注(0)|答案(3)|浏览(642)

我是aws的新手。我计划使用hbase作为我的系统的数据库,并将其安装在ec2上,并将其实际数据文件安装在s3上,因为它的存储成本较低,并且与emr有很好的集成。我不想使用amazonemr仅仅是hbase,这将是24/7提供,并避免额外的费用。但稍后我们将使用它进行一些分析。知道如何为这种设置配置hbase吗?

kxeu7u2r

kxeu7u2r1#

这里有一些信息:
现在可以使用s3作为hbase的存储。
在amazon emr 5.2.0或更高版本上运行hbase时,可以启用amazon s3存储模式,该模式具有以下优点:
hbase根目录存储在amazons3中,包括存储文件(hfiles)和表元数据。这些数据在集群之外是持久的,可以跨amazonec2可用性区域使用,您不需要使用快照或其他方法进行恢复。使用amazons3中的存储文件,您可以根据自己的计算需求而不是数据需求来调整amazonemr集群的大小,在hdfs中使用3倍的复制。
这也是由finra完成的,在这里描述。

vfhzx4xs

vfhzx4xs2#

hbase可以使用hadoop中支持的任何文件系统,包括s3,但是如果不使用emr,速度会太慢。
要使用s3作为数据源,需要将hadoop文件系统配置为s3。
hbase-site.xml可能如下所示:

<configuration>

<property>
    <name>hbase.rootdir</name>
    <value>s3://ebucketrkr.s3.amazonaws.com:80/</value>
  </property>

</configuration>

hadoop-site.xml可能如下所示:

<configuration>
<property>
  <name>fs.default.name</name>
  <value>s3://hbase</value>
</property>

<property>
  <name>fs.s3.awsAccessKeyId</name>
  <value>id</value>
</property>

<property>
  <name>fs.s3.awsSecretAccessKey</name>
  <value>pass</value>
</property>

</configuration>
qco9c6ql

qco9c6ql3#

不,你不能。这不是性能问题,而是hbase如何实现更新的原子提交:它依赖于重命名为o(1)个原子事务,create(path,overwrite=false)也是如此。hadoops3a客户机实现的重命名很慢,而且不是事务:它们是目录内容的一个接一个副本。至于create no overwrite,则是先检查,然后写;倾向于比赛状态。哦,还有最终的一致性,尤其是在列表中。
除非在特殊情况下,s3本身提供了管理这些操作所需的锁定和租用功能,否则不能尝试将s3用作hbase的备份存储。azure具有这些特性;emr可能,对于hadoop的s3a来说,这仍然是一项正在进行的工作,即使在那里,目标也不是s3之上的hbase,而是更快地提交hive和spark工作。
我是以目前维护hadoop的s3a客户机的身份写这篇文章的:我是从对代码库的了解以及hbase的工作原理说起的。
更新:2018年11月amazon emr支持使用s3作为目的地

相关问题