標簽(空格分隔): Spark
學習中的知識點:函數式編程、泛型編程、面向對象、並行編程。
任何工具的產生都會涉及這幾個問題:
- 現實問題是什么?
- 理論模型的提出。
- 工程實現。
思考: 數據規模達到一台機器無法處理的時候,如何在有限的時間內對整個數據集進行遍歷及分析?
Google針對大數據問題提出的一些解決方案:
- MapReduce: 計算框架;
- GFS:數據存儲
- BigTable:NoSQL始祖。
Hadoop是根據MapReduce和GFS兩大論文所做的開源實現,因此,它主要解決2大問題:數據存儲,分布式計算框架。
YARN是Hadoop2和Hadoop1的最大區別,將集群管理本身獨立出來。而計算模型則更加專注於問題本身。
Spark簡介
Spark是由UC Berkeley的AMPLab出品的,主要創作者是Matei Zaharia. Spark與MapReduce位於Hadoop生態圈的同一層,主要解決分布式計算框架的問題。
Spark與Hadoop有以下關系:
- Spark和Hadoop中的MapReduce位於同一層次;
- Spark可以部署在YARN(專門管理集群工作的)上;
- Spark支持HDFS文件系統的訪問。
Mac Scala安裝
-
使用brew安裝:
brew install scala
-
下載包安裝
tar zxvf ~/Download/scala-2.12.1.tgz #解壓
mv ~/Download/scala-2.12.1 ~/Download/scala #重命名
mv ~/Download/scala /usr/local/share/ #將文件夾放到合適的位置修改環境變量,如果不是管理員可使用 sudo 進入管理員權限,修改配置文件profile,在文件的末尾加入:
export PATH="$PATH:/usr/local/share/scala/bin" -
驗證
$ scala
顯示:Welcome to Scala version 2.11.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40).
Type in expressions to have them evaluated.
Type :help for more information.
Mac Spark安裝
-
使用brew安裝
$ brew install apache-spark
-
檢測是否安裝成功
cd /usr/local/Cellar/apache-spark/1.3.0/bin/
- 輸入:
./spark-shell
啟動spark
WordCount in spark-shell
在spark-shell中完成單詞統計:
val file = sc.textFile("/usr/local/Cellar/apache-spark/1.3.0/README.md")
// 以空格為拆分標志,將文件中的每一行分割為多個單詞
val words = file.flatMap(line => line.split(" "))
// 對每一個單詞進行計數
val wordNumber = words.map(w => (w, 1))
// 將單詞進行分類合並,計算每個單詞總的出現次數
val wordCounts = wordNumber.reduceByKey(_+_)
//將所有單詞及其出現次數打印出來
wordsCounts.foreach(println)
上述工作的簡單表述形式:
sc.textFile("/usr/local/Cellar/apache-spark/1.3.0/README.md")
.flatMap(line => line.split(" "))
.map(w => (w, 1))
.reduceByKey(_+_)
.foreach(println)