大英圖書館在2021年遷移到了Hadoop3

banq發表於2022-01-09

在 2021 年最後一個季度,構成英國網路檔案館的技術服務在幕後發生了許多變化。
 

開始 Hadoop 3 遷移
我們的 Hadoop 叢集現在已經很老了,將其更新到新版本一直是一個長期存在的問題。舊的 Hadoop 版本不再獲得更新,並且不受現代工具和庫的支援,這使我們無法充分利用可用的東西。
很長一段時間以來,人們都不清楚如何最好地進行——就地更新似乎風險太大,但叢集到叢集的遷移似乎需要太多的硬體。因此,近年來,我們花時間學習如何設定和維護 Hadoop 3 叢集,並評估不同的遷移策略,重點關注在任何遷移期間我們如何維護服務。
我們最終決定應該可以進行叢集到叢集的遷移,只要我們可以購買更高密度的儲存,這樣我們就有足夠的空間在遷移硬體之前遷移內容。今年早些時候,由於一些採購延遲,我們能夠購買並建立這個新的 Hadoop 3 叢集,每臺伺服器提供超過 450TB 的原始儲存(相比之下,舊叢集的每臺伺服器大約 85TB)。
在進行設定的同時,我們還必須對我們的服務進行通用化,以便所有重要的程式都可以在兩個叢集中執行,並且可以從任何一個叢集中檢索 WARC 記錄。這非常耗時,但隨著 2021 年即將結束(舊叢集上的空間越來越緊!),我們終於能夠改變事情,以便將新收穫的內容寫入新的 Hadoop 3 叢集。
在幕後,我們的檔案跟蹤資料庫進行了更新,以掃描兩個叢集並充當檔案所在位置的記錄,並且每小時更新此記錄,而不是每天更新一次。建立了一個新的 WARC 伺服器元件,它接受 WARC 記錄的 Wayback 請求,並使用跟蹤資料庫來確定它們在哪個叢集上,然後抓取並返回有問題的 WARC 記錄。
將來,跟蹤資料庫將用於幫助協調內容到 Hadoop 3 的移動,並在硬體可用時轉移。新的 WARC 伺服器意味著我們將能夠始終保持不間斷的服務。
但現在為了避免中斷,我們還需要透過索引播放來啟用對 Hadoop 3 上更新內容的訪問。為此,建立了一個新的 CDX 索引器實現,可以在任一叢集上執行(使用 Webrecorder 的 Python 工具而不是 Java 構建)。和以前一樣,跟蹤資料庫用於跟蹤已索引的內容,但現在可以立即對兩個叢集進行索引。
同樣,儘管尚未完全投入生產,但 Document Harvester 文件提取器和 Solr 全文索引任務已被重新編寫,以便能夠在任一叢集上執行,並且比之前的實現更健壯。
在撰寫本文時,主要公共網站和內部儲存報告尚未完全轉移到兩個系統上執行,因此短期內可能存在一些輕微的不一致。但是,我們希望在接下來的一兩週內解決這個問題。
 

透過 Apache Airflow 進行任務編排
大量更改也被用作更新我們的關鍵 Web 歸檔任務的實施和編排方式的機會。我們使用 Luigi 框架來定義任務及其依賴關係,但隨著時間的推移,我們發現這在很多方面存在問題:

  • 執行任務的程式碼和編排這些任務的程式碼混合在同一個原始檔中。這使得單獨改進任何單個任務變得非常困難,並且使測試變得困難。
  • Luigi 任務排程似乎不可靠,處理器偶爾會卡住並且沒有任何進展,或者在失敗時不會引發任何錯誤。這尤其影響了 Document Harvester,導致了許多中斷。
  • Luigi 任務管理介面不是很有用。它不容易檢視以前的執行,並且提供的細節很少。
  • Luigi 鼓勵對任務依賴項進行編碼的方式使得清除這些依賴項非常困難,因此可以重新執行任務。

因此,在更新各種 Web 歸檔任務時,它們已被修改為在Apache Airflow下執行。
這是一個流行且使用非常廣泛的工作流定義和排程系統,谷歌和亞馬遜都提供 Airflow 作為完全託管的雲服務以及圍繞它的健康開源社群。除了選擇工作流平臺外,我們還選擇將每個任務工具實現為單獨的獨立 Python 命令列程式。這意味著:
  • 任務程式碼與編排分離,可獨立開發,任務可部署為 Docker 容器,將底層軟體依賴分開。
  • 我們開始使用 Airflow 排程器,它看起來更可靠,會在任務卡住或失敗時向我們發出警告,並提供 Prometheus 整合進行監控。
  • Airflow Web UI 非常詳細,允許訪問任務日誌、執行摘要和統計資料,使工作流管理更加容易,並提供了一個框架來記錄每個工作流。
  • Airflow Web UI 還可以輕鬆清除失敗的工作流執行的狀態,以便可以根據需要重新執行它們。

隨著時間的推移,我們希望將所有網路歸檔任務轉移到這個系統上。
 

W3ACT
W3ACT 被 UKW​​A 策展人和其他授權使用者用於新增目標和管理質量保證和許可。W3ACT 策展服務最近只有小幅更新,於 12 月底推出。 

  • QA Wayback 現在執行 PyWB 版本 2.6.3 以改進播放(例如ukwa-pywb#70)。
  • 改進了 W3ACT 身份驗證 cookie 的處理方式,解決了w3act#662 問題

 

UKWA 網站
UKWA 網站 ( www.webarchive.org.uk ) 使用者介面上的大部分近期工作都集中在透過將我們的大量精選收藏品分類來改進其展示。這項工作仍在內部討論和開發中,因此還不是公共網站的一部分。但是,我們正在取得良好的進展,並希望在未來幾周內釋出該網站的新版本。
除了介面本身,還做了一些額外的工作來更新內部服務(例如將 PyWB 更新到 2.6.3 版並新增 WARC 伺服器以從兩個 Hadoop 叢集讀取內容),並將部署移動到我們更新的生產平臺。如上所述,這些更新應該很快就會推出。
 

2021 域名爬取
與 2020 年一樣,2021 年域抓取在 Amazon Web Services 雲上執行。這一次,在對 Heritrix 進行改進並在以往經驗的基礎上,爬網執行比 2020 年更加順暢和高效,為爬網邊界使用的記憶體和磁碟空間更少。該爬蟲於 8 月初啟動以進行滲透測試,然後在解決安全問題時將其刪除。實際爬取從 8 月 24 日開始,從 1000 萬個種子 URL 開始,到 11 月中旬,大部分爬取工作已完成。我們訪問的 2700 萬臺主機中的大多數都被完全爬網,但大約 57,200 臺主機確實達到了 500MB 的大小上限。但是,其中一些是內容分發網路 (CDN),即為其他站點託管資源的服務,因此手動取消了一些上限,並允許繼續抓取。
12 月 30 日,抓取停止,處理了 20.4 億個 URL,下載了 99.6 TB 資料(未壓縮)。但是,許多 CDN 內容仍未收集,並且在 Heritrix 的正常“禮貌”規則下需要很長時間才能收集。將來,最好找到一種方法讓 Heritrix 更快地爬取這些站點,而無需手動干預以確定哪些主機是 CDN。
我們都希望在明年開始將域抓取 2020/2021 內容從 AWS 傳輸到我們的 Hadoop 3 叢集的過程。
 
 

相關文章