是否可以在AWS S3上存储HBase数据以进行在线申请?怎么样?

时间:2016-09-07 08:14:52

标签: amazon-web-services amazon-s3 hbase amazon-emr

我是AWS的新手。我计划将HBase用作我的系统的数据库,并将其安装在EC2及其S3上的实际数据文件中,因为它具有较低的存储成本并且与EMR具有良好的集成。我不想将Amazon EMR仅用于HBase,它可以全天候使用并避免额外费用。但是稍后会将其用于某些分析。知道如何为这种设置配置HBase吗?

3 个答案:

答案 0 :(得分:7)

不,你不能。它不是性能,而是HBase实现原子更新提交的方式:它依赖于重命名为O(1)原子事务,对于create(path,overwrite = false)也是如此。 由Hadoop s3a客户端实现的重命名很慢而不是事务:它们是目录内容的逐个副本。对于create-no-overwrite,它是一个检查后跟一个写;容易发生竞争。哦,然后最终的一致性,特别是在列表中。

除特殊情况外,S3本身还有一些东西可以提供锁定和锁定功能。管理这些操作所需的租赁,您不得尝试将S3用作HBase的后备存储。 Azure具有以下功能; EMR可能,它仍然是Hadoop的S3A的进展中的工作,即使在那里,目标不是HBase在S3之上,它更快地提交Hive和spark工作。

我把这个写成当前正在维护Hadoop的S3a客户端的人:我从代码库的知识以及HBase的工作方式开始说话。

更新:2018年11月 Amazon EMR确实支持将S3用作目标

答案 1 :(得分:3)

您有一些信息here

现在可以使用S3作为HBase的存储空间。

  

在Amazon EMR 5.2.0或更高版本上运行HBase时,您可以   启用Amazon S3存储模式,具有以下优势:

     

HBase根目录存储在Amazon S3中,包括商店文件   (HFiles)和表元数据。这个数据是持久的   群集,可在Amazon EC2可用区域中使用,但您不能   需要使用快照或其他方法进行恢复。使用商店文件   在Amazon S3中,您可以为计算机调整Amazon EMR集群的大小   要求而不是数据要求,3x复制   HDFS。

这也是Finra所做的,描述了here

答案 2 :(得分:2)

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>