Hadoop Spark Java Linux大數據機器學習平台

Hadoop Spark Java Linux大數據機器學習平台

Linux

Linux最初是作為支援英特爾x86架構的個人電腦的一個自由作業系統。Linux可以執行在伺服器和其他大型平台之上,如大型電腦和超級電腦。Linux也廣泛應用在嵌入式系統上,如手機(Mobile Phone)、平板電腦(Tablet)、路由器(Router)、電視(TV)和電子遊戲機等。在行動裝置上廣泛使用的Android作業系統就是建立在Linux核心之上。

 

Hadoop

Hadoop框架透明地為應用提供可靠性和資料移動。它實現了名為MapReduce的編程範式:應用程式被分割成許多小部分,而每個部分都能在叢集中的任意節點上執行或重新執行。此外,Hadoop還提供了分布式檔案系統,用以儲存所有計算節點的資料,這為整個叢集帶來了非常高的帶寬。MapReduce和分布式檔案系統的設計,使得整個框架能夠自動處理節點故障。它使應用程式與成千上萬的獨立計算的電腦和PB級的資料連接起來。現在整個Apache Hadoop「平台」包括Hadoop核心、MapReduce、Hadoop分布式檔案系統(HDFS)以及一些相關項目,有Apache Hive和Apache HBase等等。

Spark

使用Spark需要搭配叢集管理員和分散式儲存系統。Spark支援獨立模式(本地Spark叢集)、Hadoop YARN或Apache Mesos的叢集管理。 在分散式儲存方面,Spark可以和  HDFS、 Cassandra 等介面搭載。 Spark也支援分散式(pseudo-distributed)本地模式,不過通常只用於開發或測試時以本機檔案系統取代分散式儲存系統。在這樣的情況下,Spark僅在一台機器上使用每個CPU核心執行程式。
Spark核心和彈性分散式資料集(RDDs)
Spark核心是整個專案的基礎,提供了分散式任務調度,排程和基本的I/O功能。而其基礎的程式抽象則稱為彈性分散式資料集(RDDs),是一個可以並列操作、有容錯機制的資料集合。 RDDs可以透過參照外部儲存系統的資料集建立(共享檔案系統、HDFS、HBase或其他 Hadoop 資料格式的資料來源)。或者是通過在現有RDDs的轉換而建立(map、filter、reduce、join等等)。
RDD抽象化是經由一個以Scala, Java, Python的語言整合API所呈現,簡化了編程複雜性,應用程式操縱RDDs的方法類似於操縱本地端的資料集合。

Spark SQL

Spark SQL在Spark核心上帶出一種名為SchemaRDD的資料抽象化概念,提供結構化和半結構化資料相關的支援。Spark SQL提供了領域特定語言,可使用Scala、Java或Python來操縱SchemaRDDs。它還支援使用使用命令行介面和ODBC/JDBC伺服器操作SQL語言。SchemaRDD被重新命名為DataFrame。
Spark Streaming充分利用Spark核心的快速排程能力來執行串流分析。它擷取小批次的資料並對之執行RDD轉換。
MLlib是Spark上分散式機器學習框架。Spark分散式記憶體式的架構比Hadoop磁碟式的Apache Mahout快上10倍。MLlib可使用許多常見的機器學習和統計演算法,簡化大規模機器學習時間:
匯總統計、相關性、分層抽樣、假設檢定、隨機資料生成
分類與回歸:支援向量機、回歸、線性回歸、邏輯回歸、決策樹、樸素貝葉斯
協同過濾:ALS
分群:k-平均演算法
維度約減:主成分分析(PCA)
特徵提取和轉換:Word2Vec
最佳化:隨機梯度下降法(SGD)