Storm, Spark, Hadoop三個大數據處理工具都是JVM上的語言寫成的,這件事是否能說明什麼?

Storm由java和clojure寫成,Spark由Scala寫成。語言對於這些工具的成長屬性具有本質性的影響。jvm上的語言具有什麼特殊的巨大優勢,讓這些主流的大數據處理工具能鍾愛他們?Clojure,Scala,Groovy等會影響越來越多的人去使用和投入開發嗎?


Java是一門優秀的語言,但是有三個軟體是用JVM平台的語言寫的說明不了Java或者JVM如何。

現任Apache軟體基金會主席Doug Cutting開發了三個很牛逼的開源,Lucene、Nutch和Hadoop,都是用Java寫的,這說明了什麼,只能說明Doug本人非常熟悉Java。當然,Doug是業餘時間讀論文然後照著論文實現的這些東西,還說明了Doug具有很強的學習能力和專研精神。


1)這三個平台核心是解決分散式計算的問題,單機性能適當折損不是其關鍵點,更多關注如何提升機群整體吞吐;

2)開源項目常常被應用於各種業務模式,雖然關鍵問題一致,但細微差異非常多。研發效率同樣非常重要。雖然比不上python、php,但比C要強很多(CPU性能上的損失尚可接受)

btw,很多底層公共庫(比如壓縮演算法、切詞庫等等)非常關注單機性能消耗且業務模型單一,因此依然要用C/C++實現;


大型項目,尤其是初期人少的情況下要自己管理內存是一件很恐怖的事情,所以儘可能的交給JVM處理,自己負責把架構設計好. 很多時候性能的瓶頸都在於架構和IO上,項目越大,語言本身的性能問題就越不明顯.


java是開源社區貢獻力量最大的語言之一(或許可以把之一去掉),很多優秀的開源產品,很多優秀的創新產品。要說jvm上的語言的優勢,最大的莫過於跨平台,以及嚴謹的代碼思路,性能現在已經跟其他編譯語言沒差距了。

其實什麼語言都沒太大區別,語言只是個工具,用C也罷,用python也罷,都一樣,編程思路還是一樣的。

java這麼多年的發展,那麼多IT人在上面貢獻,改進,創造。有這麼好的積累,當然有能力繼續作為其他開源產品的首選語言。


說明了JVM是個好虛擬機。

JVM經歷了10多年的發展,各大IT巨頭在JVM上投入了很多人力財力,累計起來投入了至少有數十億美金不為過。IBM, Sun, Oracle, MS,等巨頭,幾乎都自己重新實現了一個JVM,有IBM J9 VM, Sun HotSpot, Oracle JRockit, 還有開源的Open JDK,參考 Java虛擬機家族考

最後,近幾年被應用的最廣泛的就是Android 上的 Dalvik VM了。

光JVM就這麼多實現,這些實現不是玩具,都是高品質的,性能非常高。

更不用提JVM平台上的各種庫,IDE(Eclipse, Idea),框架(Sping, Structs, Hadoop),等等。JVM上的開源項目,有很多是商業公司背後聘請全職人員在做這些開源項目,這些都是錢啊!!

這麼多錢砸進去,這麼多人力投入進去,十幾年了,還有哪個語言的 VM 比JVM靠譜?!


其實java最主要的一個優勢就是有了一個互聯性足夠好的庫架構,基本上任何時候你發現一個java庫不錯,你都可以把它引入到你的項目裡面。而且是在不需要修改代碼或者重新編譯的情況下完成。

如果都從頭自己那麼語言之間可以認為沒有什麼區別,只是不知道現在還會有人這樣做嗎?

一旦要考慮引入庫,那麼java的優勢就很明顯了。c和c++都逃不掉至少需要重新編譯庫的問題,而且很多時候一些庫無法組合在一起用(不修改庫的代碼的情況下)。

