多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯(lián)網(wǎng) > 最新版本的Hive 0.13發(fā)布,增加ACID特性

最新版本的Hive 0.13發(fā)布,增加ACID特性

來源:程序員人生   發(fā)布時間:2014-09-07 05:20:14 閱讀次數(shù):3269次

【編者按】近日發(fā)布的Hive 0.13中采用了ACID語義的事務機制,在分區(qū)層保證事務原子性、一致性和持久性,并通過開啟ZooKeeper或內(nèi)存中的鎖機制保證事務隔離性。數(shù)據(jù)流攝取、緩慢變化維、數(shù)據(jù)重述這些新的用例在新版本中成為了可能,當然新版Hive中也還存在一些不足,Hive新版本具體帶來哪些改變呢?作者Alan Gates為我們帶來了精彩分析。

以下為原文:

什么是ACID,有什么作用?

ACID代表數(shù)據(jù)庫事務中的4個特性,原子性(任何一個數(shù)據(jù)庫操作要么被完整執(zhí)行,要么完全不執(zhí)行)、一致性(一旦應用程序執(zhí)行了一個操作,操作的結(jié)果對于每一個之后的操作都是可見的)、隔離性(一個用戶的操作不會對其他用戶產(chǎn)生意料之外的副作用)、持久性(一旦一個操作被完成,這些操作也將被記錄下來,即使機器或者系統(tǒng)出現(xiàn)故障,也要保證這些記錄的完整性)。這些特性一直被認為是事務功能的重要組成部分。

在最近發(fā)布的Hive 0.13中,事務的原子性、一致性和持久性在分區(qū)層得到保證,隔離性則通過開啟ZooKeeper或內(nèi)存中可用的鎖機制來保證。通過在Hive 0.13中加入事務,實現(xiàn)在行級提供全部的ACID語義,這樣的話,一個應用程序可以添加行,而另一個應用程序可以從同一分區(qū)中讀取數(shù)據(jù),互相之間不會產(chǎn)生干擾。

采用ACID語義的事務機制被添加到Hive中來處理以下的用例:

  1. 數(shù)據(jù)流攝取 streaming ingest of data)。許多用戶都會使用Apache Flume、Apache Storm或Apache Kafka之類的工具,這些工具可以將數(shù)據(jù)寫入到Hadoop集群,寫入數(shù)據(jù)的速率達到每秒數(shù)百行,而Hive可以每隔15分鐘到1個小時添加一個分區(qū),然而,添加太多分區(qū)也經(jīng)常會造成表的混亂。這些工具也可以將數(shù)據(jù)寫入到現(xiàn)有分區(qū)中,但這又可能會導致讀取數(shù)據(jù)時產(chǎn)生臟讀(他們讀取的數(shù)據(jù)在執(zhí)行查詢之后被修改了),而且在他們的目錄中會產(chǎn)生的許多小文件,對NameNode造成壓力。有了數(shù)據(jù)流攝取這一新功能,用例將允許讀者得到數(shù)據(jù)的一致視圖,同時避免產(chǎn)生過多的文件。
  2. 緩慢變化維(slow changing dimensions)。在一個典型星型架構(gòu)的數(shù)據(jù)倉庫中,隨著時間推移,維度表變化的很慢。例如,一家零售商新開一個商店時,那這個商店就需要添加“商店表”中,但也有可能只是對現(xiàn)有商店進行擴充,也許還會添加一些新的服務。這些變化會導致向數(shù)據(jù)倉庫中插入一些新的記錄或者對已有記錄進行更改(具體取決于選擇的策略)。Hive目前無法支持這些操作,只要INSERT ... VALUES、UPDATE和DELETE這些操縱被支持,緩慢變化維將成為可能。
  3. 數(shù)據(jù)重述(data restatement)。有時候收集到的數(shù)據(jù)不正確,需要一些修正,有可能數(shù)據(jù)的第一個實例已經(jīng)近似(90%的服務器報告)稍后提供的完整數(shù)據(jù),有可能某些事務由于后續(xù)事務還需要被重述(例如:在一次交易中,客戶可能會購買會員資格,并因此有權(quán)享受折扣價,包括之前的交易也需要享受這個折扣價),還有可能用戶會在他們交易關(guān)系終止時,會根據(jù)合同要求刪除他們的用戶數(shù)據(jù)。只要INSERT ... VALUES、UPDATE和DELETE這些操作被支持,數(shù)據(jù)重述也將成為可能。

