簡單的說apache spark是乙個開源的、強大的分布式查詢和處理引擎,它提供mapreduce的靈活性和可擴充套件性,但速度明顯要快上很多;拿資料儲存在記憶體中的時候來說,它比apache hadoop 快100倍,訪問磁碟時也要快上10倍。
cluster mannager:在集群上獲得資源的外部服務(spark standalon,mesos,yarm);
rdd:spark 的基本運算單元,通過scala集合轉化,讀取資料集生成或者由其他rdd經過運算元操作得到;
job:可以被拆分成task平行計算的單元,一般為spark action 觸發的一次執行作業;
stage:每個job會被拆分成很多組task,每組任務被稱為stage,也可稱taskset,該屬於經常在日誌中看到;
task:被送到executor上執行的工作單元。
解讀spark執行過程之前,我們需要先了解一下sparkcontext是什麼。
sparkcontext:sparkcontext是spark功能的主要入口。其代表與spark集群的連線,能夠用來在集群上建立rdd、累加器、廣播變數。每個jvm裡只能存在乙個處於啟用狀態的sparkcontext,在建立新的sparkcontext之前必須呼叫stop()來關閉之前的sparkcontext。在sparkcontext的初始化過程中,spark會分別建立dagscheduler作業和taskscheduler任務排程兩級排程模組。
更直白的可以說sparkcontext是spark的入口,相當於應用程式的main函式。目前在乙個jvm程序中可以建立多個sparkcontext,但是只能有乙個啟用狀態的。
spark執行
任何spark應用程式在執行的時候都會分離主節點上的單個驅動程式(driver program)(程式中可以有多個作業),然後將執行程序分配給多個工作節點(worker node),驅動程序會確定任務程序的數量和組成,這些任務程序是根據為指定作業生成的圖形分配給執行節點的。
spark詳細執行流程
當乙個spark應用被提交時,首先需要為這個應用構建起基本的執行環境,即由任務控制節點(driver)建立乙個sparkcontext,由sparkcontext負責和資源管理器(cluster manager)的通訊以及進行資源的申請、任務的分配和監控等。sparkcontext會向資源管理器註冊並申請執行executor的資源;資源管理器為executor分配資源,並啟動executor程序,executor運**況將隨著「心跳」傳送到資源管理器上;
sparkcontext根據rdd的依賴關係構建dag圖,dag圖提交給dag排程器(dagscheduler)進行解析,將dag圖分解成多個「階段」(每個階段都是乙個任務集),並且計算出各個階段之間的依賴關係,然後把乙個個「任務集」提交給底層的任務排程器(taskscheduler)進行處理;executor向sparkcontext申請任務,任務排程器將任務分發給executor執行,同時,sparkcontext將應用程式**發放給executor;
任務在executor上執行,把執行結果反饋給任務排程器,然後反饋給dag排程器,執行完畢後寫入資料並釋放所有資源。
apache spark是用scala程式語言編寫的。為了用spark支援python,apache spark社群發布了乙個工具pyspark。使用pyspark,我們也可以使用python程式語言中的rdd。正是由於乙個名為py4j的庫,他們才能實現這一目標。
目前,70%資料科學家和分析專家都使用python,能夠將python和spark相結合,也給該類人群帶來了福音。
Spark學習筆記(一) spark簡介
spark是基於記憶體計算的大資料平行計算框架。09年誕生於加州大學伯克利分校amplab.spark是mapreduce的替代方案,相容hdfs hive等分布式儲存層,可融入hadoop的生態系統,以彌補mapreduce的不足。其主要優勢如下 中間結果輸出 可以將多stage的任務串聯或者並行...
hive 優化超全
select僅查詢本表字段 where僅對本表字段做條件過濾 explain 顯示執行計畫 explain extended query hive執行方式 本地模式 將資料抓取到本地 計算 集群模式 計算向資料移動 主要耗費時間是 提交任務 和 yarn 資源管理 本地模式 開啟本地模式 set h...
超全的NFS文件 FOR LINUX
nfs server可以看作是乙個file server,它可以讓你的pc通過網路將遠端得nfs server共享出來的檔案mount到自己的系統中,在client看來使用nfs的遠端檔案就象是在使用本地檔案一樣。nfs協議從誕生到現在為止,已經有多個版本,如nfs v2 rfc1094 nfs v...