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