不足

  • 在Hive 0.13中,還不支持INSERT……VALUES、UPDATE和DELETE等操作,BEGIN、COMMIT和ROLLBACK等操作也還沒有得到支持,這些功能計劃在下一個版本中實現(xiàn)。
  • 在Hive 0.13的第一版本中還只能支持ORC文件格式。事務能否被任何存儲格式使用決定了更新或刪除操作如何應用于基礎記錄(實際上,基礎記錄中有顯式或隱式的行id),但到目前為止,整合工作還只能用ORC格式完成。
  • 流攝取接口(見下文)還不能與Hive中已有的INSERT INTO操作很好的整合。如果表使用流攝取接口,那通過INSERT INTO添加的任何數(shù)據(jù)都會丟失。不過INSERT OVERWRITE仍然可用,而且能用于流攝取,它通過流攝取刪除插入數(shù)據(jù)就像是通過其他方式將數(shù)據(jù)寫入到該分區(qū)一樣。
  • 在Hive 0.13中,事務默認是被關(guān)閉的。請參閱下面的配置部分,Hive中的一些關(guān)鍵項需要進行手動配置。
  • 表必須被bucketed以更好地利用這些功能。同一個系統(tǒng)中沒有使用事務和ACID的表不需要被bucket。
  • 僅能支持快照級別隔離。當給定的查詢啟動后,將會產(chǎn)生一致的數(shù)據(jù)快照。不支持臟讀、已提交讀取、可重復讀取,以及串行化。引入BEGIN后,將支持快照隔離事務,為的是保證事務持久性,而不僅僅為了完成一次查詢。其他隔離級別可以根據(jù)用戶要求添加。
  • 現(xiàn)有的Zookeeper和內(nèi)存鎖管理器與事務不兼容。目前還沒有打算解決這一問題,要想了解如何為事務存儲鎖,請參見下面的基礎設計。

流攝入接口

有關(guān)使用流數(shù)據(jù)攝入的詳細信息,請參閱StreamingDataIngest。

語法變化

多個新命令被添加到Hive的DDL中以支持ACID和事務,一些現(xiàn)有的DDL也被做了一些修改。

例如:新加入的SHOW TRANSACTIONS命令,有關(guān)該命令的詳細信息,請參閱ShowTransactions。

SHOW COMPACTIONS也是一個新加入的命令,詳細信息請參閱ShowCompactions。

原有的SHOW LOCKS命令被修改,以提供與事務相關(guān)的新鎖信息。如果你正在使用ZooKeeper或者內(nèi)存鎖命令,你會注意到這條命令在輸出上并沒有多大改變,詳細信息請參閱ShowLocks。

ALTER TABLE中添加了一個新的選項,用來壓縮表或分區(qū)。一般用戶不需要去請求壓縮,因為系統(tǒng)會檢測到他們的需求,然后自動啟動壓縮。但是,如果一個表壓縮被意外終止或者一個用戶想要去手動壓縮表,ALTER TABLE可以滿足用戶,提供手動啟動壓縮,有關(guān)詳細信息,請參閱AlterTable/PartitionCompact。ALTER TABLE會將請求排入隊列、壓縮并返回請求,如果用戶想看到壓縮的進展情況,可以使用SHOW COMPACTIONS命令。

基礎設計

HDFS不支持對文件進行更改。在寫入者向文件進行寫入操作,同時文件被其他用戶讀取這種情況下,它無法保證讀取的一致性。為了在HDFS上提供這一功能,我們采用在其他數(shù)據(jù)倉庫工具使用的標準方法,將表或分區(qū)數(shù)據(jù)存儲在一組基礎文件中,將新記錄、更新和刪除操作存儲在delta文件中。 為每個事務創(chuàng)建一組新delta文件(或者在流代理如:Flume或Storm中,為每一批事務創(chuàng)建一組新delta文件),更改表或分區(qū)。在讀取時,讀取器將基礎文件和delta文件合并,應用更新和刪除操作。

有時這些變化需要合并成基礎文件,一組線程必須添加到Hive metastore中。他們確定什么時候需要壓縮,然后執(zhí)行壓縮,最后進行清理(刪除舊文件)。壓縮的類型分兩種,次要的和主要的。次要壓縮采用一組現(xiàn)有的delta文件,并為每一次bucket重寫一個delta文件。主要壓縮則要為每個bucket寫一個或多個delta文件,為每一次bucket重寫一個新基礎文件。所有壓縮都在后臺完成,并不妨礙數(shù)據(jù)的并發(fā)讀取和寫入。在一次壓縮后,系統(tǒng)會等待直到所有舊文件的讀取結(jié)束,然后刪除舊的文件。

以前一個分區(qū)(或如果沒有分區(qū)表的表)的所有文件都放在單個目錄中。因為這些變化,所有采用ACID思想寫入的分區(qū)都將有一個基礎文件的目錄,以及delta文件集目錄。

新鎖管理器DbLockManager也添加到了Hive中。該鎖管理器將所有鎖信息存儲在metastore中,此外所有事務也存儲在metastore中。這意味著事務和鎖即使在服務器出現(xiàn)故障時也能保證持久性,為了避免客戶端死機、離開或者鎖掛起,鎖持有者和事務啟動器需要向metastore發(fā)出心跳信號(heartbeat),如果在給定的時間內(nèi)服務器沒有收到客戶端發(fā)出的心跳信號,該鎖或事務將被中止。

