Hadoop中的问题–何时无法交付?
相反,我認(rèn)為Hadoop很棒。 但是,它并不能證明Hadoop出現(xiàn)了一些公然的失敗,可能是架構(gòu),概念上或文檔上的明智選擇。 Hadoop的普及不應(yīng)使它免受Hadoop實(shí)施中的重新設(shè)計(jì)和返工問題的需要。 以下幾點(diǎn)是基于幾個(gè)月來(lái)圍繞Hadoop進(jìn)行探索和黑客攻擊的。 挖吧。
Hadoop一次又一次地在數(shù)據(jù)局部性方面。 在Hadoop擠奶者舉辦的一些講習(xí)班中,他們只是繼續(xù)進(jìn)行下去。 他們說(shuō),Hadoop將盡可能嘗試通過HDFS在該節(jié)點(diǎn)本地存儲(chǔ)的數(shù)據(jù)塊上啟動(dòng)任務(wù)。 這聽起來(lái)像是一項(xiàng)超級(jí)功能,不是嗎? 它節(jié)省了大量帶寬,而無(wú)需傳輸TB的數(shù)據(jù),對(duì)嗎? 地獄,不。 它不是。 這意味著首先必須找到一種將數(shù)據(jù)導(dǎo)入HDFS(Hadoop分布式文件系統(tǒng))的方法。 除非您生活在過去的十年中,并且所有數(shù)據(jù)都以文件形式存在,否則這并非易事。 假設(shè)您這樣做了,讓我們將數(shù)據(jù)的TB轉(zhuǎn)移到HDFS。 現(xiàn)在,它將開始完成整個(gè)“數(shù)據(jù)局部性”工作。 嗯,好。 我是否被一波光輝打動(dòng)了,還是應(yīng)該做什么? 讓我們弄清事實(shí)。 要使用Hadoop,我們的問題應(yīng)該能夠并行執(zhí)行。 如果問題或至少一個(gè)子問題無(wú)法并行化,它將不會(huì)從Hadoop中獲得太多收益。 這意味著任務(wù)算法獨(dú)立于它處理的數(shù)據(jù)的任何特定部分。 這將進(jìn)一步簡(jiǎn)化,也就是說(shuō),任何任務(wù)都可以處理數(shù)據(jù)的任何部分。 那么,這是否意味著顯而易見的事情就是“數(shù)據(jù)局部性”? 為什么,Hadoop開發(fā)人員甚至?xí)帉懸恍┐a,使某任務(wù)在另一個(gè)節(jié)點(diǎn)上處理數(shù)據(jù),除非出現(xiàn)嚴(yán)重錯(cuò)誤。 該功能將是如果這樣做否則! 如果任務(wù)已完成對(duì)節(jié)點(diǎn)本地?cái)?shù)據(jù)的操作,然后又從另一個(gè)節(jié)點(diǎn)傳輸數(shù)據(jù)并處理該數(shù)據(jù),那將是難題的一個(gè)重要特征。 至少那是值得的。
您在數(shù)據(jù)庫(kù)中是否有結(jié)構(gòu)良好的數(shù)據(jù)? 也許,您變得有點(diǎn)幻想,并使用了最新最好的NoSQL數(shù)據(jù)存儲(chǔ)? 現(xiàn)在讓我寫下您的想法。 “好吧,讓我們來(lái)運(yùn)行一些Hadoop作業(yè),因?yàn)槲蚁朐谖业臄?shù)據(jù)中找到所有這些隱藏的金礦,這將使我成為《福布斯》的頭版。” 我聽到你了 讓我們滾動(dòng)一些Hadoop作業(yè)。 可是等等! 什么…..? 為什么所有樣本都在文本文件中。 使用CSV文件,制表符分隔文件,空格分隔文件以及所有其他類型的整潔文件的大量示例。 為什么每個(gè)人都回溯幾十年并再次使用文件? 所有這些家伙都沒有聽說(shuō)過DB和所有這些花哨的東西。 看來(lái)您采用數(shù)據(jù)存儲(chǔ)還為時(shí)過早。 文件是Hadoop世界的英雄。 如果您想快速,輕松地使用Hadoop,那么正確的最佳選擇是將數(shù)據(jù)整齊地導(dǎo)出到文件中,并運(yùn)行所有那些令人眼花word亂的字?jǐn)?shù)示例(Pun打算這樣做!)。 因?yàn)闆]有文件,Hadoop無(wú)法完成所有很酷的“數(shù)據(jù)局部性”。 一切都必須首先放在HDFS中。 那么,您將如何分析假設(shè)的FUHadoopDB中的數(shù)據(jù)? 首先,實(shí)現(xiàn)大約10多個(gè)必要的類,以將數(shù)據(jù)拆分并傳輸?shù)紿adoop節(jié)點(diǎn)并運(yùn)行您的任務(wù)。 Hadoop需要知道如何從FUHadoopDB中獲取數(shù)據(jù),因此我們假設(shè)這是可以接受的。 現(xiàn)在,如果不將其存儲(chǔ)在HDFS中,則不會(huì)丟失數(shù)據(jù)本地性。 在這種情況下,任務(wù)運(yùn)行時(shí),他們自己將不得不從FUHadoopDB中提取數(shù)據(jù)來(lái)處理數(shù)據(jù)。 但是,如果您想使數(shù)據(jù)位置變得混亂,則需要從FUHadoopDB中提取數(shù)據(jù)并將其存儲(chǔ)在HDFS中。 您不會(huì)招致任務(wù)運(yùn)行時(shí)提取數(shù)據(jù)的損失,但是會(huì)在作業(yè)準(zhǔn)備階段以將數(shù)據(jù)傳輸?shù)紿DFS的形式支付。 哦,我是否提到了在HDFS中存儲(chǔ)相同數(shù)據(jù)所需的額外磁盤空間。 我想節(jié)省磁盤空間,所以我選擇讓我的任務(wù)在運(yùn)行任務(wù)時(shí)提取數(shù)據(jù)。 這是你的選擇。
Java有其缺陷,但是在大多數(shù)情況下,它可以在大多數(shù)操作系統(tǒng)上順利運(yùn)行。 即使存在某些操作系統(tǒng)問題,也可以輕松解決。 Hadoop的人們大多基于Linux環(huán)境發(fā)布了文檔。 他們說(shuō)Windows受支持,但是由于沒有提供足夠的文檔而忽略了那些無(wú)知的人。 Windows甚至沒有使它進(jìn)入推薦的生產(chǎn)環(huán)境。 它可以用作開發(fā)平臺(tái),但是隨后您必須將其部署在Linux上。 我當(dāng)然不是Windows迷。 但是,如果我編寫Java程序,我會(huì)費(fèi)心地使其在Windows上運(yùn)行。 如果沒有,為什么還要使用Java? 為什么要搞出怪異的字節(jié)碼呢? 哦,所有想出字節(jié)碼和JVM并沒有浪費(fèi)的好人的不眠之夜。
如果您嘗試將Hadoop集成到平臺(tái)中,請(qǐng)?jiān)倏紤]一下。 讓我自由輸入您的想法。 “讓我們擴(kuò)展一些接口并插入我的身份驗(yàn)證機(jī)制。 它應(yīng)該很容易。 我的意思是這些家伙設(shè)計(jì)了世界上最偉大的軟件,可以消除世界的饑餓。” 我又聽到你了 如果您打算這樣做,請(qǐng)不要這樣做。 就像那里的OOP反圖案101。 如此多的地方會(huì)說(shuō)“ if(kerberos)”并執(zhí)行一些特定于安全性的功能。 我的一位同事經(jīng)歷了這一痛苦,最終決定為他的軟件編寫基于keberos的身份驗(yàn)證,然后使其與Hadoop一起使用更容易。 擁有權(quán)利的同時(shí)也被賦予了重大的責(zé)任。 Hadoop無(wú)法履行此職責(zé)。
即使存在這些問題,Hadoop的流行似乎也引起了極大的關(guān)注,這是理所應(yīng)當(dāng)?shù)摹?它應(yīng)該具有大數(shù)據(jù)分析能力。 但是我認(rèn)為它太流行了,太快了。 Hadoop社區(qū)需要進(jìn)一步改進(jìn)這一出色的軟件。
參考: Hadoop中的問題–何時(shí)無(wú)法交付? 來(lái)自我們的JCG合作伙伴 ? Mackie Mathew在dev_religion博客上
翻譯自: https://www.javacodegeeks.com/2012/03/problems-in-hadoop-when-does-it-fail-to.html
總結(jié)
以上是生活随笔為你收集整理的Hadoop中的问题–何时无法交付?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正月可以晒被子吗 正月可不可以晒被子
- 下一篇: Apache Camel 2.9发布–十