中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

Hadoop–大處著眼

發(fā)布于:2021-01-16 10:13:07

0

109

0

apache 開(kāi)發(fā) hadoop java 教程

近年來(lái),存儲(chǔ)設(shè)備的價(jià)格有所下降,到2012年底,甚至一GB的SSD存儲(chǔ)設(shè)備也有望跌破一美元。擁有數(shù)千臺(tái)機(jī)器的集群不再僅僅是大公司的標(biāo)準(zhǔn)。有了apachehadoop和HBase這樣的技術(shù),“一無(wú)所獲的文化”已經(jīng)變得很普遍。數(shù)據(jù)科學(xué)家們正在愉快地篩選所有這些原始數(shù)據(jù),以發(fā)現(xiàn)更有價(jià)值的信息,并提取與業(yè)務(wù)相關(guān)的部分,從而提供競(jìng)爭(zhēng)優(yōu)勢(shì)。機(jī)器學(xué)習(xí)有助于解決幾年前似乎難以解決的問(wèn)題。數(shù)據(jù)革命已經(jīng)開(kāi)始。還是有?

今天閱讀有關(guān)大數(shù)據(jù)的出版物給人的印象是,必須重塑開(kāi)發(fā)過(guò)程:必須存儲(chǔ)越來(lái)越多的數(shù)據(jù)才能保持競(jìng)爭(zhēng)力。處理存儲(chǔ)、分析和可視化數(shù)據(jù)的項(xiàng)目到處都在炒作。當(dāng)仔細(xì)觀察當(dāng)今生產(chǎn)中的單個(gè)解決方案時(shí),這種觀點(diǎn)就不那么一致了——通常解決方案是由不同成熟度的幾個(gè)不同部分構(gòu)建的。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),使用一個(gè)體系結(jié)構(gòu)所花費(fèi)的時(shí)間比最初估計(jì)的要長(zhǎng)是很正常的。

本文試圖將數(shù)據(jù)驅(qū)動(dòng)的開(kāi)發(fā)放在上下文中—將其與已經(jīng)在實(shí)踐中完成的工作進(jìn)行比較和對(duì)比。它展示了大數(shù)據(jù)技術(shù)是如何結(jié)合在一起的,以及黃象和適應(yīng)它們的機(jī)器是如何結(jié)合在一起的。

讓我們從一個(gè)假設(shè)的例子開(kāi)始建立一個(gè)網(wǎng)上商店。頭腦風(fēng)暴時(shí),腦海中浮現(xiàn)的需求是存儲(chǔ)產(chǎn)品、用戶數(shù)據(jù)、用戶事務(wù)(那些活動(dòng)的,例如“Mary購(gòu)買(mǎi)了新耳機(jī),產(chǎn)品ID為9887876,正在發(fā)貨”,最好是過(guò)去的,以便以后能夠?yàn)镸ary提供更好的產(chǎn)品建議)。一旦商店就位,我們就可以猜測(cè)用戶可能會(huì)發(fā)現(xiàn)哪些變化和改進(jìn)是有用的。我們可以明確地征求瑪麗的意見(jiàn)。然而,普通用戶非常懶惰:他們很少提供反饋。

更容易的是在線觀察用戶:觀察他們看什么產(chǎn)品,最終購(gòu)買(mǎi)什么產(chǎn)品,調(diào)查哪些頁(yè)面的用戶離開(kāi)網(wǎng)站的比率最高,哪些頁(yè)面是典型的入口頁(yè)面。沿著這條路走下去,發(fā)展就變成了四個(gè)步驟的循環(huán):

發(fā)展的四個(gè)步驟:

  1. 觀察用戶與應(yīng)用程序的交互方式–這將導(dǎo)致發(fā)現(xiàn)多個(gè)缺陷,修復(fù)后會(huì)帶來(lái)不同的好處:產(chǎn)品搜索可能并不理想,因?yàn)橛脩艚?jīng)常搜索特定顏色的耳機(jī),但顏色可能尚未被索引。用戶可能正在搜索“購(gòu)買(mǎi)”按鈕,因?yàn)樗辉陧?yè)面頂部。

  2. 通過(guò)定義應(yīng)用程序應(yīng)該改進(jìn)的方向來(lái)確定方向-決定在下一次迭代中修復(fù)哪些缺陷,并定義衡量修復(fù)成功程度的標(biāo)準(zhǔn):使耳機(jī)的顏色可導(dǎo)航,并期望在一個(gè)月內(nèi)使耳機(jī)銷量翻番。

  3. 決定要實(shí)現(xiàn)什么–實(shí)現(xiàn)細(xì)節(jié)可能會(huì)有所不同,在我們的玩具示例中,選項(xiàng)可能是將耳機(jī)的顏色作為索引的一部分,這樣用戶就可以搜索它們,或者將它們包含在刻面用戶界面中。

  4. 行動(dòng)–實(shí)施修復(fù)

