




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章開源大數(shù)據(jù)平臺開源大數(shù)據(jù)平臺學習目標了解兩種常用開源大數(shù)據(jù)分析平臺——Hadoop和Spark的起源、發(fā)展及應用現(xiàn)狀理解兩種平臺各自的體系結構、基本運行機制及適用范圍掌握其安裝部署過程及基本使用方法,為大數(shù)據(jù)分析的應用打下基礎學習要點Hadoop和Spark的起源、發(fā)展及應用現(xiàn)狀Hadoop和Spark的生態(tài)系統(tǒng)和體系結構Hadoop和Spark的安裝和使用方法目錄Hadoop平臺Hadoop概述Hadoop生態(tài)系統(tǒng)和體系結構Hadoop的安裝和使用Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結構RDD的運行原理Spark的安裝和使用目錄Hadoop平臺Hadoop概述Hadoop生態(tài)系統(tǒng)和體系結構Hadoop的安裝和使用Hadoop的起源Apache軟件基金會旗下開源分布式計算平臺由DougCutting創(chuàng)始開發(fā)的文本搜索庫源自Google實驗室發(fā)表的兩篇學術論文:SanjayG,HowardG,Shun-TakL.TheGoogleFileSystem.Proc.ofSOSP.2003:29-43.DeanJ,GhemawatS.MapReduce.Simplifieddataprocessingonlargeclusters.CommunicationsoftheACM.2008,51(1):107-113.(DeanJ,GhemawatS.MapReduce:Simplifieddataprocessingonlargeclusters.OSDI2004.)最先應用于Yahoo!廣告系統(tǒng)的數(shù)據(jù)挖掘2008年4月,打破世界紀錄成為排序1TB數(shù)據(jù)最快的系統(tǒng)由910個節(jié)點構成的集群進行運算排序時間只用了209秒同年5月再次將紀錄刷新至62秒DougCuttingHadoop的核心技術Hadoop是一套大數(shù)據(jù)存儲和處理的解決方案Hadoop核心技術:HDFS:HadoopDistributedFileSystem,被設計成適合運行在通用硬件上的分布式文件系統(tǒng)。MapReduce:一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。綜合衡量一套大數(shù)據(jù)處理系統(tǒng)是否可用標準:容錯性能編程模式的可用性性能或成本比Hadoop的特性高可靠性高效性可擴展性低成本良好的跨平臺性用戶友好性Hadoop的應用現(xiàn)狀互聯(lián)網領域:國外:Google和Yahoo!等網站、Facebook、Microsoft、Cisco等國外公司或平臺國內:百度、阿里巴巴、網易、華為、騰訊、中國移動等
舉例:淘寶、華為學術界:國外:卡耐基梅隆大學、加州大學伯克利分析、康奈爾大學、斯坦福大學、華盛頓大學、普渡大學等國內:清華大學、中國人民大學、中國科學院大學等目錄Hadoop平臺Hadoop概述Hadoop生態(tài)系統(tǒng)和體系結構Hadoop的安裝和使用Hadoop的版本發(fā)展/releases.htmlHadoop的體系結構Hadoop1.0Hadoop的體系結構Hadoop1.0在實際應用中仍然存在著許多問題。HDFS:可用性:單點故障問題擴展性:不支持水平擴展系統(tǒng)性能:會受限于單個名稱節(jié)點的吞吐量隔離性:單個名稱節(jié)點也難以提供不同程序之間的隔離性MapReduce:可用性:單點故障問題資源受限資源化分不合理Hadoop的體系結構Hadoop2.0在1.0的基礎上進行了豐富和完善。Hadoop的生態(tài)系統(tǒng)目錄Hadoop平臺Hadoop概述Hadoop生態(tài)系統(tǒng)和體系結構Hadoop的安裝和使用部署準備硬件準備:分布式模式:至少需要2臺計算機或1臺計算機上的2臺虛擬機單機或偽分布式模式:可使用1臺計算機。操作系統(tǒng)準備:Linux系統(tǒng)(如Ubuntu操作系統(tǒng))Linux系統(tǒng)的安裝主要有兩種方式:虛擬機安裝:計算機比較新或者配置內存4G以上雙系統(tǒng)安裝:計算機較舊或配置內存小于等于4G本書介紹的是虛擬機安裝方法下載安裝-Ubuntu虛擬機安裝Ubuntu虛擬機安裝軟件下載新建虛擬機安裝Ubuntu用戶及環(huán)境設置下載安裝-Ubuntu虛擬機安裝軟件下載:下載并安裝VirtualBox虛擬機軟件官網或鏡像網站下載好所需要的Ubuntu的鏡像文件(ISO文件)本書使用的版本為Ubuntu16.04,使用的鏡像網站為阿里開源鏡像站下載安裝-Ubuntu虛擬機安裝新建虛擬機:打開VirtualBox,單擊“新建”按鈕給虛擬機命名為“Ubuntu”,選擇操作系統(tǒng)類型與版本選擇內存大小選擇“現(xiàn)在創(chuàng)建虛擬硬盤”選項選擇虛擬硬盤文件類型為“VDI(VirtualBox磁盤鏡像)”將虛擬硬盤的存儲分配方式選擇為“動態(tài)分配”選擇文件存儲的位置和容量大小單擊“創(chuàng)建”按鈕,完成虛擬機的創(chuàng)建完成上述步驟后,可以在VirtualBox中看到新建好的虛擬機,代表虛擬機已經創(chuàng)建成功了。下載安裝-Ubuntu虛擬機安裝安裝Ubuntu:設置“存儲”單擊“啟動”按鈕啟動虛擬機,若彈出提示,在下拉列表中選擇ISO文件啟動后,選擇語言為“中文(簡體)”,單擊“安裝Ubuntu”按鈕檢查是否連接網絡及是否安裝第三方軟件,單擊“繼續(xù)”按鈕。確認安裝類型,選擇“其他選項”,單擊“繼續(xù)”按鈕單擊“新建分區(qū)表”按鈕創(chuàng)建分區(qū),添加交換空間和根目錄全部設置完成后,單擊“現(xiàn)在安裝”按鈕,確認將改動寫入磁盤選擇時區(qū),在鍵盤布局中將兩列均設置為漢語設置用戶名和密碼單擊“繼續(xù)”按鈕,開始安裝安裝完畢后,單擊“現(xiàn)在重啟”按鈕重啟虛擬機下載安裝-Ubuntu虛擬機安裝用戶及環(huán)境設置:創(chuàng)建Hadoop用戶SSH登錄權限設置安裝和配置Java下載安裝-Ubuntu虛擬機安裝創(chuàng)建Hadoop用戶:第一步,按快捷鍵Ctrl+Alt+T,或者在搜索欄中搜索終端,打開終端窗口(命令行界面),輸入如下命令創(chuàng)建新用戶。
$sudouseradd-mhadoop-s/bin/bash由此創(chuàng)建了名為“hadoop”的用戶,同時指定使用bash作為shell解析相關命令。第二步,輸入如下命令將登錄密碼設置為“hadoop”(也可設置其他密碼,密碼將需按照提示輸入兩次)。
$sudopasswdhadoop第三步,輸入如下命令如下:“hadoop”用戶增加管理員權限以方便后續(xù)部署。
$sudoadduserhadoopsudo此后的操作請登錄“hadoop”用戶來進行。下載安裝-Ubuntu虛擬機安裝SSH登錄權限設置:SSH協(xié)議是建立在應用層和傳輸層基礎上的安全協(xié)議,可以提供安全的網絡傳輸環(huán)境。Hadoop名稱節(jié)點(NameNode)啟動集群中的數(shù)據(jù)節(jié)點(DataNode)時,需要通過SSH登錄來實現(xiàn)。SSH包括客戶端client(無須安裝,Ubuntu操作系統(tǒng)已自動安裝)和服務器端server(需要安裝)。可采用下面的命令安裝SSHserver:
$sudoapt-getinstallopenssh-server如果本步安裝失敗,可以先嘗試執(zhí)行$sudoapt-getupdate命令進行更新。安裝以后,使用如下命令:
$sshlocalhost然后輸入yes和密碼后即可登錄本機。下載安裝-Ubuntu虛擬機安裝SSH登錄權限設置:為了使名稱節(jié)點能夠順利登錄集群中的任何一個節(jié)點,我們可以用下面的命令將所有機器配置為無密碼登錄方式。
$exit
$cd~/.ssh/
$ssh-keygen-trsa此時系統(tǒng)會要求你指定一個文件來保存密鑰,可以按回車鍵使用默認的文件。接著輸入下面的代碼繼續(xù)完成所有機器的無密碼登錄配置。
$cat./id_rsa.pub>>./authorized_keys此時再次執(zhí)行$sshlocalhost命令即可不需要密碼登錄了,SSH配置結束。下載安裝-Ubuntu虛擬機安裝安裝和配置Java:在Ubuntu中直接通過下面的命令安裝jdk1.8:
$sudoapt-getinstallopenjdk-8-jreopenjdk-8-jdk除此之外,還需配置JAVA_HOME環(huán)境變量以避免訪問時反復寫絕對路徑第一步,進入文件~/.bashrc編輯模式):
$vim~/.bashrc
如果報錯“程序Vim已包含在以下軟件包中”,可以先以下命令:
$sudoapt-getinstallvim第二步,單擊i按鍵開啟編輯模式,添加如下語句:
exportJAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
exportJRE_HOME=${JAVA_HOME}/jre
exportCLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
exportPATH=${JAVA_HOME}/bin:$PATH
輸入完畢后,單擊Esc按鍵退出編輯模式,輸入“:wq”(w保存,q退出)命令,按回車鍵后回到命令行界面。下載安裝-Ubuntu虛擬機安裝安裝和配置Java:第三步,執(zhí)行下列命令使修改生效:
$source~/.bashrc第四步,執(zhí)行下列命令查看Java是否安裝成功:
$java-version
若返回下圖所示內容,則Java安裝成功。下載安裝-Hadoop的下載安裝Hadoop的下載安裝Hadoop官方網站:/本書選擇的是Hadoop3.1.3版本單機安裝配置偽分布式安裝配置分布式安裝配置下載安裝-Hadoop的下載安裝單機安裝配置:將hadoop-3.1.3.tar.gz安裝至虛擬機的/usr/local/目錄中,命令如下:
$sudotar-zvxf~/下載/hadoop-3.1.3.tar.gz-C/usr/local可以重命名并修改訪問權限,以方便后續(xù)調用,命令如下:
$cd/usr/local/
$sudomv./hadoop-3.1.3/./hadoop#將文件夾名改為hadoop
$sudochown-Rhadoop:hadoop./hadoop#修改文件權限檢查Hadoop是否可用,命令如下:
$cd/usr/local/hadoop
$./bin/hadoopversion如果可用,則會顯示Hadoop版本信息,表示單機安裝Hadoop成功。下載安裝-Hadoop的下載安裝偽分布式安裝配置:Hadoop的運行方式是由配置文件決定的,默認情況下為單機模式。如果需要配置為偽分布式模式,則需要修改相應配置文件。第一步,修改配置文件第二步,初始化文件系統(tǒng)第三步,啟動所有進程,執(zhí)行以下命令第四步,訪問web,查看Hadoop集群信息下載安裝-Hadoop的下載安裝第一步,修改配置文件:core-site.xml和hdfs-site.xml在目錄/usr/local/hadoop/etc/hadoop/中打開hdfs-site.xml,將內容修改為:<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property></configuration>
dfs.replication表示副本的數(shù)量,偽分布式要設置為1。
.dir表示存儲fsimage文件的本地磁盤目錄。
dfs.datanode.data.dir表示HDFS數(shù)據(jù)存放的本地磁盤目錄。下載安裝-Hadoop的下載安裝第二步,初始化文件系統(tǒng)執(zhí)行下列語句:
$hadoopnamenode–format
如果報錯“找不到hadoop”,則可以使用以下命令行打開環(huán)境變量配置的界面:
$vim~/.bashrc
打開設置環(huán)境變量的界面后,添加語句:
exportPATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin同樣輸入“:wq”(w保存,q退出)命令,退出編輯模式。使配置立即生效:
$source~/.bashrc檢查是否配置成功
$hadoop-version
如果報錯“mkdir:無法創(chuàng)建目錄/usr/local/hadoop/logs:權限不夠”,可通過以下命令行解決:
$sudochown-Rhadoop/usr/local/hadoop#此處前一個hadoop為用戶名下載安裝-Hadoop的下載安裝第三步,啟動所有進程,執(zhí)行以下命令:
$start-all.sh第四步,使用瀏覽器訪問http://localhost:9870查看Hadoop集群中NameNode和Datanode的信息。下載安裝-Hadoop的下載安裝分布式安裝配置:為了降低分布式模式部署難度,本書簡單使用兩個節(jié)點(兩臺虛擬機:Master節(jié)點和Slave節(jié)點)來搭建集群環(huán)境與單機安裝過程類似,我們要在Master節(jié)點和Slave節(jié)點上完成創(chuàng)建“hadoop”用戶、安裝SSH服務端、安裝Java環(huán)境的步驟,并且在Master節(jié)點上安裝Hadoop,并完成配置完成上述步驟后,進行下述步驟:第一步,網絡配置。第二步,設置SSH無密碼登錄。第三步,配置PATH變量。下載安裝-Hadoop的下載安裝第一步,網絡配置在虛擬機的網絡設置中將兩臺虛擬機的網絡連接方式改為“橋接網卡”模式因為采用導入虛擬機鏡像文件的方式安裝Linux系統(tǒng),有可能出現(xiàn)兩臺機器的MAC地址是相同的,因此,在虛擬機的網絡設置中還需要使用“刷新”按鈕隨機改變機器的MAC地址網絡配置完成以后,可以在終端使用ifconfig命令查看機器的IP地址:
$ifconfig
其中inet地址即為我們需要查看的IP地址,本書的兩臺機器IP地址分別為07和09下載安裝-Hadoop的下載安裝第一步,網絡配置修改各個節(jié)點的主機名,在Master節(jié)點上執(zhí)行如下命令修改主機名:
$sudovim/etc/hostname
將主機名內容直接刪除,并修改為“Master”,保存退出v(需要重啟Linux系統(tǒng)才能看到主機名的變化)在Master節(jié)點中執(zhí)行如下命令打開并修改Master節(jié)點中的“/etc/hosts”文件:
$sudovim/etc/hosts在hosts文件中增加如下兩條IP和主機名映射關系:
07Master
09Slave1下載安裝-Hadoop的下載安裝第一步,網絡配置完成了Master節(jié)點的配置后,參照上面的方法,把Slave節(jié)點上的“/etc/hostname”文件中的主機名修改為“Slave1”,同時,修改“/etc/hosts”的內容,在hosts文件中增加相同的IP和主機名映射關系重新啟動Slave節(jié)點的Linux系統(tǒng)在各個節(jié)點上都執(zhí)行如下命令測試是否可以互相連通:
$pingMaster-c3
$pingSlave1-c3如果可以連通,輸出如圖所示下載安裝-Hadoop的下載安裝第二步,設置SSH無密碼登錄讓Master節(jié)點可以SSH無密碼登錄到各個Slave節(jié)點上,生成Master節(jié)點的公匙。
$cd~/.ssh
如果本步執(zhí)行后顯示沒有該目錄,可以先執(zhí)行一次$sshlocalhost命令
$rm./id_rsa*
$ssh-keygen-trsa讓Master節(jié)點能夠SSH無密碼登錄本機,在Master節(jié)點上執(zhí)行如下命令:
$cat./id_rsa.pub>>./authorized_keys完成后可以執(zhí)行如下命令來進行驗證:
$sshMaster執(zhí)行成功后如圖所示。下載安裝-Hadoop的下載安裝第二步,設置SSH無密碼登錄執(zhí)行如下命令返回原來的終端:
$exit在Master節(jié)點上,將上公匙傳輸給Slave1節(jié)點:
$scp~/.ssh/id_rsa.pubhadoop@Slave1:/home/hadoop/切換到Slave1節(jié)點上,執(zhí)行如下命令將SSH公匙加入授權:
$mkdir~/.ssh
$cat~/id_rsa.pub>>~/.ssh/authorized_keys
$rm~/id_rsa.pub
這樣,在Master節(jié)點上就可以SSH無密碼登錄到各個Slave節(jié)點了切換到Master節(jié)點上執(zhí)行如下命令進行檢驗:
$sshSlave1運行成功的結果如圖所示,這意味著此時Master已經可以登錄到各個Slave節(jié)點了。下載安裝-Hadoop的下載安裝第三步,配置PATH變量在Master節(jié)點上執(zhí)行以下命令:
$vim~/.bashrc在文件中添加以下內容:
exportPATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin保存后執(zhí)行:
$source~/.bashrc下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境在配置集群/分布式模式時,需要修改“/usr/local/hadoop/etc/hadoop”目錄下的配置文件,在此不再贅述。我們僅設置正常啟動所必須的設置項,包括workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共五個文件,更多設置項可查看官方說明。文件workers:將workers文件中原來的localhost刪除,只添加“Slave1”。下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境文件core-site.xml:修改為以下內容<configuration><property><name>fs.defaultFS</name><value>hdfs://Master:9000</value></property><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop/tmp</value><description>Abaseforothertemporarydirectories.</description></property></configuration>下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境文件hdfs-site.xml:修改為以下內容<configuration><property><name>node.secondary.http-address</name><value>Master:50090</value></property><property><name>dfs.replication</name><value>1</value></property><property><name>.dir</name><value>file:/usr/local/hadoop/tmp/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/tmp/dfs/data</value></property></configuration>下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境文件mapred-site.xml:修改為以下內容<configuration><property><name></name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>Master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>Master:19888</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property></configuration>下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境文件yarn-site.xml:修改為以下內容。<configuration><property><name>yarn.resourcemanager.hostname</name><value>Master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境配置完成后,把Master節(jié)點上的“/usr/local/hadoop”文件夾復制到各個節(jié)點上,命令如下:
$cd/usr/local
$tar-zcf~/hadoop.master.tar.gz./hadoop
$cd~
$scp./hadoop.master.tar.gzSlave1:/home/hadoop切換到Slave1節(jié)點上執(zhí)行如下命令:
$sudotar-zxf~/hadoop.master.tar.gz-C/usr/local
$sudochown-Rhadoop/usr/local/hadoop下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境在Master節(jié)點執(zhí)行名稱節(jié)點的格式化:
$hdfsnamenode-format
在Master節(jié)點上啟動Hadoop:
$start-dfs.sh
$start-yarn.sh
$mr-jobhistory-daemon.shstarthistoryserver
通過命令jps可以查看各個節(jié)點所啟動的進程。如果已經正確啟動,則在Master節(jié)點上可以看到NameNode、ResourceManager、SecondrryNameNode和JobHistoryServer進程,如圖所示。下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境在Slave節(jié)點可以看到DataNode和NodeManager進程,如圖所示在Master節(jié)點上執(zhí)行命令:
$hdfsdfsadmin–report如果屏幕信息中的“Livedatanodes”不為0,則說明數(shù)據(jù)節(jié)點啟動成功結果如圖所示目錄Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結構RDD的運行原理Spark的安裝和使用Hadoop的流程和缺陷企業(yè)對于大數(shù)據(jù)處理往往會產生不同的需求復雜的批量數(shù)據(jù)處理需要分鐘到小時級響應基于歷史數(shù)據(jù)的交互式查詢需要秒級到分鐘級響應基于實時數(shù)據(jù)流的處需要毫秒到秒級響應……Hadoop的流程和缺陷一個Hadoop應用的多個MapReduce操作之間都是相互獨立的每個操作的結果一般都會存入磁盤(如HDFS)后續(xù)操作需要再次從磁盤讀取數(shù)據(jù)導致了多次磁盤讀/寫,會對Hadoop計算造成巨大的時間開銷。Hadoop的執(zhí)行流程Hadoop的流程和缺陷缺陷:磁盤I/O開銷大,無法滿足多階段和交互式計算需求系統(tǒng)的表達能力有限,很多操作無法轉化為MapReduce操作面對上述企業(yè)對于大數(shù)據(jù)處理的諸多需求:僅僅能滿足復雜的批量數(shù)據(jù)處理需求不能滿足基于歷史數(shù)據(jù)的交互式查詢要求不能滿足基于實時數(shù)據(jù)流的處理要求……一種高效、低延遲的大數(shù)據(jù)處理架構——Spark產生了Spark的發(fā)展及應用官網:/2009年由美國加州伯克利大學的AMPLab最早進行開發(fā)2010年開源發(fā)布2013年加入Apache軟件基金會2014年打破Hadoop保持的排序紀錄Spark:206個節(jié)點
23分鐘Hadoop:2000個節(jié)點
72分鐘在超1000家國內外企業(yè)和科研機構均有應用,如淘寶、百度、騰訊、亞馬遜、eBay、日立、NASAJPL等。Spark執(zhí)行流程Spark將數(shù)據(jù)從磁盤載入內存后,迭代計算等的中間結果會保留在內存中,從而避免了反復從磁盤中讀取數(shù)據(jù)的時間開銷。相較于MapReduce優(yōu)點:基于內存計算框架使得計算效率得以明顯提升適合實時數(shù)據(jù)流的處理但MapReduce更適合執(zhí)行數(shù)據(jù)量巨大的批處理操作目錄Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結構RDD的運行原理Spark的安裝和使用Spark的生態(tài)系統(tǒng)Spark的設計理念:Onestacktorulethemall已成為伯克利數(shù)據(jù)分析軟件棧BDAS的重要組成部分下圖為BDAS的體系結構Spark的體系結構每個應用會被分解成若干相關的計算任務(Task),分布在不同的工作節(jié)點中執(zhí)行。(1)集群資源管理器(ClusterManager):負責管理調度所有Spark應用的計算資源;除了自帶的資源管理器,也支持ApacheMesos或HadoopYARN。(2)工作節(jié)點(WorkerNode):負責運行具體的任務(Task)。工作節(jié)點上,對每個應用都對應有一個執(zhí)行進程(Executor)負責該應用在該節(jié)點上所有任務的執(zhí)行和數(shù)據(jù)的存儲。(3)任務控制節(jié)點(Driver):為每個應用申請計算資源,并對各節(jié)點上的執(zhí)行進程進行分配和監(jiān)控。Spark的體系結構一個Spark應用由一個任務控制節(jié)點(Driver)和若干個作業(yè)(Job)構成一個作業(yè)(Job)由多個階段(Stage)構成一個階段(Stage)由多個彼此沒有Shuffle依賴關系的任務(Task)組成Spark的體系結構一個Spark應用的運行流程如下:(1)由任務控制節(jié)點創(chuàng)建一個SparkContext作為通向Spark集群的入口,為應用構建基本的運行環(huán)境,并向資源管理器申請計算資源Spark的體系結構一個Spark應用的運行流程如下:(2)資源管理器為應用分配相應的資源,并啟動計算節(jié)點上的進程(Executor);Spark的體系結構一個Spark應用的運行流程如下:(3)進程啟動后,主動向SparkContext申請計算任務;SparkContext則會將計算任務分解成若干個RDD,并按照這些RDD彼此之間的關聯(lián)關系(DAG圖)將他們分為不同的任務集合(TaskSet,也稱Stage);最后由任務調度器(TaskScheduler)將Task發(fā)放給具體的進程Spark的體系結構一個Spark應用的運行流程如下:(4)計算節(jié)點上的任務執(zhí)行完成后,會通過任務調度器逐層反饋給SparkContext,當所有任務都執(zhí)行完成后,SparkContext會向資源管理器注銷以釋放計算資源。目錄Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結構RDD的運行原理Spark的安裝和使用RDD的特點Spark的核心概念:RDD:ResillientDistributedDataset彈性分布式數(shù)據(jù)集合提供了一種高度受限的共享內存模型Spark能夠避免多次磁盤讀/寫最重要的設計DAG:DirectedAcyclicGraph有向無環(huán)圖反映RDD之間的依賴關系可用于計算過程的優(yōu)化以進一步節(jié)約計算資源RDD的特點RDD本質上就是一個應用中要處理的數(shù)據(jù)集,它是一個只讀的可容錯的分區(qū)記錄(數(shù)據(jù)集片段)的集合RDD具有以下特點:只能讀取,不能進行直接修改,最初是由外部數(shù)據(jù)源創(chuàng)建的可大可小,根據(jù)數(shù)據(jù)的物理分布會有多個分區(qū)每個分區(qū)是一個物理節(jié)點上的數(shù)據(jù)集片段一個RDD可以通過運算操作形成新的RDD每個Spark應用的計算過程表現(xiàn)為一組RDD的轉換,構成DAG的拓撲序列,稱為LineageRDD支持的兩類運算轉換運算(Transformation):發(fā)生在DAG的轉換過程中,如map、filter、groupBy等只對中間RDD之間要做的轉換做記錄,并不執(zhí)行具體計算不生成具體結果動作運算(Action):發(fā)生在轉換過程的最后,如count、first、reduce等觸發(fā)前序所有運算,生成最后結果將結果返回或保存到外部數(shù)據(jù)源RDD支持的兩類運算RDD支持的運算具有以下特點:惰性調用:在動作運算時才真正執(zhí)行所有運算,轉換運算并不會真的觸發(fā)計算粗粒度運算:運算是針對整個RDD的,不能對RDD中單個數(shù)據(jù)項運算運算支持多種編程模型:如MapReduce、SQL、Pregel等RDD支持的兩類運算RDD常用運算編程接口/docs/latest/api/scala/index.html#org.apache.spark.package類型
說明
filter(func)篩選出滿足函數(shù)func的元素,并返回一個新的數(shù)據(jù)集
map(func)將每個元素傳遞到函數(shù)func中,并將結果返回為一個新的數(shù)據(jù)集TransformationAPI(部分)flatMap(func)與map()相似,但每個輸入元素都可以映射到0或多個輸出結果
groupByKey()對(K,V)鍵值對的數(shù)據(jù)集返回一個新的(K,Iterable)形式的數(shù)據(jù)集
reduceByKey(func)應用于(K,V)鍵值對的數(shù)據(jù)集時,返回一個新的(K,V)形式的數(shù)據(jù)集,其中的每個值是將每個key傳遞到函數(shù)func中進行聚合
count()返回數(shù)據(jù)集中的元素個數(shù)
collect()以數(shù)組的形式返回數(shù)據(jù)集中的所有元素
first()返回數(shù)據(jù)集中的第一個元素ActionAPI(部分)take(n)以數(shù)組的形式返回數(shù)據(jù)集中的前n個元素
reduce(func)通過函數(shù)func(輸入兩個參數(shù)并返回一個值)聚合數(shù)據(jù)集中的元素
saveAsTextFile(path)將數(shù)據(jù)集生成一個text文件保存到指定目錄下RDD的優(yōu)勢高效容錯:通過限制計算粒度換取了高容錯和高時效,即只記錄粗顆粒度的轉換操作,根據(jù)Lineage可以重新計算丟失或出錯的RDD,而無須從頭重新計算,避免了數(shù)據(jù)冗余方式的高容錯開銷避免多次磁盤讀/寫:多個RDD操作之間傳遞的數(shù)據(jù)一般都可以保存在內存,而無須持久化到外部存儲器支持存放Java對象:可以避免不必要的對象序列化和反序列化,進一步降低了磁盤讀/寫開銷RDD依賴關系RDD的操作決定了RDD分區(qū)之間的依賴關系劃分依據(jù):DAG中各RDD之間依賴關系,可以將RDD構成的DAG劃分成不同的階段(Stage)劃分方法:反向解析DAG遇到窄依賴就把當前的RDD加入當前的Stage遇到寬依賴就斷開,分成不同的Stage依賴關系窄依賴:一個或多個父RDD的分區(qū)數(shù)據(jù)對應于子RDD的一個分區(qū)寬依賴:父RDD的一個分區(qū)數(shù)據(jù)對應子RDD的多個分區(qū)。RDD依賴關系窄依賴RDD依賴關系寬依賴RDD依賴關系Spark如何用最高效的方法來劃分階段RDD運行過程SparkContext從外部數(shù)據(jù)源創(chuàng)建RDD對象,并根據(jù)它們的依賴關系構建DAGDAGScheduler負責把DAG圖分解成多個階段,每個階段中又包含了多個任務,構成任務集合TaskScheduler把階段中的各個任務分發(fā)給各WorkNode上的各Executor執(zhí)行RDD運行過程基于RDD的Spark架構特點:每個Spark應用有一個專屬的執(zhí)行進程,以多線程的方式運行計算任務Spark運行過程與資源管理器無關Task采用“數(shù)據(jù)本地性”和“推測執(zhí)行”等優(yōu)化機制,盡量使“計算向數(shù)據(jù)靠攏”優(yōu)勢:計算高效、可靠易于使用、兼容性高統(tǒng)一架構、通用性好缺點:不太適合需要異步計算且細粒度的數(shù)據(jù)更新的應用對集群節(jié)點內存的要求較高目錄Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結構RDD的運行原理Spark的安裝和使用Spark的安裝和使用Spark支持多種不同類型的部署方式Standalone(獨立部署,其他部署方式都屬于分布式部署方式)SparkonApacheMesos(Spark官方推薦的方式)SparkonHadoopYARN(基于YARN,容易與已有Hadoop融合)SparkonKubernetes(新增的方式)SparkonHadoopYARN是目前常用的方式Spark仍無法取代Hadoop生態(tài)圈中的所有組件(如Storm)將應用從Hadoop平臺轉移至Spark平臺需考慮遷移成本Yarn統(tǒng)一調度有助提高不同計算框架運算效率和資源利用率。安裝部署準備本書將會介紹SparkonHadoopYARN方式準備運行所需的Java環(huán)境和Hadoop環(huán)境:參考2.1節(jié)中的實現(xiàn)安裝Hadoop時,需要按照偽分布式模式進行安裝在單臺機器上按照“Hadoop(偽分布式)+Spark(Local模式)”進行Hadoop和Spark組合環(huán)境的搭建下載安裝官方網站:/downloads.htmlRelease版本:更新快,可選擇最新的穩(wěn)定版本package類型:建議選擇Pre-buildwithuser-providedApacheHadoop本書選擇的是Spark3.0.3版本下載安裝解壓安裝包后存放至路徑/usr/local:
$sudotar-zxf~/下載/spark-3.0.3-bin-without-had
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 豆類食品的加工副產物利用考核試卷
- 呼吸道清理方法與護理要點
- 長途客運企業(yè)社會責任實踐與評估考核試卷
- 藥店常見疾病聯(lián)合用藥指南
- 魚鰓的呼吸器官
- 游客疾病案例分析與應對策略
- 廣東省深圳市2024-2025學年高一下學期期中考試 化學 PDF版含解析【KS5U 高考】
- 小兒急性呼吸衰竭診療要點
- 2025年城市更新背景下的歷史文化街區(qū)保護與特色商業(yè)開發(fā)研究報告
- 2025年智慧城市背景下低碳城市規(guī)劃創(chuàng)新案例解析
- 小學數(shù)學練習設計的有效性研究結題報告
- 江蘇省蘇州市工業(yè)園區(qū)2023-2024學年八年級下學期期末語文試題(解析版)
- 浙江溫州十校2023至2024學年高二下學期6月期末聯(lián)考化學試題附參考答案(解析)
- 湖南省婁底市漣源市2023-2024學年六年級下學期6月期末英語試題
- 上海市徐匯區(qū)市級名校2025屆物理高一第二學期期末考試模擬試題含解析
- 2024年安徽省初中(八年級)學業(yè)水平考試初二會考生物+地理試卷真題
- DL-T5017-2007水電水利工程壓力鋼管制造安裝及驗收規(guī)范
- 天一大聯(lián)盟2024屆高一數(shù)學第二學期期末統(tǒng)考試題含解析
- (高清版)JTG 3370.1-2018 公路隧道設計規(guī)范 第一冊 土建工程
- 湖南省長沙市2024年七年級下學期數(shù)學期末考試試題附答案
- 消化道穿孔患者的護理課件
評論
0/150
提交評論