分分鐘理解大數據基礎之Spark
Spark 是 2010 年由 UC Berkeley AMPLab 開源的一款 基於內存的分布式計算框架,2013 年被Apache 基金會接管,是當前大數據領域最為活躍的開源項目之一
Spark 在 MapReduce 計算框架的基礎上,支持計算對象數據可以直接緩存到內存中,大大提高了整體計算效率。特別適合於數據挖掘與機器學習等需要反復叠代計算的場景。
二特性
高效:Spark提供 Cache 機制,支持需要反復叠代的計算或者多次數據共享,基於Spark 的內存計算比 Hadoop MapReduce 快100倍。
易用:Spark提供 20 多種數據集操作類型,並支持使用 Python 和 Scala 腳本開發應用。
先進架構:Spark采用 Scala 語言編寫,基於 DAG 圖的執行引擎,減少多次計算之間中間結果寫到 HDFS 的開銷。
三應用場景
Spark之上有四種應用工具庫。
Spark Streaming: 用於流式計算。
MLlib:用於機器學習(聚類、協同過濾等)。
Spark SQL:用於處理結構化數據。
GraphX:用於圖和圖並行計算的API。
目前主要應用在廣告精準投放系統、日誌報表即時查詢、以及推薦系統等業務場景。這些應用場景的共同特點是計算量大且效率要求高。
四部署模式
Spark有三種部署模式。
Standalone:使用Spark自帶的集群管理器。
Spark on Mesos:使用 Mesos 管理資源。
Spark on YARN:使用 YARN 管理資源。
五任務流程
Spark重要組件包括 Driver Program(Driver) 和Executor。以 Standalone(Driver 運行在 Client)模式為例介紹任務執行流程。
客戶端運行用戶程序,啟動 Driver。
Driver將作業轉換為DAG圖(類似數據處理的流程圖),根據策略將DAG圖劃分為多個Stage,最終生成一系列最小可執行的Task。
Driver根據Task的需求,向Master申請運行Task所需的資源。
Master為Task調度分配滿足需求的Worker節點,在Worker節點啟動Exeuctor。
Exeuctor啟動後向Driver註冊。
Driver將Task調度到Exeuctor執行。
Executor執行結果寫入文件或返回Driver。
很多初學者,對大數據的概念都是模糊不清的,大數據是什麽,能做什麽,學的時候,該按照什麽線路去學習,學完往哪方面發展,想深入了解,想學習的同學歡迎加入大數據學習qq群:458345782,有大量幹貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大數據講師給大家免費授課,給大家分享目前國內最完整的大數據高端實戰實用學習流程體系。
分分鐘理解大數據基礎之Spark