Hadoop是一個(gè)很神奇的創(chuàng)造,但它發(fā)展過(guò)快而表現(xiàn)出一些瑕疵。我愛(ài)大象,大象也愛(ài)我。不過(guò)這世上沒(méi)什么是完美的,有的時(shí)候,即使是再好的朋友間也會(huì)起沖突。就像我和Hadoop之間的存在斗爭(zhēng)一樣。下面是我列舉的12個(gè)痛點(diǎn)。
1. Pig vs. Hive
你在 Pig 里用不了 Hive UDFS。在 Pig 中你必須用 HCatalog 來(lái)訪問(wèn) Hive 表。你在 Hive 里用不了Pig UDFS。在 Hive 中無(wú)論是多么小的額外功能,我都不會(huì)感覺(jué)像寫(xiě)一個(gè) Pig 腳本或者“啊,如果是在 Hive 里我可以輕易地完成”,尤其是當(dāng)我寫(xiě) Pig 腳本的時(shí)候,當(dāng)我在寫(xiě)其中之一的時(shí)候,我經(jīng)常想,“要是能跳過(guò)這堵墻就好了!”。
2. 被迫存儲(chǔ)我所有共享庫(kù)到 HDFS
這是 Hadoop 的復(fù)發(fā)機(jī)制。如果你保存你的 Pig 腳本到 HDFS 上,那么它會(huì)自動(dòng)假設(shè)所有的 JAR 文件都會(huì)在你那里一樣。這種機(jī)制在 Oozie 和別的工具上也出現(xiàn)了。這通常無(wú)關(guān)緊要,但有時(shí),必須存儲(chǔ)一個(gè)組織的共享庫(kù)版本就很痛苦了。還有,大多數(shù)時(shí)候,你安裝在不同客戶端的相同 JAR,那么為什么要保存兩次?這在 Pig 中被修復(fù)了。別的地方呢?
3. Oozie
Debug 并不好玩,所以文檔里有很多老式的例子。當(dāng)你遇到錯(cuò)誤,可能并不是你做錯(cuò)了什么。可能是配置打印錯(cuò)誤或者格式驗(yàn)證錯(cuò)誤,統(tǒng)稱(chēng)“協(xié)議錯(cuò)誤”。很大程度上,Oozie 就像 Ant 或 Maven,除了分布式的,不需要工具、有點(diǎn)易錯(cuò)。
4. 錯(cuò)誤信息
你在開(kāi)玩笑,對(duì)吧?說(shuō)到錯(cuò)誤信息。我最喜歡的是任何 Hadoop 工具說(shuō)的,“失敗,無(wú)錯(cuò)誤返回,”可以翻譯成“發(fā)生了什么,能找到是你的運(yùn)氣。”
5. Kerberos 身份認(rèn)證協(xié)議
如果你想要想出一種相對(duì)安全的 Hadoop,你就要用到 Kerberos。記住 Kerberos 和它是多么的老舊?所以你只要 LDAP,除了它 Hadoop 中的都沒(méi)有被集成:沒(méi)單點(diǎn)登錄,無(wú) SAML,無(wú) OAuth,無(wú)證書(shū)傳遞(相反地,它會(huì)重新認(rèn)證)。更有趣的是,Hadoop 是生態(tài)系統(tǒng)的每一個(gè)部分都寫(xiě)它自己的LDAP 支持,所以這就是矛盾的。
6. Knox 數(shù)據(jù)保護(hù)應(yīng)用程序
因?yàn)橛?Java 寫(xiě)一個(gè)合適的 LDAP 連接器需要做至少100次才能保證正確。哎呀,看看那代碼。它并不真正地有效維護(hù)好連接池。實(shí)際上,我想 Knox 就是為 Java 或者一時(shí)的熱情而創(chuàng)造出來(lái)的。你可以通過(guò)一個(gè)寫(xiě)好的 Apache config,mod_proxy,mod_rewrite 做同樣的事情。實(shí)際上,那是 Knox 的基礎(chǔ),除了在 Java 中。對(duì)于啟動(dòng),在認(rèn)證之后,它不傳遞信息給 Hive 或 WebHDFS 或你正在訪問(wèn)的東西,但是會(huì)啟動(dòng)它。
7. Hive 不會(huì)讓我制作外部表格,但也不會(huì)刪除它
如果你讓 Hive 來(lái)管理表格,要是你終止對(duì)表格的使用的話,它會(huì)自動(dòng)將它們?nèi)縿h除。如果你有一個(gè)外部表格,它就不會(huì)將它刪除。為什么不能有一個(gè)“也刪除外部表”的功能呢?為什么我必須在外部刪除?還有,當(dāng) Hive 特別是與 RDBMS 一起應(yīng)用時(shí),為什么不能有 Update 和 Delete 功能?
8. Namenode 失敗
Oozie、Knox 和 Hadoop 的其它部分都不遵循新的 Namenode HA 資料。你可以在 Hadoop 中啟用HA,只要你不使用與之相關(guān)的東西。
9. 文檔
抱怨都是陳詞濫調(diào)了,但是還是檢查一下。37行錯(cuò)了——更糟糕的是,網(wǎng)絡(luò)上的所有文章都錯(cuò)了。這證明沒(méi)有人會(huì)費(fèi)心在執(zhí)行前檢查一下。Oozie 文檔更可怕,大多數(shù)例子對(duì)它給的格式校驗(yàn)都無(wú)法通過(guò)。
10. Ambari 覆蓋范圍
我曾批評(píng)過(guò)Ambari,就我所知的 Hadoop 架構(gòu)來(lái)說(shuō),Ambari 能夠工作真是很神奇。那么,他們可能會(huì)抱怨,Ambari 的缺點(diǎn)到底在哪?例如,Ambari 不能安裝,或者有些情況下不能正確安裝,包括多種HA 設(shè)置,Knox 等等。我確定它會(huì)變得更好,但是“手動(dòng)安裝之后”或者“我們已經(jīng)創(chuàng)建了一個(gè)備份腳本”,這些不應(yīng)該出現(xiàn)在我的郵件和文檔中。
11. 知識(shí)庫(kù)管理
說(shuō)到Ambari,當(dāng)知識(shí)正在升級(jí)的時(shí)候,你有完成過(guò)安裝嗎?我有過(guò),但是它表現(xiàn)的并不好。實(shí)際上,有時(shí)候它找到了最快的鏡像。Ambari 并不關(guān)注它下載下來(lái)的東西是否兼容。你可以用你自己的方式配置那部分,但是它在數(shù)百個(gè) Hadoop 節(jié)點(diǎn)上仍然會(huì)報(bào)說(shuō)你安裝有誤。
12. Null 指針異常
我經(jīng)常在運(yùn)行過(guò)程中遇到這樣的轉(zhuǎn)換錯(cuò)誤,換句話說(shuō),他們不應(yīng)該在Pig、Hive 等數(shù)據(jù)查詢(xún)和處理工具中被表示為 Null 指針異常。對(duì)任何相似的抱怨,都會(huì)有的答復(fù),“歡迎補(bǔ)丁!”或者“嘿,我正在處理。”
Hadoop 已經(jīng)出來(lái)很長(zhǎng)時(shí)間了,它一直是我最喜歡的工具之一,但是那些令人發(fā)狂的尖銳問(wèn)題也使我很生氣。只是希望開(kāi)發(fā)者能多用心解決這些問(wèn)題。不知道你有沒(méi)有相似的 Hadoop bug 可以拿出來(lái)和大家分享一下,目的是督促Hadoop能做得更好!
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:這12件事讓我很討厭Hadoop