我們已經在大數據領域進行了很長時間的探險了,雖然大數據已經不再讓人眼前一亮和感到新鮮,但技術的不斷更新足以讓你時刻關注這個領域。同時,這也是很多企業技術更新最快的領域,但還是有一些技術會長期占據靠前的位置,直到有更好的替代品出現為止。
許多技術在未來面臨著很大變化,或者重大升級。以下的這些技術,你或許可以考慮替換掉了:
1、MapReduce。 MapReduce速度很慢,它很少成為解決問題的最佳方式。還有其他算法可供選擇 - 最常見的是DAG,其中MapReduce可以被認為是一個子集。如果你做了一堆自定義的MapReduce作業,Spark在性能上的優勢絕對值得你為了切換在Spark上運行付出的成本。
2、Storm,雖說不敢確定Spark是否占據了整個流媒體市場。但是相比于Spark而言,Apex或者Flink似乎在性能上更加優秀,有著更低的延遲,更適合作為Storm的替代品。選用工具之前,你應該先評估你能允許的延遲范圍是多少以及代碼的最低出錯率是多少。Hortonworks作為Storm的唯一支持者,也在面臨著越來越大的市場壓力,未來的Storm可能不會得到太多關注。
3、Pig。Pig是一種編程語言,它簡化了Hadoop常見的工作任務。Pig最大的作用就是對mapreduce算法(框架)實現了一套shell腳本 ,類似我們通常熟悉的SQL語句。但Pig現在也備受打擊,似乎用它可以完成的事情,很多其他技術也可以完成。
4、Java。不僅僅是JVM,而是一門編程語言。大數據很多任務所用的語法都很笨重。而且,即便是Lambda這樣較新的結構也以一種尷尬的方式被放在一邊。大數據的世界中很多工作已經轉移到Scala和Python上了(如果你能承受性能損失,可以使用Python庫或雇傭Python開發人員)。 當然,你可以使用R語言的stats包,但最后你可能還是會用Python重寫它,因為R語言缺少很多特征。
5、Tez。這是Hortonworks的另一個項目,支持DAG作業的計算框架,而其開發人員認為Tez更像是“匯編語言”。與此同時,隨著Hortonworks將其發布,你就完全不需要在Hive或者其他工具之后使用它了,你可以在其發行版中使用Spark作為引擎。 雖說發行了,但Tez總是有各種bug。 同樣地,這也是一個供應商項目,沒有其他技術廠商或社區支持。相比其他解決方案,它似乎并沒有什么優勢。
6、Oozie。它不是一個單純的工作流引擎或調度程序,它二者都是。它并不難用,與Tez相比,Tez偏底層,Oozie偏頂層,但你應該可以在StreamSets,DAG實現和其他工具之間,找到可以替代Oozie的。
7、Flume。 在StreamSets、Kafka以及其他解決方案之間,你總能找到一個足以替代Flume的。 Apache Flume是一個分布式、高可靠和高可用的收集、集合和將大量來自不同來源的日志數據移動到一個中央數據倉庫。目前有兩個可用的發布版本,0.9.x和1.x。但Flume是時候快速發展了,再不往前一步,就只能后退了。
可能2018年會這樣......
接下來會發生什么?一些技術可能已經到年齡了,但完全合適的替代品可能還沒出現。
1、Hive。Hive好像是地球上性能最差的分布式數據庫。如果沒有數據倉庫這個概念,誰會開發這樣一個東西呢?只在數據倉庫的統計分析上有些用處,不適用于所有要求低延遲的任務。
2、HDFS。在Java中編寫系統級服務不是最好的想法。Java的內存管理也使得推送大量的字節有點慢。HDFS NameNode的工作方式不是很理想,并構成瓶頸。各種供應商都有解決方法,但老實說,更好的工具是存在的,還有其他分布式文件系統,比如MaprFS就是一個不錯的選擇,還有Gluster.......
結語
總結下來,未來的Spark、Apex、Flink還有著廣闊的發展前景,而Storm、Hive、HDFS等等看起來已經過時或者用處不大的技術應該從你的名單上剔除了。或者也可以看看,還有哪些值得添加到名單里的,評論告訴我。