• <menu id="w2i4a"></menu>
  • logo Hadoop教程

    文檔首頁>>Hadoop教程>>Hadoop教程:Hadoop令開發(fā)者糾結(jié)的十件事

    Hadoop教程:Hadoop令開發(fā)者糾結(jié)的十件事


    開源數(shù)據(jù)處理平臺(tái)Hadoop在大數(shù)據(jù)時(shí)代的今天有著非常廣泛的應(yīng)用。著名的大象圖標(biāo)遍布各行各業(yè),從醫(yī)療記錄到銀行交易,從車票預(yù)定到房屋租賃,乃至很多科學(xué)數(shù)據(jù)處理,都可以見到Hadoop的身影。

    在Hadoop生態(tài)繁榮的背后,是開發(fā)者們夜以繼日的開發(fā)與支持。而在用戶得益甚至贊賞這些應(yīng)用的時(shí)候,開發(fā)者們卻不得不面對Hadoop平臺(tái)中一些可用性較差的地方。本文列舉了網(wǎng)絡(luò)上一些關(guān)于Hadoop的缺點(diǎn),供大家探討,部分觀點(diǎn)來自InfoWorld及開發(fā)者博客。

    1、 平臺(tái)尚未成熟

    雖然用途廣泛,但不得不承認(rèn)的是,Hadoop目前仍在開發(fā)階段。很多數(shù)據(jù)結(jié)構(gòu)都不全,比如Hadoop一直不支持原生datatime數(shù)據(jù)類型,最近才在時(shí)間序列數(shù)據(jù)開發(fā)者的強(qiáng)烈建議下下引入此數(shù)據(jù)類型。其次,技術(shù)支持并不到位,無論是Google還是Stack Overflow上尋找的答案,都不足以解決開發(fā)者遇到的問題。

    2、 數(shù)據(jù)模式模糊不清

    Hadoop目前對模式(Schema)的描述并不清晰,很多開發(fā)者在撰寫Pig腳本的過程中,會(huì)花費(fèi)超過50%的時(shí)間在調(diào)試對Schema的支持上。

    3、 Pig和Hive無法互通

    Hive和Pig用起來完全是兩個(gè)東西。熟悉SQL的開發(fā)者可以在Hive中使用類似的腳本,但是在Pig中卻不得不重新學(xué)習(xí)其語法。在Pig中無法使用Hive的UDFS,也無法使用HCatalog訪問Pig的Hive表。反過來,無法在Hive中使用Pig的UDFS。這讓開發(fā)者在兩者切換使用的過程中頗為糾結(jié),需要耗費(fèi)精力重新撰寫腳本來完成已有的工作。

    4、 HDFS存儲(chǔ)共享函數(shù)庫

    鑒于Hadoop的復(fù)用機(jī)制,一旦開發(fā)者將Pig腳本保存于HDFS,那么Hadoop將自動(dòng)認(rèn)為所有的JAR包的存儲(chǔ)方式都應(yīng)如此。通常情況下,這樣的做法并無問題,但是有時(shí)候,當(dāng)一個(gè)項(xiàng)目需要維護(hù)大量共享庫的時(shí)候,這就變得非常復(fù)雜。而且,大部分時(shí)間JAR包通常都在安裝客戶端的時(shí)候一并安裝過,Hadoop這種存儲(chǔ)方式使得JAR包多次存儲(chǔ)。據(jù)悉,腳本存儲(chǔ)的問題Pig新版本已修正,但是共享函數(shù)庫存儲(chǔ)的問題卻仍然存在。

    5、 報(bào)錯(cuò)信息不完整

    這幾乎是Hadoop系列工具的通病,經(jīng)常在出了問題的時(shí)候,返回一個(gè)“運(yùn)行失敗,無更多錯(cuò)誤信息”這樣的報(bào)錯(cuò)提示,使得開發(fā)者無法進(jìn)行更進(jìn)一步的錯(cuò)誤調(diào)試。還有,Hadoop經(jīng)常會(huì)拋出一些無法找到指針的異常(NPE),而這些問題則是由文件解析之類的操作造成,并不能屬于NPE范疇。另外,由于采用UDFS,導(dǎo)致很多報(bào)錯(cuò)最終以u(píng)df執(zhí)行錯(cuò)誤的樣子呈現(xiàn)給開發(fā)者,而它們可能僅僅是語法錯(cuò)誤或者類型錯(cuò)誤。

    6、 不兼容的安全機(jī)制

    開發(fā)者經(jīng)常會(huì)聽到這樣的說法:“已經(jīng)有足夠多的案例證明,想要保證Hadoop的安全性,建議使用Kerberos,LDAP直白易用。”但是現(xiàn)狀就是,Hadoop平臺(tái)并未對此有友好的集成:沒有SAML、沒有OAuth,也沒有很好的安全驗(yàn)證機(jī)制(開發(fā)者只能時(shí)不時(shí)的無奈面對再一次出現(xiàn)的登錄窗口)。更有意思的是,Hadoop平臺(tái)中很多組件都自己支持LDAP,且彼此不考慮兼容性。

    7、 難以開發(fā)的LDAP連接器

    對開發(fā)者來講,用Java成功完成一個(gè)能用的LDAP連接器,至少需要修改上百次代碼。而反過來看看完成的代碼,連接器的功能還不完善。實(shí)際上,開發(fā)者們能感覺出Knox有點(diǎn)像一時(shí)沖動(dòng)的產(chǎn)物。畢竟用Apache配置mod_rewrite模塊就能完成的事情,非要用Java再寫一遍,的確是讓開發(fā)者頭痛的事情。

    8、 難以擴(kuò)展的Hive表管理

    如果開發(fā)者使用Hive進(jìn)行表管理的話,在Hive執(zhí)行了drop表命令后,會(huì)自動(dòng)將表刪除。但是如果這個(gè)表是外部的話,則不會(huì)自動(dòng)刪除。為什么Hive不能將這兩個(gè)表同樣對待呢?此外,既然Hive現(xiàn)在有向RDBMS發(fā)展的趨勢,為什么不增加Update和Delete?

    9、 不兼容的Namenode

    Hadoop的很多組件,如Oozie、Knox等,都不遵循新的Namenode HA。開發(fā)者可以做一個(gè)HA Hadoop,前提是他完全不想使用其他組件。

    10、 出錯(cuò)的文檔

    Hadoop的文檔存在很多問題,開發(fā)者經(jīng)常會(huì)發(fā)現(xiàn)文檔的示例代碼中有問題,有一些文檔本身都沒有遵循Hadoop的模式設(shè)計(jì)。鑒于這些文檔在互聯(lián)網(wǎng)上流傳廣泛,應(yīng)該有相當(dāng)一批人學(xué)習(xí)并嘗試,因此都會(huì)遇到并糾結(jié)于這些錯(cuò)誤。實(shí)際上,有些錯(cuò)誤是完全可以避免的,只要文檔的撰寫人在完成文檔的同時(shí),自己動(dòng)手運(yùn)行一下示例代碼。比如Oozie文檔中充斥著大量過去版本的樣例代碼,開發(fā)者遇到錯(cuò)誤的時(shí)候,很可能不是自己程序?qū)戝e(cuò)了,而是由于Oozie版本更替而導(dǎo)致之前教程中的函數(shù)不兼容造成,比如協(xié)議問題、模式有效性問題等等。有人形容Oozie,稱其類似Ant和Maven,只是沒有任何調(diào)試手段,而且代碼非常善變。

    此外,在Hadoop平臺(tái)的適用范圍方面,它對實(shí)時(shí)數(shù)據(jù)訪問支持并不好,也無法高效存儲(chǔ)大量小文件,而且目前尚不支持多用戶。

    作者 張?zhí)炖?/a>

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();