而hadoop使用了java,並且獲得了巨大的成功,這自然的讓更多的集群軟體選擇使用jvm。否則不說其他的,你hdfs的時候還能夠這麼方便嗎?


Java利器:網路、IO、多線程。所以選他也是合情合理的。。。


優勢

  • 開源支持最大
  • 提高開發速度
  • VM 並不只有Java

不足

  • VM的GC在超大集群中成為瓶頸。 如 HBase 和 Spark 的gc 處理 ;

  • 性能;

為什麼依然VM , 就好比最普遍的一般是最中庸而容易接受的事物, 這與開源關係最大


Facebook用PHP並不說明PHP是一門很好的語言


沒有說用什麼語言是必要的

只是Java確實是成熟的工業級語言 可以讓開發者更專註於架構和功能 可以寫出更健壯和易維護的代碼

至於性能都是調優的事

jvm沒想像的差

有些問題 有些時候純粹是程序員coding功力問題 別什麼都怪jvm 修一下自己代碼吧

真的瓶頸受不了了

再用c++去按照已有架構改 也是可以的

畢竟架構已經成型和穩定

只是有點折騰 和需要成本

阿里已經用c++重寫了整個HBase

聽說效能炒雞棒

但是假如一開始用c++刻一個HBase?

十有八九慘不忍睹

所以不是輪不到你們選Java還是php還是啥的 都是環境的選擇

對了 scala作為oo和fp的結合體

感覺不錯 看好

如此


編程語言只要圖靈完備,任何其他語言可以完成的東西,這個需要就一定可以,同樣一個有完整機器指令映射的vm都可以完成其他vm可以做的事情,為什麼如此眾多項目使用或基於JVM的原因是,在各種vm中(JVM,clr等)中JVM兼具使用範圍廣和開源兩個優勢,任何人都可以自由優化,改造。於這個vm性能無直接關係。。。這也是為什麼安卓市場份額比ios高的原因


是否能說明大數據平台的計算設備集群組成中可以由異構處理器、異構操作系統、任意計算設備,只要能運行JVM就行?


  1. 使用人數

  2. 開放性

  3. java大牛多
  4. 本身的優異
  5. 還在持續不斷的改進
  6. 、、、、、


我覺得這是一個長時間積累之後的一種反應。我最喜歡java的一點就是java語言相對來說條條框框比較多,限制多,當然很多人不喜歡java也是因為這個。我的經驗是java語言寫的程序還是比較好維護,每個java coder肯定都有自己喜歡java的方面。總得來說喜歡java的人比不喜歡的多的多,所以這個攤子夠大,鋪開了,就會形成一個良性循環,吸引更多的愛好者和投資者。


Java系列(包括Java、Scala等)對多線程、並發支持好,有很多成熟的框架可以用,適合快速構建分散式系統和相應的應用程序。我覺得究其根本原因,其實還是開發效率問題,沒有那麼多精力和時間去折騰,不像人家Google對C++那麼熱衷,關鍵是人牛X啊(題外話,這同時也是他們選擇Java作為Android應用開發語言的原因)


但至少說明了三點:

1.java是一門非常成熟的網路開發語言,對於網路環境下的應用服務開發非常方便;

2.java的跨平台能力,用java可以比較好的實現跨平台移植,所以開發者一般不用太去考慮平台移植的問題;

3.java有較強的並行計算能力,多線程+協同(nio);


Java是一種成熟的工業語言。


說明java 虛擬機是個好虛擬機


對於語言的個人選擇來說不能說明什麼!

1,目前為止,折騰大數據的都是大公司,JAVA在大公司中市場大,所以技術人員用JAVA做分析工具順理成章;

2,數學分析,、科研方面,python可能更甚一籌;

3,最後落實到個人技術選型方面,真不認為這些就能說明JAVA就是做大數據的必須或者首選。


說明java開源社區的力量太大,生態環境很好很好


推薦閱讀:

TAG:編程語言 | 大數據處理 |