配置

許多新配置關(guān)鍵項被添加到系統(tǒng)用以支持事務。 

配置關(guān)鍵項

默認值

事務啟動值

注釋

hive.txn.manager      

org.apache.hadoop.

hive.ql.lockmgr.

DummyTxnManager

org.apache.hadoop.

hive.ql.lockmgr.

DbTxnManager

DummyTxnManager延用了Hive 0.13之前的做法,不提供事務。

hive.txn.timeout 

300

如果在這段時間內(nèi),客戶端沒有發(fā)出心跳信號,事務就會被宣告終止。

hive.txn.max.

open.batch

1000

事務的最大數(shù)量,可以用open_txns()獲取。

hive.compactor.

initiator.on

false

true (for exactly one instance of the Thrift metastore service)

是否在該metastore實例上運行啟動器和垃圾清理線程。

hive.compactor.

worker.threads

0

> 0 on at least one instance of the Thrift metastore service

有多少工作線程在該metastore實例上運行。

hive.compactor.

worker.timeout

86400

壓縮作業(yè)在該時間內(nèi)未完成將被宣布失敗,壓縮操作被重新排入隊列。

hive.compactor.

check.interval

300

檢查是否有分區(qū)需要被壓縮。

hive.compactor.

delta.num.threshold

10

delta目錄的數(shù)目,達到該數(shù)后將觸發(fā)次要壓縮。

hive.compactor.

delta.pct.threshold

0.1

與基礎文件中delta文件的百分比,達到該值會觸發(fā)主要壓縮。(1 = 100%)

hive.compactor.

abortedtxn.threshold

1000

給定分區(qū)中已中止事務的數(shù)目,達到該數(shù)會也會觸發(fā)主要壓縮。

hive.txn.max.open.batch控制多個事務流代理,如Flume或Storm。流代理將多個詞條寫到單個文件中(每個Flume代理或每個Storm螺栓)。因此,增加該值可以減少流代理創(chuàng)建的文件數(shù),但增加此值也增加了開放事務的數(shù)目(Hive需要追蹤),這可能會影響讀取的性能。

工作線程為壓縮操作產(chǎn)生了許多MapReduce作業(yè),而它們自身并沒有做壓縮。確定進行表壓縮后,增加工作線程的數(shù)目會減少表壓縮的時間。隨著更多的MapReduce作業(yè)在后臺運行,Hadoop集群的后臺負載也在增加。

減小此值將減少壓縮表或分區(qū)的時間。當然,首先得檢查壓縮是否必要,這需要為每個表或分區(qū)調(diào)用多個NameNode,降低此值可以減少NameNode的負載。

表屬性

如果表的所有者不希望系統(tǒng)自動確定何時要壓縮,那么可以手動設置表屬性NO_AUTO_COMPACTION,用來阻止所有的自動壓縮操作。

原文鏈接:ACID and Transactions in Hive (翻譯/毛夢琪 責編/魏偉)

以“ 云計算大數(shù)據(jù) 推動智慧中國 ”為主題的 第六屆中國云計算大會 將于5月20-23日在北京國家會議中心隆重舉辦。產(chǎn)業(yè)觀察、技術(shù)培訓、主題論壇、行業(yè)研討,內(nèi)容豐富,干貨十足。票價優(yōu)惠,馬上 報名 ! 

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲区免费 | 538在线视频二三区视视频 | 中文字幕第2页 | xxxx网| freesex性欧美重口 | 午夜免费啪在线观看视频网站 | yellow中文字幕在线高清 | 国产福利一区二区三区视频在线 | 精品一区二区三区高清免费不卡 | 亚洲精品一二三 | 欧美xxxhd| nnnwww在线观看视频 | 亚洲不卡在线播放 | 一级中文字幕乱码免费 | 永久免费在线播放 | 欧美猛交xxxx乱大交 | 91在线一区二区 | 国产成人精品福利网站人 | 欧美成人毛片一级在线 | 亚洲天堂v | 综合久久久 | 国产三级日产三级 | 高清视频一区二区 | 久久久亚洲精品视频 | 久操免费在线 | 午夜久草 | 欧美另类69xxxx | 欧美亚洲天堂 | 久久免费视频1 | 亚洲国产一区二区三区最新 | www在线观看视频免费 | 一级爱爱片| 日本一区二区免费看 | 色聚网久久综合 | 波多野结衣手机视频一区 | 国产福利二区 | 波多野结衣中出在线 | 国产老肥熟xxxx | 337p日本欧洲亚洲大胆艺术图666 | 最近最新高清免费中文字幕 | 日本在线观看不卡免费视频 |