99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

HBase版本號(hào)和兼容性

2018-02-26 16:53 更新

HBase版本號(hào)和兼容性

HBase 有兩種版本控制方案,分別是:pre-1.0 和 post-1.0。在本節(jié)內(nèi)容中將作出詳細(xì)的說(shuō)明。

HBase post-1.0

從 1.0.0 版本開(kāi)始,HBase 正在致力于 Semantic Versioning 的發(fā)布版本。綜上所述:

對(duì)于給定的版本號(hào) MAJOR.MINOR.PATCH,增加如下內(nèi)容:

  • MAJOR 版本,當(dāng)你進(jìn)行不兼容的 API 更改時(shí)
  • MINOR 版本,當(dāng)您以向后兼容的方式添加功能時(shí)
  • PATCH 版本,當(dāng)您進(jìn)行向后兼容的錯(cuò)誤修復(fù)時(shí)
  • 預(yù)發(fā)布和構(gòu)建元數(shù)據(jù)的其他標(biāo)簽可作為MAJOR.MINOR.PATCH格式的擴(kuò)展。

兼容性維度:

除了通常的 API 版本考慮之外,HBase 還有其他需要考慮的兼容性維度。

Client-Server 線(xiàn)協(xié)議兼容性:

  • 允許不同步更新客戶(hù)端和服務(wù)器。
  • 我們只能允許先升級(jí)服務(wù)器。也就是說(shuō),服務(wù)器將向后兼容舊客戶(hù)端,這樣新的 API 就可以使用。
  • 示例:用戶(hù)應(yīng)該能夠使用舊客戶(hù)端連接到升級(jí)的群集。

Server-Server 協(xié)議兼容性:

  • 不同版本的服務(wù)器可以共存于同一個(gè)群集中。
  • 服務(wù)器之間的有線(xiàn)協(xié)議是兼容的。
  • 分布式任務(wù)的工作人員(如復(fù)制和日志拆分)可以共存于同一個(gè)群集中。
  • 相關(guān)協(xié)議(如使用ZK進(jìn)行協(xié)調(diào))也不會(huì)改變。
  • 示例:用戶(hù)可以執(zhí)行滾動(dòng)升級(jí)。

文件格式兼容性:

  • 支持文件格式向前和向后兼容
  • 示例:文件、ZK 編碼、目錄布局自動(dòng)升級(jí)為 HBase 升級(jí)的一部分。用戶(hù)可以降級(jí)到舊版本,并且一切都將繼續(xù)工作。

客戶(hù)端 API 兼容性:

  • 允許更改或刪除現(xiàn)有的客戶(hù)端 API。
  • 在我們更改/刪除主要版本之前,API 需要被棄用。
  • 修補(bǔ)程序(patch)版本中提供的 API 將在所有后續(xù)修補(bǔ)程序版本中提供。但是,可能會(huì)添加新的 API,這些 API 在以前的修補(bǔ)程序版本中將不可用。
  • 修補(bǔ)程序版本中引入的新 API 只能以源代碼兼容的方式添加:即實(shí)現(xiàn)公共 API 的代碼將繼續(xù)編譯。示例:使用新廢用的 API 的用戶(hù)不需要使用 HBase API 調(diào)用修改應(yīng)用程序代碼,直到下一個(gè)主要版本。*

客戶(hù)端二進(jìn)制兼容性:

  • 寫(xiě)入給定修補(bǔ)程序版本中提供的 API 的客戶(hù)端代碼可以運(yùn)行不變(不需要重新編譯),以抵補(bǔ)新的 jar 后續(xù)補(bǔ)丁版本。
  • 寫(xiě)入給定修補(bǔ)程序版本中提供的 API 的客戶(hù)端代碼可能無(wú)法針對(duì)早期修補(bǔ)程序版本中的舊 jar 運(yùn)行。示例:舊編譯的客戶(hù)端代碼將在 jar 中保持不變。
  • 如果客戶(hù)端實(shí)現(xiàn) HBase 接口,則可能需要重新編譯升級(jí)到較新的次要(minor)版本。

服務(wù)器端有限的 API 兼容性(取自 Hadoop):

  • 內(nèi)部API被標(biāo)記為“穩(wěn)定(Stable)”,“正在發(fā)展(Evolving)”或“不穩(wěn)定(Unstable)”。
  • 這意味著協(xié)處理器和插件(可插入類(lèi),包括復(fù)制)的二進(jìn)制兼容性,只要這些只使用標(biāo)記的接口/類(lèi)。
  • 例如:舊編譯的協(xié)處理器,過(guò)濾器或插件代碼將在新 jar 中保持不變。

