Rust 重構 Spark 框架需要做哪些準備工作?


蟹妖

重複造輪子……有啥用?Hello World用啥語言寫也變不成Hello Kitty


不好意思,對Rust不熟,只知道它是Mozzila搞出來的一門新語言。spark當時選擇用Scala開發估計很大的原因是想最快融入Hadoop為主並且基於jvm的大數據生態圈。我們也看到了,這個決策確實給Spark的成功貢獻頗多。比如spark可以和hdfs, yarn很好的工作。並且讓hadoop的傳統用戶比較平滑的從mapreduce遷移的spark上。如果失去了jvm這個成熟的生態系統的支持,估計開發工作會相當大。另外如果想讓Rust Spark和jvm hdfs一起工作,也許效率上會有一定的損失。


看題目有點受驚了,個人覺得用Rust實現Spark-Core的功能還是可行的,要實現Spark所有功能那工作量確實不小(PS:對Rust不熟,沒什麼使用經驗,對Spark源碼有一定了解)

現在已經有了,

Python版本的Spark:douban/dpark

Go版本的Spark:mijia/gopark

不知道會不會有人打算弄個Julia版本的。

至於準備工作,至少需要搞定RPC、代碼序列化,然後熟悉Spark的核心設計,其實也不算太複雜,Spark使用Scala開發,可以直接使用各種開源庫,尤其是跟Hadoop結合很方便,這點如果換成其他語言,就需要費一些功夫。

建議了解下Spark初期版本的代碼(1W行左右):apache/spark-branch-0.6

感覺重複造個輪子,學學習,研究研究,是挺好的事情,無可厚非。重新發明輪子的就沒大必要了,還不如一起完善Spark,畢竟現在Spark也是在不斷改進發展中的項目。


兩年前我就有這個想法,不過這個工作量還是有點大。

基本上,先把Spark的代碼看懂,然後照貓畫虎就行了。Spark用了上百個jar包,即利用了Java豐富的遺產,Rust則沒有那麼多包可用,例如akka這種actor庫沒有,得實現一個吧;netty也沒有,又得實現一個吧, etc.

工作量太大了。

Swift號稱要開源,我覺得肯定有人想用swift來擼一個spark出來,我認為Swift的工作量要小一些,因為它有Apple支持,開源後各種庫會迅速出現,省去了不少功夫。


看到題目一驚,就進來了,確實,支持弄一個


需要學習一下如何用rust調用scala代碼,可能涉及到jni相關、rust和cpp互動相關。


用Rust重構Spark?這種情況不應該叫「重寫」嗎?


還不如給Spark做個Rust的front end,就像PySpark和Spark R一樣


寫個翻譯器,然後跑一下


推薦閱讀:

國內哪些互聯網公司在用mesos,哪些互聯網公司在用yarn,兩者前景如何?
Spark里的DAG是怎麼回事?
Spark比Hadoop的優勢有這麼大嗎?
Scala 在大數據處理方面有何優勢?

TAG:Rust編程語言 | 大數據 | Spark |