最后,通過(guò)觀察用戶對(duì)修復(fù)的反應(yīng),這個(gè)周期又開(kāi)始了。最后一步是可以對(duì)當(dāng)前和未來(lái)的執(zhí)行情況作出哪些反饋。周期越緊,反饋就越快地反饋到開(kāi)發(fā)中,項(xiàng)目就越有可能超越競(jìng)爭(zhēng)對(duì)手(圖1)。

圖1:開(kāi)發(fā)的四個(gè)步驟

這種發(fā)展周期并不奇怪,也不應(yīng)該是特別新的。相反,它是為任何成功的實(shí)現(xiàn)所隱含的。但是,這種顯式形式表明,有些步驟可以從收集定義良好的附加數(shù)據(jù)集或使用已有的數(shù)據(jù)集中獲益匪淺。

通過(guò)跟蹤任何用戶行為(常見(jiàn)和不常見(jiàn)、成功和不成功)可以極大地支持觀察。每次用戶成功地與網(wǎng)店進(jìn)行交互時(shí),都會(huì)顯示哪些功能特別有效。不成功的互動(dòng)揭示了不足和改進(jìn)的空間。一個(gè)度量是由一個(gè)新特征的成功定義的,然后需要在方向上進(jìn)行評(píng)估。使這一步驟明確和可衡量,就可以得到明確的數(shù)字,可以將變化與之進(jìn)行比較。它還明確了變革的目標(biāo),并有助于確定是否以及何時(shí)達(dá)到該目標(biāo)。

收集交互數(shù)據(jù)的第二個(gè)目標(biāo)是利用這些數(shù)據(jù)為個(gè)人用戶提供更好的服務(wù):用戶Mary很可能不想再尋找另一副她評(píng)價(jià)不好的耳機(jī)。所以她應(yīng)該得到不同的搜索結(jié)果。此外,她可能對(duì)一種非常特殊的音樂(lè)類型感興趣,當(dāng)她收到自己喜歡的音樂(lè)集時(shí),她可能會(huì)非常高興。

最后,兩種類型的使用交互數(shù)據(jù)的結(jié)果都顯示在圖2中的流程圖中。

圖2:兩種類型的交互數(shù)據(jù)

關(guān)于數(shù)據(jù)收集的任何一種方法都是新的嗎?不是真的。自互聯(lián)網(wǎng)出現(xiàn)之初,人們就開(kāi)始收集互動(dòng)數(shù)據(jù)。用戶傾向于在所提供的基礎(chǔ)設(shè)施中做各種有趣的事情。因此,服務(wù)提供商很早就開(kāi)始記錄用戶交互——可能只是為了在效果之后診斷是什么導(dǎo)致了問(wèn)題。

該級(jí)別上更常見(jiàn)的需求工程類型包括基于過(guò)去流量模式的機(jī)器大小調(diào)整,針對(duì)可見(jiàn)的入侵嘗試強(qiáng)化設(shè)置?;谟脩魯?shù)據(jù)的典型功能包括僅向在線雜志的讀者顯示新內(nèi)容或根據(jù)用戶請(qǐng)求的來(lái)源顯示不同的內(nèi)容。

使用的數(shù)據(jù)源通常包括web服務(wù)器訪問(wèn)日志、運(yùn)行狀況檢查結(jié)果和響應(yīng)時(shí)間日志。所有這些都有不同的格式,但通常都是基于文本的格式,可以通過(guò)sed、awk或python腳本等工具進(jìn)行處理。結(jié)果隨后會(huì)顯示在定制的儀表板、gnuplot圖表甚至日志分析的半標(biāo)準(zhǔn)工具中——AWStats是web服務(wù)器日志的一個(gè)著名例子。

應(yīng)用程序特定數(shù)據(jù)

讓我們更進(jìn)一步,看看特定于應(yīng)用程序的數(shù)據(jù):這些數(shù)據(jù)包括客戶數(shù)據(jù)庫(kù)、事務(wù)日志等。從中可以學(xué)到什么?

根據(jù)新的要求,我們可能會(huì)發(fā)現(xiàn)所有的客戶都來(lái)自歐洲,所以營(yíng)銷應(yīng)該擴(kuò)展到不同的國(guó)家。根據(jù)用戶的統(tǒng)計(jì)數(shù)據(jù),網(wǎng)站本身可能需要不同的功能——一般精通技術(shù)的客戶對(duì)信息的需求不同于那些幾乎無(wú)法訪問(wèn)網(wǎng)站并通過(guò)支付流程的客戶。在用戶特性方面,人們可能希望根據(jù)用戶過(guò)去的個(gè)人行為向用戶推薦產(chǎn)品。