相關(guān)性兼容性:

  • HBase 的升級(jí)不需要依賴(lài)項(xiàng)目的兼容升級(jí),包括運(yùn)行 Java 時(shí)。
  • 示例:Hadoop 的升級(jí)不會(huì)使我們所做的任何兼容性保證失效。

操作兼容性:

  • 度量標(biāo)準(zhǔn)的更改
  • 服務(wù)的行為變化
  • 通過(guò) /jmx/ 端點(diǎn)公開(kāi)的 JMX API

概要

  • 修補(bǔ)程序(patch)升級(jí)是一種直接替代方案。任何不是 Java 二進(jìn)制和源代碼兼容的更改都將不被允許。在修補(bǔ)程序版本中降級(jí)版本可能不兼容。
  • 次要(minor)升級(jí)不需要修改應(yīng)用程序/客戶(hù)端代碼。理想情況下,這將是一個(gè)直接替換,但如果使用新的 jar,則客戶(hù)端代碼,協(xié)處理器,過(guò)濾器等可能必須重新編譯。
  • 主要(major)升級(jí)允許 HBase 做出重大改變。

以下是兼容性矩陣列表:

Major

Minor

Patch

客戶(hù)端 - 服務(wù)器線(xiàn)路兼容性

不兼容

兼容

兼容

服務(wù)器 - 服務(wù)器兼容性

不兼容

兼容

兼容

文件格式兼容性

不兼容

兼容

兼容

客戶(hù)端API兼容性

不兼容

兼容

兼容

客戶(hù)端二進(jìn)制兼容性

不兼容

不兼容

兼容

服務(wù)器端有限的API兼容性

