版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第2章開源大數(shù)據(jù)平臺開源大數(shù)據(jù)平臺學(xué)習(xí)目標(biāo)了解兩種常用開源大數(shù)據(jù)分析平臺——Hadoop和Spark的起源、發(fā)展及應(yīng)用現(xiàn)狀理解兩種平臺各自的體系結(jié)構(gòu)、基本運行機制及適用范圍掌握其安裝部署過程及基本使用方法,為大數(shù)據(jù)分析的應(yīng)用打下基礎(chǔ)學(xué)習(xí)要點Hadoop和Spark的起源、發(fā)展及應(yīng)用現(xiàn)狀Hadoop和Spark的生態(tài)系統(tǒng)和體系結(jié)構(gòu)Hadoop和Spark的安裝和使用方法目錄Hadoop平臺Hadoop概述Hadoop生態(tài)系統(tǒng)和體系結(jié)構(gòu)Hadoop的安裝和使用Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結(jié)構(gòu)RDD的運行原理Spark的安裝和使用目錄Hadoop平臺Hadoop概述Hadoop生態(tài)系統(tǒng)和體系結(jié)構(gòu)Hadoop的安裝和使用Hadoop的起源Apache軟件基金會旗下開源分布式計算平臺由DougCutting創(chuàng)始開發(fā)的文本搜索庫源自Google實驗室發(fā)表的兩篇學(xué)術(shù)論文: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.)最先應(yīng)用于Yahoo!廣告系統(tǒng)的數(shù)據(jù)挖掘2008年4月,打破世界紀錄成為排序1TB數(shù)據(jù)最快的系統(tǒng)由910個節(jié)點構(gòu)成的集群進行運算排序時間只用了209秒同年5月再次將紀錄刷新至62秒DougCuttingHadoop的核心技術(shù)Hadoop是一套大數(shù)據(jù)存儲和處理的解決方案Hadoop核心技術(shù):HDFS:HadoopDistributedFileSystem,被設(shè)計成適合運行在通用硬件上的分布式文件系統(tǒng)。MapReduce:一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。綜合衡量一套大數(shù)據(jù)處理系統(tǒng)是否可用標(biāo)準(zhǔn):容錯性能編程模式的可用性性能或成本比Hadoop的特性高可靠性高效性可擴展性低成本良好的跨平臺性用戶友好性Hadoop的應(yīng)用現(xiàn)狀互聯(lián)網(wǎng)領(lǐng)域:國外:Google和Yahoo!等網(wǎng)站、Facebook、Microsoft、Cisco等國外公司或平臺國內(nèi):百度、阿里巴巴、網(wǎng)易、華為、騰訊、中國移動等
舉例:淘寶、華為學(xué)術(shù)界:國外:卡耐基梅隆大學(xué)、加州大學(xué)伯克利分析、康奈爾大學(xué)、斯坦福大學(xué)、華盛頓大學(xué)、普渡大學(xué)等國內(nèi):清華大學(xué)、中國人民大學(xué)、中國科學(xué)院大學(xué)等目錄Hadoop平臺Hadoop概述Hadoop生態(tài)系統(tǒng)和體系結(jié)構(gòu)Hadoop的安裝和使用Hadoop的版本發(fā)展/releases.htmlHadoop的體系結(jié)構(gòu)Hadoop1.0Hadoop的體系結(jié)構(gòu)Hadoop1.0在實際應(yīng)用中仍然存在著許多問題。HDFS:可用性:單點故障問題擴展性:不支持水平擴展系統(tǒng)性能:會受限于單個名稱節(jié)點的吞吐量隔離性:單個名稱節(jié)點也難以提供不同程序之間的隔離性MapReduce:可用性:單點故障問題資源受限資源化分不合理Hadoop的體系結(jié)構(gòu)Hadoop2.0在1.0的基礎(chǔ)上進行了豐富和完善。Hadoop的生態(tài)系統(tǒng)目錄Hadoop平臺Hadoop概述Hadoop生態(tài)系統(tǒng)和體系結(jié)構(gòu)Hadoop的安裝和使用部署準(zhǔn)備硬件準(zhǔn)備:分布式模式:至少需要2臺計算機或1臺計算機上的2臺虛擬機單機或偽分布式模式:可使用1臺計算機。操作系統(tǒng)準(zhǔn)備:Linux系統(tǒng)(如Ubuntu操作系統(tǒng))Linux系統(tǒng)的安裝主要有兩種方式:虛擬機安裝:計算機比較新或者配置內(nèi)存4G以上雙系統(tǒng)安裝:計算機較舊或配置內(nèi)存小于等于4G本書介紹的是虛擬機安裝方法下載安裝-Ubuntu虛擬機安裝Ubuntu虛擬機安裝軟件下載新建虛擬機安裝Ubuntu用戶及環(huán)境設(shè)置下載安裝-Ubuntu虛擬機安裝軟件下載:下載并安裝VirtualBox虛擬機軟件官網(wǎng)或鏡像網(wǎng)站下載好所需要的Ubuntu的鏡像文件(ISO文件)本書使用的版本為Ubuntu16.04,使用的鏡像網(wǎng)站為阿里開源鏡像站下載安裝-Ubuntu虛擬機安裝新建虛擬機:打開VirtualBox,單擊“新建”按鈕給虛擬機命名為“Ubuntu”,選擇操作系統(tǒng)類型與版本選擇內(nèi)存大小選擇“現(xiàn)在創(chuàng)建虛擬硬盤”選項選擇虛擬硬盤文件類型為“VDI(VirtualBox磁盤鏡像)”將虛擬硬盤的存儲分配方式選擇為“動態(tài)分配”選擇文件存儲的位置和容量大小單擊“創(chuàng)建”按鈕,完成虛擬機的創(chuàng)建完成上述步驟后,可以在VirtualBox中看到新建好的虛擬機,代表虛擬機已經(jīng)創(chuàng)建成功了。下載安裝-Ubuntu虛擬機安裝安裝Ubuntu:設(shè)置“存儲”單擊“啟動”按鈕啟動虛擬機,若彈出提示,在下拉列表中選擇ISO文件啟動后,選擇語言為“中文(簡體)”,單擊“安裝Ubuntu”按鈕檢查是否連接網(wǎng)絡(luò)及是否安裝第三方軟件,單擊“繼續(xù)”按鈕。確認安裝類型,選擇“其他選項”,單擊“繼續(xù)”按鈕單擊“新建分區(qū)表”按鈕創(chuàng)建分區(qū),添加交換空間和根目錄全部設(shè)置完成后,單擊“現(xiàn)在安裝”按鈕,確認將改動寫入磁盤選擇時區(qū),在鍵盤布局中將兩列均設(shè)置為漢語設(shè)置用戶名和密碼單擊“繼續(xù)”按鈕,開始安裝安裝完畢后,單擊“現(xiàn)在重啟”按鈕重啟虛擬機下載安裝-Ubuntu虛擬機安裝用戶及環(huán)境設(shè)置:創(chuàng)建Hadoop用戶SSH登錄權(quán)限設(shè)置安裝和配置Java下載安裝-Ubuntu虛擬機安裝創(chuàng)建Hadoop用戶:第一步,按快捷鍵Ctrl+Alt+T,或者在搜索欄中搜索終端,打開終端窗口(命令行界面),輸入如下命令創(chuàng)建新用戶。
$sudouseradd-mhadoop-s/bin/bash由此創(chuàng)建了名為“hadoop”的用戶,同時指定使用bash作為shell解析相關(guān)命令。第二步,輸入如下命令將登錄密碼設(shè)置為“hadoop”(也可設(shè)置其他密碼,密碼將需按照提示輸入兩次)。
$sudopasswdhadoop第三步,輸入如下命令如下:“hadoop”用戶增加管理員權(quán)限以方便后續(xù)部署。
$sudoadduserhadoopsudo此后的操作請登錄“hadoop”用戶來進行。下載安裝-Ubuntu虛擬機安裝SSH登錄權(quán)限設(shè)置:SSH協(xié)議是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議,可以提供安全的網(wǎng)絡(luò)傳輸環(huán)境。Hadoop名稱節(jié)點(NameNode)啟動集群中的數(shù)據(jù)節(jié)點(DataNode)時,需要通過SSH登錄來實現(xiàn)。SSH包括客戶端client(無須安裝,Ubuntu操作系統(tǒng)已自動安裝)和服務(wù)器端server(需要安裝)??刹捎孟旅娴拿畎惭bSSHserver:
$sudoapt-getinstallopenssh-server如果本步安裝失敗,可以先嘗試執(zhí)行$sudoapt-getupdate命令進行更新。安裝以后,使用如下命令:
$sshlocalhost然后輸入yes和密碼后即可登錄本機。下載安裝-Ubuntu虛擬機安裝SSH登錄權(quán)限設(shè)置:為了使名稱節(jié)點能夠順利登錄集群中的任何一個節(jié)點,我們可以用下面的命令將所有機器配置為無密碼登錄方式。
$exit
$cd~/.ssh/
$ssh-keygen-trsa此時系統(tǒng)會要求你指定一個文件來保存密鑰,可以按回車鍵使用默認的文件。接著輸入下面的代碼繼續(xù)完成所有機器的無密碼登錄配置。
$cat./id_rsa.pub>>./authorized_keys此時再次執(zhí)行$sshlocalhost命令即可不需要密碼登錄了,SSH配置結(jié)束。下載安裝-Ubuntu虛擬機安裝安裝和配置Java:在Ubuntu中直接通過下面的命令安裝jdk1.8:
$sudoapt-getinstallopenjdk-8-jreopenjdk-8-jdk除此之外,還需配置JAVA_HOME環(huán)境變量以避免訪問時反復(fù)寫絕對路徑第一步,進入文件~/.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
若返回下圖所示內(nèi)容,則Java安裝成功。下載安裝-Hadoop的下載安裝Hadoop的下載安裝Hadoop官方網(wǎng)站:/本書選擇的是Hadoop3.1.3版本單機安裝配置偽分布式安裝配置分布式安裝配置下載安裝-Hadoop的下載安裝單機安裝配置:將hadoop-3.1.3.tar.gz安裝至虛擬機的/usr/local/目錄中,命令如下:
$sudotar-zvxf~/下載/hadoop-3.1.3.tar.gz-C/usr/local可以重命名并修改訪問權(quán)限,以方便后續(xù)調(diào)用,命令如下:
$cd/usr/local/
$sudomv./hadoop-3.1.3/./hadoop#將文件夾名改為hadoop
$sudochown-Rhadoop:hadoop./hadoop#修改文件權(quán)限檢查Hadoop是否可用,命令如下:
$cd/usr/local/hadoop
$./bin/hadoopversion如果可用,則會顯示Hadoop版本信息,表示單機安裝Hadoop成功。下載安裝-Hadoop的下載安裝偽分布式安裝配置:Hadoop的運行方式是由配置文件決定的,默認情況下為單機模式。如果需要配置為偽分布式模式,則需要修改相應(yīng)配置文件。第一步,修改配置文件第二步,初始化文件系統(tǒng)第三步,啟動所有進程,執(zhí)行以下命令第四步,訪問web,查看Hadoop集群信息下載安裝-Hadoop的下載安裝第一步,修改配置文件:core-site.xml和hdfs-site.xml在目錄/usr/local/hadoop/etc/hadoop/中打開hdfs-site.xml,將內(nèi)容修改為:<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ù)量,偽分布式要設(shè)置為1。
.dir表示存儲fsimage文件的本地磁盤目錄。
dfs.datanode.data.dir表示HDFS數(shù)據(jù)存放的本地磁盤目錄。下載安裝-Hadoop的下載安裝第二步,初始化文件系統(tǒng)執(zhí)行下列語句:
$hadoopnamenode–format
如果報錯“找不到hadoop”,則可以使用以下命令行打開環(huán)境變量配置的界面:
$vim~/.bashrc
打開設(shè)置環(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:權(quán)限不夠”,可通過以下命令行解決:
$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服務(wù)端、安裝Java環(huán)境的步驟,并且在Master節(jié)點上安裝Hadoop,并完成配置完成上述步驟后,進行下述步驟:第一步,網(wǎng)絡(luò)配置。第二步,設(shè)置SSH無密碼登錄。第三步,配置PATH變量。下載安裝-Hadoop的下載安裝第一步,網(wǎng)絡(luò)配置在虛擬機的網(wǎng)絡(luò)設(shè)置中將兩臺虛擬機的網(wǎng)絡(luò)連接方式改為“橋接網(wǎng)卡”模式因為采用導(dǎo)入虛擬機鏡像文件的方式安裝Linux系統(tǒng),有可能出現(xiàn)兩臺機器的MAC地址是相同的,因此,在虛擬機的網(wǎng)絡(luò)設(shè)置中還需要使用“刷新”按鈕隨機改變機器的MAC地址網(wǎng)絡(luò)配置完成以后,可以在終端使用ifconfig命令查看機器的IP地址:
$ifconfig
其中inet地址即為我們需要查看的IP地址,本書的兩臺機器IP地址分別為07和09下載安裝-Hadoop的下載安裝第一步,網(wǎng)絡(luò)配置修改各個節(jié)點的主機名,在Master節(jié)點上執(zhí)行如下命令修改主機名:
$sudovim/etc/hostname
將主機名內(nèi)容直接刪除,并修改為“Master”,保存退出v(需要重啟Linux系統(tǒng)才能看到主機名的變化)在Master節(jié)點中執(zhí)行如下命令打開并修改Master節(jié)點中的“/etc/hosts”文件:
$sudovim/etc/hosts在hosts文件中增加如下兩條IP和主機名映射關(guān)系:
07Master
09Slave1下載安裝-Hadoop的下載安裝第一步,網(wǎng)絡(luò)配置完成了Master節(jié)點的配置后,參照上面的方法,把Slave節(jié)點上的“/etc/hostname”文件中的主機名修改為“Slave1”,同時,修改“/etc/hosts”的內(nèi)容,在hosts文件中增加相同的IP和主機名映射關(guān)系重新啟動Slave節(jié)點的Linux系統(tǒng)在各個節(jié)點上都執(zhí)行如下命令測試是否可以互相連通:
$pingMaster-c3
$pingSlave1-c3如果可以連通,輸出如圖所示下載安裝-Hadoop的下載安裝第二步,設(shè)置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的下載安裝第二步,設(shè)置SSH無密碼登錄執(zhí)行如下命令返回原來的終端:
$exit在Master節(jié)點上,將上公匙傳輸給Slave1節(jié)點:
$scp~/.ssh/id_rsa.pubhadoop@Slave1:/home/hadoop/切換到Slave1節(jié)點上,執(zhí)行如下命令將SSH公匙加入授權(quán):
$mkdir~/.ssh
$cat~/id_rsa.pub>>~/.ssh/authorized_keys
$rm~/id_rsa.pub
這樣,在Master節(jié)點上就可以SSH無密碼登錄到各個Slave節(jié)點了切換到Master節(jié)點上執(zhí)行如下命令進行檢驗:
$sshSlave1運行成功的結(jié)果如圖所示,這意味著此時Master已經(jīng)可以登錄到各個Slave節(jié)點了。下載安裝-Hadoop的下載安裝第三步,配置PATH變量在Master節(jié)點上執(zhí)行以下命令:
$vim~/.bashrc在文件中添加以下內(nèi)容:
exportPATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin保存后執(zhí)行:
$source~/.bashrc下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境在配置集群/分布式模式時,需要修改“/usr/local/hadoop/etc/hadoop”目錄下的配置文件,在此不再贅述。我們僅設(shè)置正常啟動所必須的設(shè)置項,包括workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共五個文件,更多設(shè)置項可查看官方說明。文件workers:將workers文件中原來的localhost刪除,只添加“Slave1”。下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境文件core-site.xml:修改為以下內(nèi)容<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:修改為以下內(nèi)容<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:修改為以下內(nèi)容<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:修改為以下內(nèi)容。<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”文件夾復(fù)制到各個節(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é)點所啟動的進程。如果已經(jīng)正確啟動,則在Master節(jié)點上可以看到NameNode、ResourceManager、SecondrryNameNode和JobHistoryServer進程,如圖所示。下載安裝-Hadoop的下載安裝第四步,配置集群/分布式環(huán)境在Slave節(jié)點可以看到DataNode和NodeManager進程,如圖所示在Master節(jié)點上執(zhí)行命令:
$hdfsdfsadmin–report如果屏幕信息中的“Livedatanodes”不為0,則說明數(shù)據(jù)節(jié)點啟動成功結(jié)果如圖所示目錄Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結(jié)構(gòu)RDD的運行原理Spark的安裝和使用Hadoop的流程和缺陷企業(yè)對于大數(shù)據(jù)處理往往會產(chǎn)生不同的需求復(fù)雜的批量數(shù)據(jù)處理需要分鐘到小時級響應(yīng)基于歷史數(shù)據(jù)的交互式查詢需要秒級到分鐘級響應(yīng)基于實時數(shù)據(jù)流的處需要毫秒到秒級響應(yīng)……Hadoop的流程和缺陷一個Hadoop應(yīng)用的多個MapReduce操作之間都是相互獨立的每個操作的結(jié)果一般都會存入磁盤(如HDFS)后續(xù)操作需要再次從磁盤讀取數(shù)據(jù)導(dǎo)致了多次磁盤讀/寫,會對Hadoop計算造成巨大的時間開銷。Hadoop的執(zhí)行流程Hadoop的流程和缺陷缺陷:磁盤I/O開銷大,無法滿足多階段和交互式計算需求系統(tǒng)的表達能力有限,很多操作無法轉(zhuǎn)化為MapReduce操作面對上述企業(yè)對于大數(shù)據(jù)處理的諸多需求:僅僅能滿足復(fù)雜的批量數(shù)據(jù)處理需求不能滿足基于歷史數(shù)據(jù)的交互式查詢要求不能滿足基于實時數(shù)據(jù)流的處理要求……一種高效、低延遲的大數(shù)據(jù)處理架構(gòu)——Spark產(chǎn)生了Spark的發(fā)展及應(yīng)用官網(wǎng):/2009年由美國加州伯克利大學(xué)的AMPLab最早進行開發(fā)2010年開源發(fā)布2013年加入Apache軟件基金會2014年打破Hadoop保持的排序紀錄Spark:206個節(jié)點
23分鐘Hadoop:2000個節(jié)點
72分鐘在超1000家國內(nèi)外企業(yè)和科研機構(gòu)均有應(yīng)用,如淘寶、百度、騰訊、亞馬遜、eBay、日立、NASAJPL等。Spark執(zhí)行流程Spark將數(shù)據(jù)從磁盤載入內(nèi)存后,迭代計算等的中間結(jié)果會保留在內(nèi)存中,從而避免了反復(fù)從磁盤中讀取數(shù)據(jù)的時間開銷。相較于MapReduce優(yōu)點:基于內(nèi)存計算框架使得計算效率得以明顯提升適合實時數(shù)據(jù)流的處理但MapReduce更適合執(zhí)行數(shù)據(jù)量巨大的批處理操作目錄Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結(jié)構(gòu)RDD的運行原理Spark的安裝和使用Spark的生態(tài)系統(tǒng)Spark的設(shè)計理念:Onestacktorulethemall已成為伯克利數(shù)據(jù)分析軟件棧BDAS的重要組成部分下圖為BDAS的體系結(jié)構(gòu)Spark的體系結(jié)構(gòu)每個應(yīng)用會被分解成若干相關(guān)的計算任務(wù)(Task),分布在不同的工作節(jié)點中執(zhí)行。(1)集群資源管理器(ClusterManager):負責(zé)管理調(diào)度所有Spark應(yīng)用的計算資源;除了自帶的資源管理器,也支持ApacheMesos或HadoopYARN。(2)工作節(jié)點(WorkerNode):負責(zé)運行具體的任務(wù)(Task)。工作節(jié)點上,對每個應(yīng)用都對應(yīng)有一個執(zhí)行進程(Executor)負責(zé)該應(yīng)用在該節(jié)點上所有任務(wù)的執(zhí)行和數(shù)據(jù)的存儲。(3)任務(wù)控制節(jié)點(Driver):為每個應(yīng)用申請計算資源,并對各節(jié)點上的執(zhí)行進程進行分配和監(jiān)控。Spark的體系結(jié)構(gòu)一個Spark應(yīng)用由一個任務(wù)控制節(jié)點(Driver)和若干個作業(yè)(Job)構(gòu)成一個作業(yè)(Job)由多個階段(Stage)構(gòu)成一個階段(Stage)由多個彼此沒有Shuffle依賴關(guān)系的任務(wù)(Task)組成Spark的體系結(jié)構(gòu)一個Spark應(yīng)用的運行流程如下:(1)由任務(wù)控制節(jié)點創(chuàng)建一個SparkContext作為通向Spark集群的入口,為應(yīng)用構(gòu)建基本的運行環(huán)境,并向資源管理器申請計算資源Spark的體系結(jié)構(gòu)一個Spark應(yīng)用的運行流程如下:(2)資源管理器為應(yīng)用分配相應(yīng)的資源,并啟動計算節(jié)點上的進程(Executor);Spark的體系結(jié)構(gòu)一個Spark應(yīng)用的運行流程如下:(3)進程啟動后,主動向SparkContext申請計算任務(wù);SparkContext則會將計算任務(wù)分解成若干個RDD,并按照這些RDD彼此之間的關(guān)聯(lián)關(guān)系(DAG圖)將他們分為不同的任務(wù)集合(TaskSet,也稱Stage);最后由任務(wù)調(diào)度器(TaskScheduler)將Task發(fā)放給具體的進程Spark的體系結(jié)構(gòu)一個Spark應(yīng)用的運行流程如下:(4)計算節(jié)點上的任務(wù)執(zhí)行完成后,會通過任務(wù)調(diào)度器逐層反饋給SparkContext,當(dāng)所有任務(wù)都執(zhí)行完成后,SparkContext會向資源管理器注銷以釋放計算資源。目錄Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結(jié)構(gòu)RDD的運行原理Spark的安裝和使用RDD的特點Spark的核心概念:RDD:ResillientDistributedDataset彈性分布式數(shù)據(jù)集合提供了一種高度受限的共享內(nèi)存模型Spark能夠避免多次磁盤讀/寫最重要的設(shè)計DAG:DirectedAcyclicGraph有向無環(huán)圖反映RDD之間的依賴關(guān)系可用于計算過程的優(yōu)化以進一步節(jié)約計算資源RDD的特點RDD本質(zhì)上就是一個應(yīng)用中要處理的數(shù)據(jù)集,它是一個只讀的可容錯的分區(qū)記錄(數(shù)據(jù)集片段)的集合RDD具有以下特點:只能讀取,不能進行直接修改,最初是由外部數(shù)據(jù)源創(chuàng)建的可大可小,根據(jù)數(shù)據(jù)的物理分布會有多個分區(qū)每個分區(qū)是一個物理節(jié)點上的數(shù)據(jù)集片段一個RDD可以通過運算操作形成新的RDD每個Spark應(yīng)用的計算過程表現(xiàn)為一組RDD的轉(zhuǎn)換,構(gòu)成DAG的拓撲序列,稱為LineageRDD支持的兩類運算轉(zhuǎn)換運算(Transformation):發(fā)生在DAG的轉(zhuǎn)換過程中,如map、filter、groupBy等只對中間RDD之間要做的轉(zhuǎn)換做記錄,并不執(zhí)行具體計算不生成具體結(jié)果動作運算(Action):發(fā)生在轉(zhuǎn)換過程的最后,如count、first、reduce等觸發(fā)前序所有運算,生成最后結(jié)果將結(jié)果返回或保存到外部數(shù)據(jù)源RDD支持的兩類運算RDD支持的運算具有以下特點:惰性調(diào)用:在動作運算時才真正執(zhí)行所有運算,轉(zhuǎn)換運算并不會真的觸發(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中,并將結(jié)果返回為一個新的數(shù)據(jù)集TransformationAPI(部分)flatMap(func)與map()相似,但每個輸入元素都可以映射到0或多個輸出結(jié)果
groupByKey()對(K,V)鍵值對的數(shù)據(jù)集返回一個新的(K,Iterable)形式的數(shù)據(jù)集
reduceByKey(func)應(yīng)用于(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)勢高效容錯:通過限制計算粒度換取了高容錯和高時效,即只記錄粗顆粒度的轉(zhuǎn)換操作,根據(jù)Lineage可以重新計算丟失或出錯的RDD,而無須從頭重新計算,避免了數(shù)據(jù)冗余方式的高容錯開銷避免多次磁盤讀/寫:多個RDD操作之間傳遞的數(shù)據(jù)一般都可以保存在內(nèi)存,而無須持久化到外部存儲器支持存放Java對象:可以避免不必要的對象序列化和反序列化,進一步降低了磁盤讀/寫開銷RDD依賴關(guān)系RDD的操作決定了RDD分區(qū)之間的依賴關(guān)系劃分依據(jù):DAG中各RDD之間依賴關(guān)系,可以將RDD構(gòu)成的DAG劃分成不同的階段(Stage)劃分方法:反向解析DAG遇到窄依賴就把當(dāng)前的RDD加入當(dāng)前的Stage遇到寬依賴就斷開,分成不同的Stage依賴關(guān)系窄依賴:一個或多個父RDD的分區(qū)數(shù)據(jù)對應(yīng)于子RDD的一個分區(qū)寬依賴:父RDD的一個分區(qū)數(shù)據(jù)對應(yīng)子RDD的多個分區(qū)。RDD依賴關(guān)系窄依賴RDD依賴關(guān)系寬依賴RDD依賴關(guān)系Spark如何用最高效的方法來劃分階段RDD運行過程SparkContext從外部數(shù)據(jù)源創(chuàng)建RDD對象,并根據(jù)它們的依賴關(guān)系構(gòu)建DAGDAGScheduler負責(zé)把DAG圖分解成多個階段,每個階段中又包含了多個任務(wù),構(gòu)成任務(wù)集合TaskScheduler把階段中的各個任務(wù)分發(fā)給各WorkNode上的各Executor執(zhí)行RDD運行過程基于RDD的Spark架構(gòu)特點:每個Spark應(yīng)用有一個專屬的執(zhí)行進程,以多線程的方式運行計算任務(wù)Spark運行過程與資源管理器無關(guān)Task采用“數(shù)據(jù)本地性”和“推測執(zhí)行”等優(yōu)化機制,盡量使“計算向數(shù)據(jù)靠攏”優(yōu)勢:計算高效、可靠易于使用、兼容性高統(tǒng)一架構(gòu)、通用性好缺點:不太適合需要異步計算且細粒度的數(shù)據(jù)更新的應(yīng)用對集群節(jié)點內(nèi)存的要求較高目錄Spark平臺Spark概述Spark生態(tài)系統(tǒng)和體系結(jié)構(gòu)RDD的運行原理Spark的安裝和使用Spark的安裝和使用Spark支持多種不同類型的部署方式Standalone(獨立部署,其他部署方式都屬于分布式部署方式)SparkonApacheMesos(Spark官方推薦的方式)SparkonHadoopYARN(基于YARN,容易與已有Hadoop融合)SparkonKubernetes(新增的方式)SparkonHadoopYARN是目前常用的方式Spark仍無法取代Hadoop生態(tài)圈中的所有組件(如Storm)將應(yīng)用從Hadoop平臺轉(zhuǎn)移至Spark平臺需考慮遷移成本Yarn統(tǒng)一調(diào)度有助提高不同計算框架運算效率和資源利用率。安裝部署準(zhǔn)備本書將會介紹SparkonHadoopYARN方式準(zhǔn)備運行所需的Java環(huán)境和Hadoop環(huán)境:參考2.1節(jié)中的實現(xiàn)安裝Hadoop時,需要按照偽分布式模式進行安裝在單臺機器上按照“Hadoop(偽分布式)+Spark(Local模式)”進行Hadoop和Spark組合環(huán)境的搭建下載安裝官方網(wǎng)站:/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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 6274-2025肥料、土壤調(diào)理劑和有益物質(zhì)術(shù)語
- 對精神科狂躁癥患者臨床用藥治療及護理研究
- 2026年康復(fù)學(xué)術(shù)評估(學(xué)術(shù)評估)考題及答案
- 2025年高職(智能控制技術(shù))單片機應(yīng)用試題及解析
- 2026年中職第二學(xué)年(網(wǎng)絡(luò)信息安全)信息安全防護試題及答案
- 2025年高職信息安全與管理(信息安全管理)試題及答案
- 2025年大學(xué)農(nóng)業(yè)生態(tài)(資源利用)試題及答案
- 2025年中職葡萄酒文化與營銷(葡萄酒文化傳播)試題及答案
- 2025年高職課程設(shè)計(教案編寫)試題及答案
- 2025年大學(xué)護理學(xué)(預(yù)防醫(yī)學(xué)應(yīng)用)試題及答案
- 生活垃圾分類設(shè)備安裝與調(diào)試方案
- 政治重點人管理機制解析
- 電子檔案管理系統(tǒng)基礎(chǔ)知識
- 2025年農(nóng)村宅基地買賣合同書樣本
- 農(nóng)產(chǎn)品產(chǎn)地冷藏保鮮設(shè)施安全生產(chǎn)隱患排查整治表
- 評標(biāo)技術(shù)專家注意事項
- 糖尿病床旁護理查房
- DB32∕T 5085-2025 無機涂料應(yīng)用技術(shù)規(guī)程
- 食品檢驗員崗位面試問題及答案
- DB37∕T 5234-2022 超高程泵送混凝土應(yīng)用技術(shù)規(guī)程
- 設(shè)備管理二級管理制度
評論
0/150
提交評論