溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

CDH6中的第三方庫(kù)有什么用

發(fā)布時(shí)間:2021-12-14 09:27:04 來源:億速云 閱讀:216 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“CDH6中的第三方庫(kù)有什么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“CDH6中的第三方庫(kù)有什么用”這篇文章吧。

在最近發(fā)布的CDH6版本中,Cloudera投入了大量的人力和物力用于升級(jí)所使用的第三方庫(kù)。這次CDH的大版本更新可以讓我們使用到一些較新的庫(kù)。升級(jí)庫(kù)的目的主要是可以避免一些安全漏洞,使用某些庫(kù)的流行版本以及標(biāo)準(zhǔn)化CDH所使用的庫(kù)。

現(xiàn)在的軟件開發(fā)依賴于重用其他人的代碼。以這種方式重用的代碼稱為“第三方庫(kù)”(third-party library)。有很多這樣的例子:需要Web服務(wù)器的工程師不會(huì)重寫一個(gè),而會(huì)使用比較流行的第三方庫(kù)代替比如Jetty。如果需要文件壓縮,則可以選擇Apache Commons-Compress。如果需要序列化數(shù)據(jù),則Jackson-Databind是一個(gè)不錯(cuò)的選擇。這種例子舉不勝舉,而且一直在擴(kuò)充。

使用第三方庫(kù)有很多好處。開發(fā)人員不用重新造輪子。最受歡迎的庫(kù)往往質(zhì)量很高,經(jīng)過嚴(yán)格測(cè)試,得到廣泛使用,并且得到很好的管理。流行的庫(kù)一般是開源的,并且可以自由使用。大多數(shù)情況下,在一些特定任務(wù)中它們都會(huì)比程序猿自己開發(fā)實(shí)現(xiàn)的要做的更好。在使用一些第三方庫(kù)的時(shí)候,可以使整個(gè)開發(fā)任務(wù)變得簡(jiǎn)單,從而讓程序猿可以更專注于創(chuàng)建一些新的或者有趣的東西?,F(xiàn)在的軟件工具也意識(shí)到了這一點(diǎn),比如,在Java中,Maven生態(tài)系統(tǒng)可以讓與第三方庫(kù)交互變得非常容易。

雖然它們可以節(jié)省大量時(shí)間,但第三方庫(kù)并不是完全沒有麻煩的。它們也需要維護(hù),特別是由于以下原因需要定期升級(jí):

1.如果第三方庫(kù)存在安全漏洞,我們必須快速升級(jí)到已經(jīng)解決該漏洞的版本。

2.有時(shí),第三方庫(kù)會(huì)達(dá)到使用壽命,過時(shí)或更改名稱。如果我們不遷移到新版本,則安全漏洞或者其他的已知問題可能永遠(yuǎn)得不到修復(fù)。

3.為了更容易地將不同的CDH組件集成到一起使用,最好對(duì)于所有項(xiàng)目中使用到的第三方庫(kù)保持相同的版本。

4.升級(jí)第三方庫(kù)到大版本(一般會(huì)向后兼容)可能會(huì)存在問題。對(duì)于這種情況,最好跟著你的軟件升級(jí)發(fā)布一起來做,而不是為了修復(fù)一個(gè)比如安全漏洞就升級(jí)大版本。

對(duì)于升級(jí)第三方庫(kù)的一個(gè)最重要的原因就是安全漏洞。一個(gè)值得紀(jì)念的例子是Equifax泄露事件(https://www.ftc.gov/equifax-data-breach)。Equifax使用Apache Struts,但在發(fā)現(xiàn)重大安全漏洞后未對(duì)其進(jìn)行升級(jí)。攻擊者利用此漏洞竊取了1.43億美國(guó)人的數(shù)據(jù)。我們不希望同樣的事情發(fā)生在我們的客戶身上。

第三方庫(kù)的維護(hù)很復(fù)雜,因?yàn)樗鼈兛赡懿粫?huì)被項(xiàng)目直接使用。例如,我們可能使用庫(kù)X,而庫(kù)X可能使用庫(kù)Y。我們將庫(kù)X稱為“直接”依賴,而庫(kù)Y則稱為“間接”或“傳遞”依賴。升級(jí)直接依賴庫(kù)通常很簡(jiǎn)單,但是升級(jí)間接依賴庫(kù)有時(shí)則較為復(fù)雜。比如,假設(shè)我們使用庫(kù)X,而庫(kù)X使用具有安全漏洞的庫(kù)Y。此時(shí),如果我們想升級(jí)庫(kù)X,則需保證沒有安全漏洞的庫(kù)Y升級(jí)也已經(jīng)準(zhǔn)備好,但是這個(gè)往往是我們無(wú)法控制的。當(dāng)庫(kù)的依賴越來越多的時(shí)候,這個(gè)情況可能更糟,比如庫(kù)X包括庫(kù)Y,庫(kù)Y又包括庫(kù)Z。