這里使用的工具是標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫(kù)。對(duì)于分析,有一種標(biāo)準(zhǔn)的查詢語(yǔ)言,根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)提供程序,有一些自定義擴(kuò)展。對(duì)于可視化,開(kāi)發(fā)人員可以使用自定義報(bào)告或使用tableau之類的工具。

現(xiàn)在,如果日志大小超出了一臺(tái)計(jì)算機(jī)的存儲(chǔ)或計(jì)算容量,該怎么辦?如果客戶數(shù)據(jù)庫(kù)的分析在一臺(tái)機(jī)器上花費(fèi)的時(shí)間太長(zhǎng),或者成本太高,無(wú)法通過(guò)擴(kuò)展這臺(tái)機(jī)器來(lái)加快速度,該怎么辦?有一個(gè)非常簡(jiǎn)單的答案:以apachehadoop為例。

答案不那么簡(jiǎn)單,但可能更正確:您將無(wú)法繞過(guò)分布式系統(tǒng)進(jìn)行數(shù)據(jù)分析。當(dāng)選擇商品硬件時(shí),最好的選擇是使用apachehadoop作為系統(tǒng)的基礎(chǔ)。你需要什么取決于你的具體情況。

輸入Hadoop

Hadoop本身有兩個(gè)組件:HDFS和MapReduce。HDFS在GNU/Linux文件系統(tǒng)之上提供了一個(gè)分布式文件系統(tǒng)(Windows還沒(méi)有得到官方支持)。它是建立在假設(shè)系統(tǒng)在商品硬件上運(yùn)行的基礎(chǔ)上的,因此故障確實(shí)會(huì)發(fā)生。為了應(yīng)對(duì)這種情況,它提供了自動(dòng)故障切換和內(nèi)置復(fù)制。它還假設(shè)您正在操作硬件;磁盤(pán)掃描比磁盤(pán)查找便宜—這種假設(shè)即使對(duì)于SSD也是成立的。第三個(gè)假設(shè)是,您的系統(tǒng)將處理大量數(shù)據(jù)—由于移動(dòng)數(shù)據(jù)比移動(dòng)計(jì)算更昂貴,Hadoop將嘗試盡可能靠近數(shù)據(jù)運(yùn)行處理,理想情況下是在存儲(chǔ)數(shù)據(jù)的同一臺(tái)機(jī)器上。MapReduce然后提供了編程庫(kù)來(lái)有效地利用HDFS的特性。

由于HDFS只提供原始文件存儲(chǔ),因此有多個(gè)庫(kù)提供數(shù)據(jù)的結(jié)構(gòu)化存儲(chǔ)—以壓縮二進(jìn)制格式提供可升級(jí)的數(shù)據(jù)結(jié)構(gòu)。例如Avro、Thrift和protocolbuffers。

HDFS本身非常適合后臺(tái)處理,但不太適合在線使用。如果您有如此多的用戶,以至于標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)無(wú)法再處理流量,并且希望您的系統(tǒng)能夠與Hadoop(尤其是MapReduce作業(yè))很好地集成,那么Apache HBase(以及Hypertable)就是需要考慮的存儲(chǔ)系統(tǒng)。兩者都提供了良好的在線訪問(wèn)性能。

MapReduce

在分析方面,開(kāi)發(fā)人員需要編寫(xiě)MapReduce作業(yè)。有一個(gè)java(包括一個(gè)單獨(dú)的庫(kù),使單元測(cè)試更容易),以及C++的API可用。不過(guò),Hadoop還提供了一個(gè)流接口,它可以使用STDIN和STDOUT進(jìn)行處理,從而支持任何腳本語(yǔ)言。

然而,有時(shí)開(kāi)發(fā)人員不需要接觸任何一種低級(jí)編程語(yǔ)言。相反,查詢語(yǔ)言(如Pig、Latin或Hive的語(yǔ)言)非常接近SQL,對(duì)于大多數(shù)任務(wù)來(lái)說(shuō)已經(jīng)足夠了。在語(yǔ)法不夠的地方,開(kāi)發(fā)人員可以選擇使用自己的操作符來(lái)擴(kuò)展語(yǔ)言。

級(jí)聯(lián)試圖在低級(jí)javamapreduce和高級(jí)Pig之間提供一個(gè)中間地帶。apachegiraph專注于處理圖形數(shù)據(jù),包括在分析圖形時(shí)特別重要的操作符。

在編寫(xiě)作業(yè)時(shí),需要快速鏈接多個(gè)MapReduce階段。可能需要將用Java編寫(xiě)的階段和用Pig編寫(xiě)的階段進(jìn)行混合和匹配?;谟?jì)時(shí)器或基于數(shù)據(jù)可用性的觸發(fā)處理。這些任務(wù)可以由Oozie——Hadoop的工作流管理器來(lái)解決。

如果我們的目標(biāo)不是提供簡(jiǎn)單的統(tǒng)計(jì)數(shù)據(jù),而是根據(jù)用戶購(gòu)買(mǎi)的產(chǎn)品類型自動(dòng)對(duì)用戶進(jìn)行分組呢?如果目標(biāo)是根據(jù)用戶偏好某種產(chǎn)品的可能性來(lái)對(duì)用戶進(jìn)行分類呢?如果目標(biāo)是預(yù)測(cè)用戶下一步最有可能鍵入什么查詢呢?大多數(shù)更復(fù)雜的問(wèn)題都可以用某種方式來(lái)表達(dá),使它們更容易用自動(dòng)化方法來(lái)解決。apachemahout有助于解決大規(guī)模的問(wèn)題,并在必要時(shí)提供Hadoop綁定。

在可視化方面,仍然需要做的是創(chuàng)建自定義報(bào)告,然后生成自定義儀表板。此外,還可以將數(shù)據(jù)導(dǎo)出到首選的文件格式,然后在通用工具(如gephi)中可視化結(jié)果以進(jìn)行圖形可視化,或者將數(shù)據(jù)導(dǎo)入常規(guī)關(guān)系數(shù)據(jù)庫(kù)并使用它們的工具進(jìn)行可視化。

在現(xiàn)實(shí)世界中從來(lái)沒(méi)有這么簡(jiǎn)單過(guò)

到目前為止,我們看到的是一個(gè)完全基于apachehadoop的強(qiáng)大、一致的基礎(chǔ)設(shè)施。然而,現(xiàn)實(shí)世界中的基礎(chǔ)設(shè)施從來(lái)就不是那么簡(jiǎn)單。會(huì)有一些關(guān)系數(shù)據(jù)庫(kù)繼續(xù)運(yùn)行,但遷移成本太高。如果沒(méi)有與Hadoop設(shè)置很好地集成,那么這些將仍然是孤立的數(shù)據(jù)倉(cāng)庫(kù),除了最初的開(kāi)發(fā)人員之外,沒(méi)有人能從中受益。直接針對(duì)數(shù)據(jù)庫(kù)運(yùn)行的MapReduce作業(yè)將很快導(dǎo)致系統(tǒng)癱瘓。Hadoop對(duì)于生成針對(duì)現(xiàn)有系統(tǒng)的DOS攻擊非常有效。通常的做法是定期將數(shù)據(jù)庫(kù)內(nèi)容導(dǎo)入HDFS。使用Sqoop,有一個(gè)工具已經(jīng)被證明是可靠的。

現(xiàn)在只剩下一個(gè)可行的解決方案,將分布式系統(tǒng)中的日志文件恢復(fù)到HDFS中。對(duì)于Flume、Scribe和Chukwa,有三種系統(tǒng)可供選擇,它們有助于分布式日志記錄并提供Hadoop綁定。

退一步來(lái)看,結(jié)果看起來(lái)已經(jīng)相當(dāng)清晰:數(shù)據(jù)存儲(chǔ)、分析和可視化都可用,現(xiàn)有系統(tǒng)集成良好。然而,現(xiàn)在我們有了軟件,可以將系統(tǒng)擴(kuò)展到幾十臺(tái)、幾百臺(tái)甚至幾千臺(tái)機(jī)器。這些數(shù)字不再由任何運(yùn)營(yíng)團(tuán)隊(duì)手動(dòng)管理。相反,自動(dòng)化配置管理和受控回滾選項(xiàng)變得越來(lái)越重要。像Chef和Puppet這樣的系統(tǒng),以及Zookeeper這樣的配置管理系統(tǒng),突然間成為了擴(kuò)展的關(guān)鍵(圖3)。


圖3:一個(gè)復(fù)雜但連貫的拼圖

最后的畫(huà)面看起來(lái)不再那么簡(jiǎn)單了。除了許多不同的部分和最佳實(shí)踐之外,如果要避免混合和匹配所有解決非常常見(jiàn)的問(wèn)題但在重要細(xì)節(jié)上不同的各種系統(tǒng),還有許多步驟涉及到有意識(shí)地對(duì)一個(gè)系統(tǒng)和另一個(gè)系統(tǒng)做出決策。

