Spark1——介绍
1、Spark是什么
Spark是一個用來實現快速而通用的集群計算的平臺。
?
2、Spark是一個大一統的軟件棧
Spark項目包含多個緊密集成的組件。首先Spark的核心是一個對由很多計算任務組成的、運行在多個工作機器或者是一個計算集群上的應用進行調度、分發以及監控的計算引擎。
Spark的個組件如下圖所示:
- Apache Spark 也就是Spark的核心部分,也稱為Spark Core,這個部分實現了Spark的基本功能,包含任務調度、內存管理、錯誤恢復、與存儲系統交互模塊,還包含了對彈性分布式數據集(RDD)的API定義。
- Spark SQL是Spark用來操作結構化數據的程序包。通過Spark SQL,我們可以使用SQL或者HQL來查詢數據。
- Spark Streaming 是Spark提供的對實時數據進行流式計算的組件。比如生產環境中的網頁服務器日志,或是網絡服務中用戶提交的狀態更新組成的消息隊列,都是消息流
- MLlib這是一個包含了常見機器學習功能的程序庫,包括分類、回歸、聚類、協同過濾等
- GraphX是用來操作圖的程序庫,可以進行并行的圖計算。
3、Spark的核心概念
從上層來看,每個Spark應用都由一個驅動器程序來發起集群上的并行操作。驅動器程序包含應用的main函數,并且定義了集群上的分布式數據集,還對這些分布式數據集應用了相關操作。
驅動器程序通過一個SparkContext對象來訪問Spark。這個對象代表對計算集群的一個連接,當Spark shell啟動時已自動創建了一個SparkContext對象。
val textFile = sc.textFile("hdfs://...") val counts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) counts.saveAsTextFile("hdfs://...")這里的sc變量,就是自動創建的SparkContext對象。通過它就可以來創建RDD,調用sc.textFile()來創建一個代表文件各行文本的RDD。
通過RDD我們就可以在這些行上進行各種操作,通常驅動器程序要管理多個執行器節點。比如,如果我們在集群上運行輸出操作,那么不同的節點就會統計文件不同部分的行數。
?
4、初始化SparlContext
一旦完成了應用與Spark的連接,接下來就需要在程序中導入Spark包并創建SparkContext.我們可以通過先創建一個SparkConf對象來配置應用,然后基于這個SparkConf來創建一個Sparktext對象。
val conf = new SparkConf().setAppName("wordcount").setMaster("local") val sc = new SparkContext(conf)這里創建了SparkContext的最基礎的方法,只需要傳遞兩個參數:
- 應用名:這里使用的是"wordcount?",當連接到一個集群的時候,這個值可以幫助我們在集群管理器的用戶界面中找到你的應用,這是這個程序運行后的集群管理器的截圖
- 集群URL:告訴Spark如何連接到集群上,這里使用的是local,這個特殊的值可以讓Spark運行在單機單線程上而無需連接到集群上
?
轉載于:https://www.cnblogs.com/xxbbtt/p/8425376.html
總結
以上是生活随笔為你收集整理的Spark1——介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python之字符串连接
- 下一篇: [BZOJ4537][Hnoi2016]