2016-09-07 42 views
0

我在AWS中很新。我計劃使用HBase作爲我係統的數據庫,並將其安裝在EC2上,並將其安裝在S3上的實際數據文件中,因爲它的存儲成本更低,並且與EMR良好集成。我不希望僅將Amazon EMR用於全天候提供的HBase,並避免額外成本。但稍後將用於某些分析。任何想法如何配置HBase這樣的設置?是否可以在AWS S3上存儲HBase數據用於在線應用程序?怎麼樣?

回答

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> 
+0

我明白了。感謝您快速回復Rakesh。但是如果S3的速度太慢,那麼我不得不考慮一些更好的解決方案。 – NGR

3

不,你不能。這不是性能,它是HBase如何實現更新的原子提交:它依賴於重命名爲O(1)原子事務,對於create(path,overwrite = false),重命名相同。 由Hadoop s3a客戶端執行的重命名很慢,而不是事務:它們是目錄內容的一個副本。至於create-no-overwrite,這是一個檢查,然後是寫入;容易出現競賽狀況。哦,那麼最終的一致性,特別是在上市。

除了S3自身提供了鎖定&租賃以管理這些操作所需的特殊情況外,您不得嘗試使用S3作爲HBase的後備存儲。 Azure具有這些功能; EMR可能仍然是Hadoop S3A的工作進展,即使在那裏,目標不是S3上面的HBase,而是Hive和spark工作的更快速的承諾。

我把它寫成當前維護Hadoop的S3a客戶端的人員:我從代碼庫的知識以及HBase的工作需求講述。

1

你有一些信息here

現在可以使用S3作爲存儲的HBase的。

當你在Amazon EMR版本5.2.0或更高版本上運行HBase的,你可以 使亞馬遜S3存儲模式,它具有以下優點:

HBase的根目錄存儲在亞馬遜S3,其中包括存儲文件 (HFiles)和表元數據。此數據在 羣集之外是持久性的,可跨Amazon EC2可用區域提供,並且您不需要使用快照或其他方法恢復 。藉助 Amazon S3中的存儲文件,您可以根據您的計算 要求確定Amazon EMR羣集的大小,而不是數據要求,並在HDFS中使用3x複製。

這也由Finra完成,描述爲here

相關問題