這樣的設(shè)置有什么好處?最重要的優(yōu)點(diǎn)是數(shù)據(jù)存儲(chǔ)的集成。如果數(shù)據(jù)不再在數(shù)據(jù)筒倉(cāng)中分離,那么所有類型的應(yīng)用程序都將成為可能,而且構(gòu)建成本也會(huì)降低,因?yàn)閿?shù)據(jù)不再需要從一個(gè)團(tuán)隊(duì)復(fù)制到另一個(gè)團(tuán)隊(duì),而是可以供所有人使用和處理。此外,通過(guò)以一致的方式集成所有必要的數(shù)據(jù)源,業(yè)務(wù)報(bào)告變得非常簡(jiǎn)單。

然而,可處理意味著數(shù)據(jù)格式是已知的、文檔化的或至少是自描述的。突然之間,日志記錄不再是可選的,并且在出現(xiàn)問(wèn)題時(shí)需要進(jìn)行調(diào)試和事后分析。突然之間,如果日志文件包含正確的信息、足夠的數(shù)據(jù)和有效的條目,那么日志文件本身就是一種資產(chǎn)。

一般來(lái)說(shuō),Hadoop的用例在引入之后很容易識(shí)別。然而,我們不應(yīng)該對(duì)這樣一個(gè)系統(tǒng)的引入掉以輕心——開(kāi)發(fā)人員的學(xué)習(xí)曲線仍然相當(dāng)陡峭。

系統(tǒng)仍然需要在DevOps級(jí)別上考慮,這意味著開(kāi)發(fā)和操作必須緊密地結(jié)合在一起才能工作。集成還沒(méi)有完全優(yōu)化,并且沒(méi)有像其他更常見(jiàn)的系統(tǒng)那樣做得很好。最有希望的途徑是確定一個(gè)現(xiàn)有的用例,它將從使用Hadoop中獲益匪淺。引入apachehadoop,以及支持它所需的一切,將提供足夠的經(jīng)驗(yàn)來(lái)簡(jiǎn)化和適應(yīng)越來(lái)越多的用例。擁有一個(gè)驅(qū)動(dòng)項(xiàng)目有助于關(guān)注真實(shí)的業(yè)務(wù)需求,并找出重要的特性。它還有助于決定使用什么項(xiàng)目來(lái)解決實(shí)際的技術(shù)問(wèn)題。

Hadoop結(jié)論

總的來(lái)說(shuō),Hadoop及其生態(tài)系統(tǒng)提供了獨(dú)特的特性,允許以合理的成本擴(kuò)展到商品硬件上的大型分布式系統(tǒng)。該系統(tǒng)已在生產(chǎn)中使用的兩個(gè)較大的(雅虎!,F(xiàn)acebook,Twitter)和更小的(Neofonie GmbH,nurago,nuxeo)公司來(lái)解決他們的分析需求。作為一個(gè)Apache項(xiàng)目,可以在合理的時(shí)間內(nèi)參與并解決問(wèn)題。盡管發(fā)布周期在過(guò)去一直在增長(zhǎng),但項(xiàng)目本身發(fā)布了更快的版本,以便在更短的時(shí)間間隔內(nèi)獲得特性和bug修復(fù)。此外,項(xiàng)目本身將來(lái)自不同背景的開(kāi)發(fā)人員團(tuán)結(jié)在一起,并將來(lái)自世界各地具有大量分布式處理經(jīng)驗(yàn)的團(tuán)隊(duì)的知識(shí)匯集在一起,這不僅有助于強(qiáng)化實(shí)現(xiàn),而且為開(kāi)發(fā)新功能提供了廣泛的基礎(chǔ)。

幾年后發(fā)布了1.0版本,它顯示了開(kāi)發(fā)人員對(duì)代碼庫(kù)成熟度的信任。在即將發(fā)布的版本中,將資源管理與計(jì)算庫(kù)分離的體系結(jié)構(gòu)將變得更加靈活。這將使開(kāi)發(fā)人員能夠?qū)apReduce視為一個(gè)簡(jiǎn)單的編程庫(kù),并獨(dú)立于集群版本開(kāi)發(fā)mapreduceapi。2012年將給該項(xiàng)目帶來(lái)許多改進(jìn)。通過(guò)加入用戶和開(kāi)發(fā)人員的郵件列表,確保成為流程的一部分。您可以通過(guò)提供有價(jià)值的補(bǔ)丁程序來(lái)解決仍然存在的問(wèn)題,從而將您的知識(shí)和工作投入到流程中來(lái)。