Spark 簡介 從零開始
Spark是什麼
spark是一個快速且通用的集羣計算平臺
Spark是快速的
Spark擴充了流行的Mapreduce計算模型
Spar是基於內存的計算
Spark是通用的
Spark的設計容納了其它分佈式系統擁有的功能
批處理,迭代式計算,交互查詢和流處理等
優勢:下降了集羣的維護成本
Spark是高度開放的
Spark提供了Python,Java Scala,SQL的API和豐富的內之庫。
Spark和其它的大數據工具整合的很好,包括hadoop,kafka等
Spark的組件
Spark Core
包括Spark的基本功能,包括任務調度,內存管理,容錯機制等。
應用場景,爲其餘組件提供底層的服務
Spark SQL:
是Spark處理結構化數據的庫,就像Hive SQL,Mysql同樣。
應用場景,企業中用來作報表統計。
Spark Streaming:
實時數據流處理組件,相似Storm。
Sparm Streaming提供了API來操做實時流數據。
應用場景,企業中用來從kafka接受數據作實時統計。
Mlib:
一個包含通用機器學習功能的包,Machine learning lib。
包含分類,聚類,迴歸等,還包含模型評估,和數據導入。
MLlib提供的上面這些方法,都支持集羣上的橫向擴展。
應用場景,機器學習。
Graphx:
是處理圖的庫(例如,涉及網絡圖),並進行圖的並行計算。
像Spark Streaming,Spark SQL同樣,它也繼承了RDD API。
它提供了各類圖的操做,和經常使用的圖算法,例如PangeRank算法。
應用場景,圖計算。
Cluster Managers:
就是集羣管理,Spark自帶一個集羣管理是單獨調度器。
常見的集羣管理包括Hadoop YARN,Apache Mesos
緊密集成的優勢:
Spark底層優化了,基於Spark底層的組件,也獲得了相應的優化。
緊密集成,節省了各個組件使用時的部署,測試時間。
向Spark增長新的組件時,其它組件,可當即享用新組件的功能。
--------------------------------------------------------------
Spark與Hadoop的比較
Hadoop應用場景
離線處理
對時效性要求不高
Spark應用場景
實時性要求高的場景
機器學習等領域
比較
Doug Cutting的觀點
這是生態系統,每一個組件都有其做用,各善其職便可
Spark不具備HDFS的存儲能力,要藉助HDFS等持久化數據。
大數據將會孕育出等多的新技術
--------------------------------------------------------------
Spark安裝
Spark運行環境:
Spark是Scala寫的,運行在JVM上,因此運行環境Java7+。
若是使用Python API,須要安裝Python2.6+或者Python3.4+。
Spark 1.6.2 -Scala2.10 Spark 2.0.0 -Scala 2.11
Spark下載:
下載地址:http://spark.apache.org/downloads.html
搭Spark不須要Hadoop,若有Hadoop集羣,可下載相應的版本。
解壓html
也能夠在linux上經過wget命令下載linux
而後直接進行解壓算法
Spark目錄:
bin包含了用來和Spark交互的可執行文件,如Spark shell.
core,streaming,pytho,...包含主要組件的源代碼。
examples包含了一些單機Spark job,你能夠研究和運行這些例子。sql
Spark的shell:
Spark的shell使你可以處理分佈在集羣上的數據。
Spark把數據加載到節點的內存中,所以分佈式處理可在妙級完成。
快速的迭代式計算,實時查詢、分析通常可以在shell中完成。
Spark提供了Python shells和Scala shells。
Python Shell:
bin/pyspark
例如:./pyspark
退出:exit();
Scala Shell:
bin/spark-shell
例子:
val lines = sc.textFile("../../testfile/")
lines.count() 當前條數
lines.first 第一行
修改日誌級別 log4j.rootCategory = WARN,console
目錄conf/log4j.propertiesshell
--------------------------------------------------------------
Spark開發環境搭建
Scala安裝
下載地址: http://www.scala-lang.org/download/2.10.5.html
默認安裝選項會自動配置環境變量。
Spark 1.6.2 -Scala2.10 Spark 2.0.0 -Scala 2.11apache
Intellij IDEA的下載,安裝:網絡
下載地址:http://www.jetbrains.com/idea/dom
註冊碼地址: http://idea.lanyus.com
插件安裝ssh
plugins,搜索Scala直接安裝,插件中有scala和sbt.
步驟 機器學習
在Intellij中點擊File,選擇settings,而後點擊plugins,在彈出的右面的搜索框中輸入scala,而後找到直接點擊下載就能夠。
開發第一個Spark程序
配置ssh無密登陸:
ssh-keygen
.ssh目錄下 catxxx_rsa.pub > authorized_keys
chmod 600 authorized_keys
Spark開發環境搭建
搭建開發環境常遇到的問題:
網絡問題,致使sbt查詢加載失敗,解決方法,好的網絡環境
版本匹配問題 Scala2.10.5 , Jdk1.8 , Spark1.6.2, Sbt0.13.8
開發第一個Spark 程序
新建好的scala項目以下
File -> new -> Project.. -> 選擇Scala 右面的SBT選項 Next
如圖
如圖所示 紅框中指明 Spark-core 版本號,點擊上面的刷新,而後自動下載
開始寫入程序如圖
打包:
配置jar包
build
File - > Project Structure... -> Artifacts ->點擊+號 -> JAE -> From modules with dependencies... -> 選擇項目名 指明要打包的代碼
如圖所示 配置jar包成功
而後開始buld
Build -> Build Artifact... ->build
打包提交以前須要啓動集羣
進入 /usr/local/xiaoma/spark/spark-2.2.0-bin-hadoop2.6/sbin
啓動集羣:
啓動master ./sbin/start-master.sh
啓動worker ./bin/spark-class
提交做業 ./bin/spark-submit
例如:
1. 啓動master
././bin/start-master.sh
2.啓動worder
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost.localdomain:7077
http://www.imooc.com/video/143953.提交做業./bin/spark-submit --master spark://localhost.localdomain:7077 --class WordCount /home/mainxia/soft/wordcount.jar