在CDH5的時(shí)候,其實(shí)使用的許多第三方庫(kù)都相當(dāng)舊。我們想升級(jí)它們,但由于擔(dān)心會(huì)破壞向后兼容性,而無(wú)法升級(jí)它們。但是當(dāng)這一次做大版本更新時(shí)(C5到C6),允許打破向后兼容性(https://semver.org/),所以我們能很好的開展工作。

與某項(xiàng)目的向后兼容相關(guān)的修改往往都非常明顯,但應(yīng)該讓開發(fā)人員更平滑的過度。比如用戶必須重新編譯作業(yè),但不必重寫它們。 SQL接口(如Apache Impala)的服務(wù)用戶應(yīng)該看不出任何區(qū)別。

這里有一些統(tǒng)計(jì)數(shù)據(jù)可以顯示這個(gè)問題的難度和規(guī)模。在我們支持的所有軟件中,我們擁有600多個(gè)單獨(dú)的直接依賴關(guān)系。如果算上間接依賴,這個(gè)數(shù)字攀升到1500以上!我們的一些大型項(xiàng)目,如Apache Hive,Cloudera Manager和Apache Hadoop,擁有100多個(gè)直接依賴項(xiàng)和300多個(gè)間接依賴項(xiàng)。

為了跟蹤和衡量我們對(duì)第三方庫(kù)的使用情況,我們構(gòu)建了一個(gè)名為“Dependency Report”的工具,它來自于以下輸入:

1.根據(jù)Maven顯示的每個(gè)項(xiàng)目使用的第三方庫(kù)。

2.根據(jù)Maven Central得到的每個(gè)庫(kù)的最新版本。

3.每個(gè)庫(kù)的年齡。

4.每個(gè)庫(kù)是否有安全漏洞,根據(jù)Dependency Check

(https://www.owasp.org/index.php/OWASP_Dependency_Check)來判斷。同時(shí)可以參考:

https://www.owasp.org/index.php/Main_Page

利用這些豐富的數(shù)據(jù),我們能夠?yàn)槊總€(gè)項(xiàng)目創(chuàng)建一個(gè)儀表盤。該儀表盤可以顯示比如“這里有所有具有安全漏洞的庫(kù)”,“這些庫(kù)至少落后1個(gè)大版本應(yīng)該升級(jí)”和“這些庫(kù)已超過10年?!泵總€(gè)庫(kù)都會(huì)有一個(gè)打分,可以幫助開發(fā)人員判斷升級(jí)庫(kù)的優(yōu)先級(jí)。有一個(gè)All-Projects視圖,顯示項(xiàng)目如何相互比較。一個(gè)視圖顯示了我們所有項(xiàng)目中使用的每個(gè)庫(kù),另一個(gè)視圖突出顯示了所有項(xiàng)目中第三方庫(kù)版本的差異。

這是Apache Hadoop依賴庫(kù)的視圖:

CDH6中的第三方庫(kù)有什么用

以下視圖顯示在CDH中同一個(gè)庫(kù)的不同版本:

CDH6中的第三方庫(kù)有什么用

我們很高興地說這項(xiàng)努力取得了成功。在C6開發(fā)過程中,我們解決了400多個(gè)問題!以下是一些更值得注意的成就:

1.在C5中,我們使用了兩種不同類型的Web服務(wù) - Jetty和Tomcat。 Jetty版本已超過8年,而Tomcat版本已超過其壽命。在C6中,我們?cè)谒许?xiàng)目中標(biāo)準(zhǔn)化了新的Jetty。

2.在C5中,我們使用了至少六種不同的舊版本和不安全版本的jackson-databind庫(kù)。在C6中,我們已經(jīng)標(biāo)準(zhǔn)化了一個(gè)沒有已知安全漏洞的新的jackson。這項(xiàng)工作幾乎要求每個(gè)項(xiàng)目都需要改變,并需要所有團(tuán)隊(duì)的大量協(xié)調(diào)和努力。

展望未來,我們構(gòu)建了一個(gè)儀表盤來跟蹤的第三方庫(kù)的指標(biāo)。它能夠監(jiān)控新的安全漏洞,提醒團(tuán)隊(duì)并更快地解決問題。

由于這些改變,C6提供了更安全,更主流的第三方庫(kù),Cloudera將能夠保持這一質(zhì)量標(biāo)準(zhǔn),因?yàn)槲覀儗⒗^續(xù)投資產(chǎn)品在未來的安全性。

以上是“CDH6中的第三方庫(kù)有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI