Spark是一個快速且通用的集羣計算平臺html
1)Spark是快速的linux
Spark擴充了流行的Mapreduce計算模型web
Spark是基於內存的計算算法
2)Spark是通用的sql
Spark的設計容納了其它分佈式系統擁有的功能shell
批處理,迭代式計算,交互查詢和流處理等apache
3)Spark是高度開放的瀏覽器
Spark提供了Python,Java,Scala,SQL的API和豐富的內置庫。網絡
Spark和其它的大數據工具整合的很好,包括hadoop,kafka等ssh
Spark包括多個緊密集成的組件
Spark Core:
包含Spark的基本功能,包含任務調度,內存管理,容錯機制等
內部定義了RDDs(彈性分佈式數據集)
提供了不少APIs來建立和操做這些RDDs
應用場景,爲其餘組件提供底層的服務
Spark SQL:
是Spark處理結構化數據的庫,就像Hive SQL,Mysql同樣
應用場景,企業中用來作報表統計
Spark Streaming:
是實時數據流處理組件,相似Storm
Spark Streaming提供了API來操做實時流數據
應用場景,企業中用來從Kafka接收數據作實時統計
MLlib:
一個包含通用機器學習功能的包,Machine learning lib
包含分類,聚類,迴歸等,還包括模型評估和數據導入。
MLlib提供的上面這些方法,都支持集羣上的橫向擴展。
應用場景,機器學習。
Graphx:
是處理圖的庫(例如,社交網絡圖),並進行圖的並行計算。
像Spark Streaming,Spark SQL同樣,它也繼承了RDD API。
它提供了各類圖的操做,和經常使用的圖算法,例如PangeRank算法。
應用場景,圖計算。
Cluster Managers:
就是集羣管理,Spark自帶一個集羣管理是單獨調度器。
常見集羣管理包括Hadoop YARN,Apache Mesos
Spark底層優化了,基於Spark底層的組件也獲得了相應的優化。
緊密集成,節省了各個組件組合使用時的部署、測試等時間。
向Spark增長新的組件時,其它組件,可馬上享用新組件的功能。
Hadoop應用場景:離線處理、對時效性要求不高
Spark應用場景:時效性要求高的場景、機器學習等領域
Doug Cutting的觀點:這是生態系統,每一個組件都有其做用,各善其職便可。Spark不具備HDFS的存儲能力,要藉助HDFS等持久化數據。大數據將會孕育出更多的新技術。
Spark是Scala寫的,運行在JVM上,因此運行環境Java7+
若是使用Python API,須要安裝Python2.6+或者Python3.4+
版本對應:Spark1.6.2 - Scala2.10 Spark2.0.0 - Scala2.11
Spark下載地址:http://spark.apache.org/downloads.html 注:搭Spark不須要Hadoop,若有hadoop集羣,可下載相應的版本。
這裏安裝在CentOS6.5虛擬機上,將下載好的文件上傳虛擬機,並執行解壓:tar -zxvf spark-2.0.1-bin-hadoop2.6.tgz
Spark目錄:
bin包含用來和Spark交互的可執行文件,如Spark shell。
examples包含一些單機Spark job,能夠研究和運行這些例子。
Spark的Shell:
Spark的shell可以處理分佈在集羣上的數據。
Spark把數據加載到節點的內存中,所以分佈式處理可在秒級完成。
快速使用迭代式計算,實時查詢、分析通常可以在shells中完成。
Spark提供了Python shells和Scala shells。
這裏以Scala shell爲例,演示讀取本地文件並進行操做:
進入Scala shell:./spark-shell
建立測試文件helloSpark並輸入內容:
輸入val lines=sc.textFile("/home/lucy/hellospark") 加載文件內容,輸入lines.count()進行統計行數: ( 注:sc爲spark content)
ssh的配置:(ssh localhost須要輸入密碼,這在運行spark程序時是不能夠的)
ssh-keygen (生成祕鑰)
.ssh目錄下cat xxx_rsa.pub> authorized_keys
chmod 600 authorized_keys
Scala 下載地址: http://www.scala-lang.org/download/2.11.6.html 注:默認安裝選項會自動配置環境變量,安裝路徑不能有空格。
IntelliJ IDEA 下載地址:https://www.jetbrains.com/idea/
註冊碼地址:http://idea.lanyus.com
因爲這裏下載的ideaIU-15.0.2.exe,已經包含有Scala插件,若是不包含須要下載。查看是否已有scala插件能夠新建項目,打開Files->settings選擇Plugins,輸入scala查看:
依次點擊File->New->Project,選擇Scala->SBT,下一步,打開以下窗口:
這裏Scala選擇爲2.11.6,建立完成後會進行初始化操做,自動下載jar包等。下載時常看具體網絡狀況。待全部進度條完成後,項目目錄已經出來了,以下:
編輯build.sbt:
name := "LearnSpark"
version := "1.0"
scalaVersion := "2.11.1"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.0.2"
編輯完成後,點擊刷新,後臺自動下載對應的依賴:
src->scala右擊新建scala類WordCount
import org.apache.spark.{SparkContext, SparkConf} /** * Created by Lucy on 2017/7/4. */ object WordCount { def main(args: Array[String]) { val conf=new SparkConf().setAppName("wordcount") val sc=new SparkContext(conf) val input=sc.textFile("/home/lucy/helloSpark") val lines=input.flatMap(line=>line.split(" ")) val count=lines.map(word=>(word,1)).reduceByKey{case (x,y)=>x+y} val output=count.saveAsTextFile("/home/lucy/hellosparkRes") } }
代碼編寫完成後,進行打包(配置jar包,build):
配置jar包:File->Project Structure,選擇Artifacts,點擊+號:
這裏不打包依賴。配置jar包完成後,Build->Build Artifacts,等待build完成。
這裏須要先啓動集羣:
啓動master: ./sbin/start-master.sh
啓動worker: ./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost:7077
這裏的地址爲:啓動master後,在瀏覽器輸入localhost:8080,查看到的master地址
啓動成功後,jps查看進程:
接下來執行提交命令,將打好的jar包上傳到linux目錄,jar包在項目目錄下的out\artifacts下。
提交做業: ./bin/spark-submit --master spark://localhost:7077 --class WordCount /home/lucy/learnspark.jar
能夠在4040端口查看job進度:
查看結果:
因爲按照空格分割字符串,因此這裏將Spark! 視爲一個單詞。至此,任務運行結束!
轉自 https://www.cnblogs.com/wonglu/p/5901356.html