穩(wěn)定性(Stable

不兼容

兼容

兼容

發(fā)展性(Evolving

不兼容

不兼容

兼容

不穩(wěn)定性(Unstable

不兼容

不兼容

不兼容

相關(guān)性兼容性

不兼容

兼容

兼容

操作兼容性

不兼容

不兼容

兼容

HBase 有很多 API 要點(diǎn),但對(duì)于上面的兼容性矩陣,我們區(qū)分了Client API(客戶(hù)端 API),Limited Private API(有限的私有 API)和 Private API(私有 API)。

  • InterfaceAudience(javadocs):捕捉預(yù)期的受眾,可能的值包括:
    • Public:對(duì)于最終用戶(hù)和外部項(xiàng)目是安全的;
    • LimitedPrivate:用于我們期望可插入的內(nèi)部組件,如協(xié)處理器;
    • Private:嚴(yán)格用于 HBase 自身內(nèi)部定義為 IA 的類(lèi)中,Private 可以用作聲明 IA.LimitedPrivate 接口的參數(shù)或返回值。將IA.Private對(duì)象視為不透明;不要嘗試直接訪(fǎng)問(wèn)其方法或字段。
  • InterfaceStability(javadocs):描述允許接口更改的類(lèi)型??赡艿闹蛋ǎ?ul>
  • Stable:接口是固定的,預(yù)計(jì)不會(huì)改變;
  • Evolving:界面可能會(huì)在未來(lái)的minor 版本中改變;
  • Unstable:界面可能隨時(shí)更改

請(qǐng)記住 HBase 項(xiàng)目中 InterfaceAudience 注釋和 InterfaceStability 注釋之間的以下相互作用:

  • IA.Public 類(lèi)本質(zhì)上是穩(wěn)定的,并堅(jiān)持我們有關(guān)升級(jí)類(lèi)型(主要,次要或修補(bǔ)程序)的穩(wěn)定性保證。
  • IA.LimitedPrivate 類(lèi)應(yīng)始終使用給定的 InterfaceStability 值的其中一個(gè)進(jìn)行注釋。如果他們不是,你應(yīng)該假定他們是 IS.Unstable。
  • IA.Private 類(lèi)應(yīng)該被認(rèn)為是隱含不穩(wěn)定的,不能保證發(fā)布之間的穩(wěn)定性。
HBase 客戶(hù)端 API

HBase 客戶(hù)端 API 由所有標(biāo)記有 InterfaceAudience.Public 接口的類(lèi)或方法組成。hbase-client 和依賴(lài)模塊中的所有主類(lèi)都有InterfaceAudience.Public,InterfaceAudience.LimitedPrivate或InterfaceAudience.Private標(biāo)記。并非所有其他模塊(hbase-server等)中的類(lèi)都有標(biāo)記。如果一個(gè)類(lèi)沒(méi)有使用上述中的一個(gè)注釋?zhuān)瑒t它被認(rèn)為是一個(gè)InterfaceAudience.Private類(lèi)。

HBase Limited Private API

LimitedPrivate 注釋為接口附帶了一組目標(biāo)使用者。這些使用者是協(xié)處理器,phoenix,復(fù)制端點(diǎn)實(shí)現(xiàn)等。此時(shí),HBase 只能保證修補(bǔ)程序版本之間的這些接口的源和二進(jìn)制兼容性。

HBase Private API

所有使用InterfaceAudience.Private注釋的類(lèi)或沒(méi)有注釋的所有類(lèi)僅在HBase內(nèi)部使用。接口和方法簽名可以隨時(shí)改變。如果您依賴(lài)于標(biāo)記為Private的特定界面,則應(yīng)打開(kāi)jira以建議將界面更改為Public或LimitedPrivate,或者為此目的公開(kāi)的接口。

HBase Pre 1.0

HBase Pre-1.0 版本都是 EOM:對(duì)于新的安裝,請(qǐng)勿部署:0.94.y、0.96.y 或 0.98.y,應(yīng)該部署穩(wěn)定的版本。

在語(yǔ)義版本化方案 pre-1.0 之前,HBase 追隨 Hadoop 的 0.2x 或 0.9x 版本。

二進(jìn)制兼容性:

當(dāng)我們說(shuō)兩個(gè) HBase 版本是兼容的時(shí),我們的意思是這些版本是線(xiàn)(wire)和二進(jìn)制兼容的。兼容的HBase版本意味著客戶(hù)可以與兼容但不同版本的服務(wù)器通話(huà)。這也意味著你可以換出一個(gè)版本的 jar,并用另一個(gè)兼容版本的 jar 替換它們,所有的 jar 都可以工作。除非另有說(shuō)明,否則 HBase 主要的版本都是二進(jìn)制兼容的。您可以安全地在二進(jìn)制兼容版本之間進(jìn)行滾動(dòng)升級(jí)。

滾動(dòng)升級(jí)

滾動(dòng)升級(jí)是您一次更新服務(wù)器群集中的服務(wù)器的過(guò)程。如果它們是二進(jìn)制或線(xiàn)路兼容的,則可以跨 HBase 版本進(jìn)行滾動(dòng)升級(jí)。粗略地說(shuō),滾動(dòng)升級(jí)是正常地停止每臺(tái)服務(wù)器,更新軟件,然后重新啟動(dòng)。您可以為集群中的每個(gè)服務(wù)器執(zhí)行此操作。通常先升級(jí) Master,然后再升級(jí) RegionServers。

例如,下面的 HBase 是 symlinked 實(shí)際的 HBase 安裝。在升級(jí)之前,在群集上運(yùn)行滾動(dòng)重啟之前,我們將 symlink 更改為指向新的 HBase 軟件版本,然后運(yùn)行:

$ HADOOP_HOME=~/hadoop-2.6.0-CRC-SNAPSHOT ~/hbase/bin/rolling-restart.sh --config ~/conf_hbase

滾動(dòng)重新啟動(dòng)腳本將首先正常停止并重新啟動(dòng)主服務(wù)器,然后依次重新啟動(dòng)每個(gè) RegionServer。由于 symlink 被更改,所以重新啟動(dòng)時(shí),服務(wù)器將使用新的HBase 版本。隨著滾動(dòng)升級(jí)的進(jìn)行,檢查日志中是否有錯(cuò)誤。

在兼容二進(jìn)制/Wire的版本之間進(jìn)行滾動(dòng)升級(jí):

除非另有說(shuō)明,否則 HBase 指向的版本是二進(jìn)制兼容的。您可以在 HBase 主要版本之間進(jìn)行滾動(dòng)升級(jí)。例如,您可以通過(guò)在集群中進(jìn)行滾動(dòng)升級(jí),使用0.94.6二進(jìn)制文件替換0.94.5二進(jìn)制文件,從而從 0.94.5 轉(zhuǎn)到 0.94.6。

在次要(minor)版本中,我們調(diào)用的版本是有線(xiàn)/協(xié)議兼容的,在這種情況下,也可以執(zhí)行滾動(dòng)升級(jí)。例如,在從 0.98.x 升級(jí)到 HBase 1.0.0 時(shí),我們聲明可以在 hbase-0.98.x 和 hbase-1.0.0 之間進(jìn)行滾動(dòng)升級(jí)。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)