版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Hadoop深入淺出案例驅(qū)動(dòng)(qūdònɡ)實(shí)戰(zhàn)中程(zhōnɡchénɡ)在線(北京)科技有限公司內(nèi)部教程注意(zhùyì)保密第一頁,共214頁。Hive的安裝和配置、原理(yuánlǐ)、開發(fā)課程目標(biāo)Hadoop安裝(ānzhuāng)、配置與管理HDFS原理及開發(fā)(kāifā),HDFS文件管理Map-Reduce原理及開發(fā)Hbase的安裝和配置、原理、開發(fā)2第二頁,共214頁。課程(kèchéng)安排day1Step3云計(jì)算Hadoop安裝(ānzhuāng)、配置大數(shù)據(jù)Hadoop介紹(jièshào)HDFS介紹(jièshào)與實(shí)戰(zhàn)MapReduce介紹與實(shí)戰(zhàn)Hbase介紹與實(shí)戰(zhàn)Hive介紹與實(shí)戰(zhàn)疑難解答day2day33第三頁,共214頁。提前準(zhǔn)備Hadoop環(huán)境部署軟件列表編號(hào)軟件名稱要求1VirtualBox-4.2.16-86992-Win.exe
2CentOS-6.3-x86_64-bin-DVD1.iso
3jdk-7u25-linux-x64.tar.gz
4SSHSecureShellClient-3.2.9.zip
5apache-tomcat-7.0.42-windows-x64.zip
6eclipse-jee-kepler-R-win32-x86_64.zip能夠創(chuàng)建DynamicWebProject7hadoop-eclipse-plugin-1.0.4.jar
8tomcatPluginV33.zip
9struts--all.zip
10MySQL-server-5.5.33-1.linux2.6.x86_64.rpm
11MySQL-client-5.5.32-1.linux2.6.x86_64.rpm
12libaio-0.3.107-10.el6.x86_64.rpm
注意選擇與操作系統(tǒng)相同數(shù)位的軟件,如操作系統(tǒng)是64位的,軟件也選擇64位軟件,否則選擇32位的軟件,建議使用64位操作系統(tǒng)第四頁,共214頁。提前準(zhǔn)備Hadoop組件列表編號(hào)軟件名稱要求1hadoop-1.0.4.tar.gz
2hbase-0.94.4.tar.gz
3hive-0.9.0.tar.gz
從老師的機(jī)器上可以下載這些軟件:http://ip/fs.php第五頁,共214頁。自我介紹1、工作年限;2、所在(suǒzài)部門;3、是否精通Linux;4、是否精通Java;5、是否安裝過Hadoop;第六頁,共214頁。學(xué)習(xí)(xuéxí)Hadoop的目的Hadoop是IT行業(yè)一個(gè)(yīɡè)新的熱點(diǎn),是云計(jì)算大數(shù)據(jù)處理的一個(gè)(yīɡè)具體實(shí)現(xiàn)。Hadoop本身具有很高的技術(shù)含量,是IT工程師學(xué)習(xí)的首選。Hadoop商業(yè)價(jià)值日益增長(zhǎng),是商業(yè)企業(yè)大數(shù)據(jù)處理的首選。第七頁,共214頁。大數(shù)據(jù)時(shí)代(shídài)來臨一分鐘內(nèi),互聯(lián)網(wǎng)發(fā)生(fāshēng)了什么?YouTube增加72小時(shí)視頻Google進(jìn)行200萬次搜索Spotify增加14首新音樂新增域名70個(gè)iTunes下載音樂1.5萬首新增網(wǎng)站571個(gè)每分鐘發(fā)郵件2.04億封LinkedIn職位搜索1.1萬次亞馬遜銷售8.3萬美元Snapchat分享照片10.4萬張Twitter發(fā)“Tweets”27.8萬則Flickr照片瀏覽2000萬次Skype通話140萬分鐘Facebook增加350GB數(shù)據(jù)、增180個(gè)“贊”、每秒增加新帖子4.1萬8第八頁,共214頁。古代,人們用牛來拉重物,當(dāng)一頭牛拉不動(dòng)一根圓木時(shí),他們不曾(bùcéng)想過培育更大更壯的牛。同樣,我們也不需要嘗試開發(fā)高級(jí)計(jì)算機(jī),而應(yīng)嘗試著結(jié)合使用更多計(jì)算機(jī)系統(tǒng)。格蕾斯.霍珀第九頁,共214頁。大數(shù)據(jù)(shùjù)云計(jì)算(jìsuàn)大數(shù)據(jù)(shùjù)互聯(lián)網(wǎng)營(yíng)銷10第十頁,共214頁。你準(zhǔn)備(zhǔnbèi)好了嗎?千載難逢(qiānzǎinánféng)的機(jī)會(huì)IT界的又一桶金11第十一頁,共214頁。開始(kāishǐ)云計(jì)算之旅第十二頁,共214頁。2023/2/6什么(shénme)是云計(jì)算?第十三頁,共214頁。2023/2/6什么(shénme)是云計(jì)算?搜索網(wǎng)絡(luò)(wǎngluò)購(gòu)物QQ微博微信……不識(shí)廬山真面目,只緣身在此山中第十四頁,共214頁。云計(jì)算(jìsuàn)歷史2023/2/6網(wǎng)格(wǎnɡɡé)計(jì)算云計(jì)算(jìsuàn)云計(jì)算和網(wǎng)格計(jì)算在Google中的搜索趨勢(shì)15第十五頁,共214頁。云計(jì)算(jìsuàn)發(fā)源(fāyuán)于搜索引擎平臺(tái),是互聯(lián)網(wǎng)企業(yè)在創(chuàng)業(yè)階段基于追求低成本、高性能、以及資源靈活分配與應(yīng)用快速布署的考慮而開發(fā)出一種IT系統(tǒng)實(shí)現(xiàn)技術(shù)。云計(jì)算(jìsuàn)利用大規(guī)模低成本運(yùn)算單元通過IP網(wǎng)絡(luò)連接,以提供各種計(jì)算服務(wù)的IT技術(shù)。第十六頁,共214頁。2/6/202316云計(jì)算(jìsuàn)定義云計(jì)算就是通過(tōngguò)網(wǎng)絡(luò)把信息技術(shù)當(dāng)作服務(wù)來使用核心理念最典型代表:Google搜索引擎典型代表云計(jì)算是網(wǎng)格計(jì)算、分布式計(jì)算、并行計(jì)算、效用(xiàoyòng)計(jì)算、網(wǎng)絡(luò)存儲(chǔ)、虛擬化、負(fù)載均衡、網(wǎng)絡(luò)技術(shù)等一些傳統(tǒng)計(jì)算方法的融合體。核心理念:通過不斷提高“云”的處理能力而減少用戶終端的處理負(fù)擔(dān),使用戶終端簡(jiǎn)化成一個(gè)單純的輸入輸出設(shè)備。17第十七頁,共214頁。云計(jì)算(jìsuàn)特征按需自助服務(wù)廣泛的網(wǎng)絡(luò)接入Title服務(wù)可計(jì)量資源池快速?gòu)椥缘谑隧摚?14頁。2/6/2023云計(jì)算(jìsuàn)分類私有云公有云混合云InfrastructureasaService以服務(wù)的形式提供虛擬硬件資源,如虛擬主機(jī)/存儲(chǔ)/網(wǎng)絡(luò)等資源。用戶無需購(gòu)買服務(wù)器、網(wǎng)絡(luò)設(shè)備、存儲(chǔ)設(shè)備,只需通過互聯(lián)網(wǎng)租賃(zūlìn)即可搭建自己的應(yīng)用系統(tǒng)典型應(yīng)用:AmazonWebService(AWS)PlatformasaService提供應(yīng)用服務(wù)引擎,如互聯(lián)網(wǎng)應(yīng)用編程接口/運(yùn)行(yùnxíng)平臺(tái)等。用戶基于該應(yīng)用服務(wù)引擎,可以構(gòu)建該類應(yīng)用。典型應(yīng)用:GoogleAppEngine,F,MicrosoftAzure服務(wù)平臺(tái)Softwareasa
Service用戶通過Internet(如瀏覽器)來使用軟件。用戶不必購(gòu)買軟件,只需按需租用軟件典型應(yīng)用:GoogleDoc,S,OracleCRMOnDemand,OfficeLiveWorkspace面向外部用戶需求,通過開放網(wǎng)絡(luò)提供云計(jì)算服務(wù)IDC,GoogleApp,Saleforce在線CRM大型企業(yè)按照云計(jì)算的架構(gòu)搭建平臺(tái),面向企業(yè)內(nèi)部需求提供云計(jì)算服務(wù)企業(yè)內(nèi)部數(shù)據(jù)中心等兼顧以上兩種情況的云計(jì)算服務(wù)AmazonWebServer等既為企業(yè)內(nèi)部又為外部用戶提供云計(jì)算服務(wù)按提供的服務(wù)類型按云服務(wù)的對(duì)象IAASPaaSSaaSIaaS分布存儲(chǔ)分布計(jì)算第十九頁,共214頁。云計(jì)算(jìsuàn)核心技術(shù)第二十頁,共214頁。云計(jì)算(jìsuàn)產(chǎn)生的前提節(jié)約成本廣泛的網(wǎng)絡(luò)(wǎngluò)接入虛擬化技術(shù)的成熟計(jì)算能力提升大數(shù)據(jù)的出現(xiàn)競(jìng)爭(zhēng)2023/2/6第二十一頁,共214頁。節(jié)約(jiéyuē)成本22第二十二頁,共214頁。廣泛(guǎngfàn)的網(wǎng)絡(luò)接入2023/2/6第二十三頁,共214頁。虛擬化技術(shù)(jìshù)的成熟2023/2/624第二十四頁,共214頁。虛擬化技術(shù)(jìshù)的成熟2023/2/625第二十五頁,共214頁。虛擬化技術(shù)(jìshù)的成熟2023/2/626第二十六頁,共214頁。計(jì)算能力提升(tíshēng)2023/2/627第二十七頁,共214頁。大數(shù)據(jù)(shùjù)的出現(xiàn)2023/2/628第二十八頁,共214頁。云計(jì)算(jìsuàn)產(chǎn)生原動(dòng)力2023/2/629第二十九頁,共214頁。云計(jì)算(jìsuàn)發(fā)展現(xiàn)狀2023/2/6第三十頁,共214頁。云參考(cānkǎo)架構(gòu)--AWS2023/2/6第三十一頁,共214頁。云參考(cānkǎo)架構(gòu)--Google2023/2/632第三十二頁,共214頁。BusinesssupportVirtualizationManagement(OpenStack、HMC、SVC/TPC、TSM)PhysicalresourcelayerCloudplatformusersCloudmanagementplatformUsermanagementBillingmanagement……ServicerequestmanagementRBACMonitoringandreportingOSSWorkflowmanagementConfigurationreal-timedataCallCenterCRMBankinterfaceMinicomputer(3computer)PC
Server(10computer)Storage(2computer)LoadbalancingSecurity,disasterrecovery,backup,virtualizationMinicomputer(3computer)PC
Server(10computer)Storage(1computer)云參考(cānkǎo)架構(gòu)33第三十三頁,共214頁。云計(jì)算(jìsuàn)的價(jià)值第三十四頁,共214頁。云部署(bùshǔ)35第三十五頁,共214頁。以分鐘時(shí)間部署(bùshǔ)復(fù)雜企業(yè)應(yīng)用36第三十六頁,共214頁。以分鐘時(shí)間部署(bùshǔ)復(fù)雜企業(yè)應(yīng)用37第三十七頁,共214頁。以分鐘時(shí)間部署(bùshǔ)復(fù)雜企業(yè)應(yīng)用38第三十八頁,共214頁。誰需要(xūyào)云計(jì)算2023/2/639第三十九頁,共214頁。Hadoop集群搭建(dājiàn)40第四十頁,共214頁。三種運(yùn)行(yùnxíng)模式安裝簡(jiǎn)單,幾乎不用作任何配置(pèizhì),但僅限于調(diào)試用途在單節(jié)點(diǎn)(jiédiǎn)上同時(shí)啟動(dòng)namenode、datanode、jobtracker、tasktracker、secondarynamenode等5個(gè)進(jìn)程,模擬分布式運(yùn)行的各個(gè)節(jié)點(diǎn)(jiédiǎn)。正常的Hadoop集群,由多個(gè)各司其職的節(jié)點(diǎn)構(gòu)成。單機(jī)模式偽分布模式完全分布式模式第四十一頁,共214頁。安裝和配置(pèizhì)步驟參考(cānkǎo)《Hadoop-1.0.0集群安裝.pdf》42第四十二頁,共214頁。VirtualBox安裝(ānzhuāng)虛擬機(jī)設(shè)置虛擬網(wǎng)卡為host-only模式(móshì)共享主機(jī)網(wǎng)卡配置虛擬機(jī)VirtualBoxHost-OnlyEthernetAdapter網(wǎng)卡IP為第四十三頁,共214頁。虛擬機(jī)NetworkAdapterBridged(橋接模式)Bridged(橋接模式):默認(rèn)使用VMnet0,不提供DHCP服務(wù),需要(xūyào)手動(dòng)配置IP、網(wǎng)關(guān)、子網(wǎng)掩碼等第四十四頁,共214頁。虛擬機(jī)NetworkAdapterNAT(網(wǎng)絡(luò)地址轉(zhuǎn)換模式(móshì))NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換模式(móshì)):默認(rèn)使用VMnet8,提供DHCP服務(wù)45第四十五頁,共214頁。虛擬機(jī)NetworkAdapterHost-only(主機(jī)模式)Host-only(主機(jī)模式):默認(rèn)使用VMnet1,提供DHCP服務(wù)當(dāng)要組成一個(gè)(yīɡè)與物理網(wǎng)絡(luò)相隔離的虛擬網(wǎng)絡(luò)時(shí),無疑非常適合使用Host-only模式。46第四十六頁,共214頁。安裝(ānzhuāng)Linux操作系統(tǒng)安裝的過程(guòchéng)中選擇OpenSSH支持47第四十七頁,共214頁。LinuxShellvimkdirtarchmodchowncpmv第四十八頁,共214頁。SSH安裝(ānzhuāng)安裝SSHyuminstallssh啟動(dòng)SSHservicesshdstart設(shè)置(shèzhì)開機(jī)運(yùn)行chkconfigsshdon第四十九頁,共214頁。SSH無密碼(mìmǎ)登錄hduser@master:~$ssh-keygen-trsa-P""hduser@master:~$cat$HOME/.ssh/id_rsa.pub>>$HOME/.ssh/authorized_keyshduser@master:~$sshmaster.hadoophduser@master:~$ssh-copy-id-i$HOME/.ssh/id_rsa.pubhduser@slave1.hadoophduser@master:~$ssh-copy-id-i$HOME/.ssh/id_rsa.pubhduser@slave2.hadoop第五十頁,共214頁。Java安裝(ānzhuāng)#mkdir/usr/local/java#cd/usr/local/java#chmodu+xjdk-6u30-linux-i586.bin#./jdk-6u30-linux-i586.bin#vi/etc/profile添加環(huán)境變量exportJAVA_HOME=/usr/java/jdk1.6.0_30/exportCLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexportHADOOP_HOME=/usr/local/hadoopexportPATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin執(zhí)行#source/etc/profile,使環(huán)境變量立即(lìjí)生效51第五十一頁,共214頁。禁用(jìnyònɡ)IPV6在所有機(jī)器上操作(cāozuò)#vi/etc/modprobe.d/anaconda.conf添加如下行installipv6/bin/true重新啟動(dòng)系統(tǒng)生效第五十二頁,共214頁。CloneMaster虛擬機(jī)選擇重新初始化網(wǎng)卡選項(xiàng)完全Clone啟動(dòng)新的虛擬機(jī)修改(xiūgǎi)hostname修改(xiūgǎi)網(wǎng)卡,讓網(wǎng)卡生效,能ping通Master第五十三頁,共214頁。CloneMaster配置(pèizhì)網(wǎng)卡1)必須確認(rèn)克隆(clone)的CentOS6的各個(gè)網(wǎng)卡的MAC是否有重復(fù)或與其它虛擬主機(jī)重復(fù),最好利用其網(wǎng)卡工具刷新一下,生成新的MAC。使用vi命令,打開/etc/sysconfig/network-scripts/下的ifcfg-eth*(*代表0~n個(gè)網(wǎng)卡序號(hào)),把這個(gè)新的MAC修改進(jìn)去。2)修改/etc/udev/rules.d/70-persistent-net.rules文件,刪除原來的eth0那一段,把后增加的eth1改為eth0。如果有多塊網(wǎng)卡以此類推(yǐcǐlèituī);如果只有一行,則把“eth1”改為eth0即可。3)使用start_udev命令重新檢測(cè)硬件;4)用servicenetworkrestart命令重啟下網(wǎng)絡(luò)。54第五十四頁,共214頁。HDFS重要(zhòngyào)配置項(xiàng)<!--core-site.xml--><configuration><property><name>hadoop.tmp.dir</name><value>/app/hadoop/tmp</value><description>Abaseforothertemporarydirectories.</description></property>55第五十五頁,共214頁。HDFS重要(zhòngyào)配置項(xiàng)<!--core-site.xml--><property><name></name><value>hdfs://master.hadoop:9000</value><description></description></property></configuration>第五十六頁,共214頁。HDFS重要(zhòngyào)配置項(xiàng)<!--mapred-site.xml--><configuration><property><name>mapred.job.tracker</name><value>master.hadoop:9001</value><description>ThehostandportthattheMapReducejobtrackerrunsat.If"local",thenjobsarerunin-processasasinglemapandreducetask.</description></property></configuration>第五十七頁,共214頁。HDFS重要(zhòngyào)配置項(xiàng)<!--hdfs-site.xml--><configuration><property><name>dfs.replication</name><value>3</value><description></description></property></configuration>第五十八頁,共214頁。修改(xiūgǎi)配置文件$vi$HADOOP_HOME/conf/masters修改(xiūgǎi)localhost為master.hadoop$vi$HADOOP_HOME/conf/slaves修改(xiūgǎi)localhost為master.hadoop添加slave1.hadoopslave2.hadoop59第五十九頁,共214頁。創(chuàng)建(chuàngjiàn)hadoop.tmp.dir目錄#mkdir-p/app/hadoop/tmp#chownhduser:hadoop/app/hadoop/tmp#...andifyouwanttotightenupsecurity,chmodfrom755to750...#chmod750/app/hadoop/tmp第六十頁,共214頁。部署(bùshǔ)slave節(jié)點(diǎn)將master.hadoop上安裝配置(pèizhì)完成的hadoop文件夾復(fù)制到slave1.hadoop和slave2.hadoop:hduser@master:hadoop$scp-r/usr/local/hadoophduser@slave1.hadoop:/usr/local/hduser@master:hadoop$scp-r/usr/local/hadoophduser@slave2.hadoop:/usr/local/第六十一頁,共214頁。格式化HDFS文件系統(tǒng)在master.hadoop上使用(shǐyòng)hduser操作hduser@master:hadoop$bin/hadoopnamenode-format第六十二頁,共214頁。啟動(dòng)(qǐdòng)Hadoop使用hduser用戶,在master.hadoop上bin/start-all.sh啟動(dòng)hduser@master:hadoop$bin/start-all.sh用jps命令(mìnglìng)看到如下輸出,則安裝成功DataNodeJpsNameNodeJobTrackerTaskTrackerSecondaryNameNode第六十三頁,共214頁。Web查看(chákàn)HDFS信息查看(chákàn)集群狀態(tài)00:5003000:50060第六十四頁,共214頁。大數(shù)據(jù)(shùjù)第六十五頁,共214頁。大數(shù)據(jù)時(shí)代(shídài)來臨一分鐘內(nèi),互聯(lián)網(wǎng)發(fā)生了什么?YouTube增加72小時(shí)視頻Google進(jìn)行200萬次搜索Spotify增加14首新音樂新增域名70個(gè)iTunes下載音樂1.5萬首新增網(wǎng)站571個(gè)每分鐘發(fā)郵件2.04億封LinkedIn職位搜索1.1萬次亞馬遜銷售8.3萬美元Snapchat分享照片10.4萬張Twitter發(fā)“Tweets”27.8萬則Flickr照片瀏覽(liúlǎn)2000萬次Skype通話140萬分鐘Facebook增加350GB數(shù)據(jù)、增180個(gè)“贊”、每秒增加新帖子4.1萬第六十六頁,共214頁。大數(shù)據(jù)(shùjù)2023/2/6第六十七頁,共214頁。大數(shù)據(jù)(shùjù)&數(shù)據(jù)(shùjù)結(jié)構(gòu)2023/2/668第六十八頁,共214頁。大數(shù)據(jù)(shùjù)2023/2/6第六十九頁,共214頁。大數(shù)據(jù)(shùjù)存儲(chǔ)2023/2/670第七十頁,共214頁。大數(shù)據(jù)(shùjù)的4V2023/2/6數(shù)據(jù)量時(shí)效性多變性價(jià)值(jiàzhí)性71第七十一頁,共214頁。Hadoop72第七十二頁,共214頁。大數(shù)據(jù)(shùjù)的服務(wù)器2023/2/6第七十三頁,共214頁。大數(shù)據(jù)分析2023/2/609年4月59秒排序(páixù)500GB(在1400個(gè)節(jié)點(diǎn)上)173分鐘內(nèi)排序(páixù)100TB數(shù)據(jù)(在3400個(gè)節(jié)點(diǎn)上)74第七十四頁,共214頁。大數(shù)據(jù)分析2023/2/61.可視化分析2.數(shù)據(jù)挖掘算法(suànfǎ)3.預(yù)測(cè)性分析能力4.語義引擎5.數(shù)據(jù)質(zhì)量和數(shù)據(jù)管理75第七十五頁,共214頁。Hadoop的思想(sīxiǎng)之源:Google下一步(yībù)Googlewhat?Google搜索引擎GmailGoogleearthGoogle翻譯(fānyì)Google+76第七十六頁,共214頁。Google低成本之道1234不使用(shǐyòng)超級(jí)計(jì)算機(jī),不使用(shǐyòng)專業(yè)存儲(chǔ)。大量使用普通(pǔtōng)的pc服務(wù)器,提供有冗余的集群服務(wù)器多個(gè)(duōɡè)數(shù)據(jù)中心運(yùn)營(yíng)商向Google倒付費(fèi)77第七十七頁,共214頁。Google面臨(miànlíng)的難題大量網(wǎng)頁如何(rúhé)存儲(chǔ)?搜索算法Rank計(jì)算(jìsuàn)問題第七十八頁,共214頁。2/6/202378Google關(guān)鍵技術(shù)和思想(sīxiǎng)1GFS2Map-Reduce3Bigtable79第七十九頁,共214頁。Google三大(sāndà)論文TheGoogleFileSystems.pdfMapReduceSimpliedDataProcessingonLargeClusters.pdfBigtableADistributedStorageSystemforStructuredData.pdfTheChubbylockservice.pdfLogicalTimeAWaytoCaptureCausality.pdfLog-StructuredFileSystem.pdf80第八十頁,共214頁。Hadoop從何而來第八十一頁,共214頁。Hadoop的源起——Lucene對(duì)于大數(shù)量的場(chǎng)景,Lucene仍面對(duì)與Google同樣(tóngyàng)的困難。Lucene的目的(mùdì)是為軟件開發(fā)人員提供一個(gè)簡(jiǎn)單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實(shí)現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。DougCutting開創(chuàng)的開源軟件,用java書寫代碼,實(shí)現(xiàn)與Google類似的全文搜索功能,提供了全文檢索引擎(yǐnqíng)的架構(gòu),包括完整的查詢引擎(yǐnqíng)和索引引擎(yǐnqíng)。.
Lucene第八十二頁,共214頁。Hadoop發(fā)展(fāzhǎn)歷史LuceneNutchHadoop第八十三頁,共214頁。Hadoop群雄逐鹿(qúnxióngzhúlù)亞馬遜百度(bǎidù)云Apache,Cloudera,MapR,HotonWorks,IntelIBMHPDell浪潮(làngcháo)云創(chuàng)存儲(chǔ)云服務(wù)解決方案
一體機(jī)發(fā)行版本Hadoop第八十四頁,共214頁。目前(mùqián)Hadoop達(dá)到的高度實(shí)現(xiàn)云計(jì)算的事實(shí)標(biāo)準(zhǔn)開源軟件包含數(shù)十個(gè)具有強(qiáng)大生命力的子項(xiàng)目已經(jīng)能在數(shù)千節(jié)點(diǎn)上運(yùn)行(yùnxíng),處理數(shù)據(jù)量和排序時(shí)間不斷打破世界紀(jì)錄第八十五頁,共214頁。Hadoop定義(dìngyì)Hadoop一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運(yùn)算和存儲(chǔ)(cúnchǔ)。Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成員組成。HDFS和MapReduce是兩個(gè)最基礎(chǔ)最重要的成員。第八十六頁,共214頁。Hadoop子項(xiàng)目家族(jiāzú)第八十七頁,共214頁。PigHadoop客戶端使用(shǐyòng)類似于SQL的面向數(shù)據(jù)流的語言PigLatinPigLatin可以完成排序,過濾,求和,聚組,關(guān)聯(lián)等操作,可以支持自定義函數(shù)Pig自動(dòng)把PigLatin映射為Map-Reduce作業(yè)上傳到集群運(yùn)行,減少用戶編寫Java程序的苦惱三種運(yùn)行方式:Gruntshell,腳本方式,嵌入式第八十八頁,共214頁。HBaseGoogleBigtable的開源實(shí)現(xiàn)列式數(shù)據(jù)庫(kù)可集群化可以使用shell、web、api等多種方式訪問適合(shìhé)高讀寫(insert)的場(chǎng)景HQL查詢語言NoSQL的典型代表產(chǎn)品第八十九頁,共214頁。Hive數(shù)據(jù)倉(cāng)庫(kù)工具??梢园袶adoop下的原始結(jié)構(gòu)化數(shù)據(jù)變成Hive中的表支持一種與SQL幾乎完全相同的語言HiveQL。除了不支持更新(gēngxīn)、索引和事務(wù),幾乎SQL的其它特征都能支持可以看成是從SQL到Map-Reduce的映射器提供shell、JDBC/ODBC、Thrift、Web等接口第九十頁,共214頁。ZookeeperGoogleChubby的開源實(shí)現(xiàn)用于協(xié)調(diào)分布式系統(tǒng)上的各種服務(wù)。例如確認(rèn)消息是否準(zhǔn)確到達(dá),防止單點(diǎn)失效,處理負(fù)載均衡(jūnhéng)等應(yīng)用場(chǎng)景:Hbase,實(shí)現(xiàn)Namenode自動(dòng)切換工作原理:領(lǐng)導(dǎo)者,跟隨者以及選舉過程第九十一頁,共214頁。Sqoop用于在Hadoop和關(guān)系(guānxì)型數(shù)據(jù)庫(kù)之間交換數(shù)據(jù)通過JDBC接口連入關(guān)系(guānxì)型數(shù)據(jù)庫(kù)第九十二頁,共214頁。Avro數(shù)據(jù)序列化工具,由Hadoop的創(chuàng)始人DougCutting主持開發(fā)用于支持大批量數(shù)據(jù)交換的應(yīng)用。支持二進(jìn)制序列化方式,可以便捷(biànjié),快速地處理大量數(shù)據(jù)動(dòng)態(tài)語言友好,Avro提供的機(jī)制使動(dòng)態(tài)語言可以方便地處理Avro數(shù)據(jù)。Thrift接口第九十三頁,共214頁。Chukwa架構(gòu)在Hadoop之上的數(shù)據(jù)采集與分析框架主要進(jìn)行日志采集和分析通過安裝在收集節(jié)點(diǎn)的“代理”采集最原始的日志數(shù)據(jù)代理將數(shù)據(jù)發(fā)給收集器收集器定時(shí)將數(shù)據(jù)寫入Hadoop集群指定定時(shí)啟動(dòng)的Map-Reduce作業(yè)隊(duì)數(shù)據(jù)進(jìn)行加工處理和分析Hadoop基礎(chǔ)(jīchǔ)管理中心(HICC)最終展示數(shù)據(jù)第九十四頁,共214頁。CassandraNoSQL,分布式的Key-Value型數(shù)據(jù)庫(kù),由Facebook貢獻(xiàn)與Hbase類似(lèisì),也是借鑒GoogleBigtable的思想體系只有順序?qū)?,沒有隨機(jī)寫的設(shè)計(jì),滿足高負(fù)荷情形的性能需求第九十五頁,共214頁。Hadoop特點(diǎn)(tèdiǎn)可擴(kuò)展經(jīng)濟(jì)AB高效D可靠C可架設(shè)于任何pc機(jī)上分布式文件系統(tǒng)的高效數(shù)據(jù)交互實(shí)現(xiàn)以及MapReduce結(jié)合LocalData處理的模式,為高效處理海量的信息作了基礎(chǔ)準(zhǔn)備不論是存儲(chǔ)的可擴(kuò)展性還是計(jì)算的可擴(kuò)展行,都是Hadoop的根本分布式文件系統(tǒng)的備份恢復(fù)機(jī)制以及MapReduce的任務(wù)監(jiān)控保證了分布式處理的可靠性第九十六頁,共214頁。 基礎(chǔ)架構(gòu)第九十七頁,共214頁。
Hadoop與Google比較(bǐjiào)
后端系統(tǒng):Google數(shù)據(jù)分析平臺(tái)(píngtái)Google集群管理系統(tǒng)存儲(chǔ)(cúnchǔ)+計(jì)算(HDFS+MapReduce)數(shù)據(jù)倉(cāng)庫(kù)(Hive)內(nèi)存數(shù)據(jù)庫(kù)(Hbase)批處理(Pig)BSP模型(Hama)分布式鎖(Zoomkeeper)第九十八頁,共214頁。子系統(tǒng)位置(wèizhi)第九十九頁,共214頁。Hadoop應(yīng)用(yìngyòng)案例第一百頁,共214頁。國(guó)內(nèi)應(yīng)用(yìngyòng)情況第一百零一頁,共214頁。案例(ànlì)1:淘寶每日新增數(shù)據(jù)(shùjù)20T累積(lěijī)數(shù)據(jù)14P2000+服務(wù)器的云計(jì)算平臺(tái)每天處理100,000+作業(yè)任務(wù),包括100+新增作業(yè)任務(wù)每天處理1P+數(shù)據(jù),包括0.5%新增數(shù)據(jù)數(shù)據(jù)規(guī)模第一百零二頁,共214頁。雙十一191億背后的開源(kāiyuán)技術(shù)?支付寶核心數(shù)據(jù)庫(kù)集群處理(chǔlǐ)了41億個(gè)事務(wù)執(zhí)行(zhíxíng)285億次SQL訪問1931億次內(nèi)存數(shù)據(jù)塊13億個(gè)物理讀生成15TB日志雙十一第一百零三頁,共214頁。淘寶數(shù)據(jù)(shùjù)平臺(tái)——產(chǎn)品架構(gòu)數(shù)據(jù)(shùjù)應(yīng)用開發(fā)平臺(tái)——數(shù)據(jù)(shùjù)工場(chǎng)底層(dǐcénɡ)平臺(tái)數(shù)據(jù)開發(fā)平臺(tái)數(shù)據(jù)應(yīng)用報(bào)表需求(淘數(shù)據(jù))即席查詢(adhoc)數(shù)據(jù)分析數(shù)據(jù)挖掘數(shù)據(jù)產(chǎn)品DataIntegrationDBsyncTTHiveHadoopMapReduceHadoopHDFSDatax報(bào)表需求(淘數(shù)據(jù))Hbase即席查詢(adhoc)數(shù)據(jù)分析數(shù)據(jù)挖掘數(shù)據(jù)產(chǎn)品實(shí)時(shí)計(jì)算
第一百零四頁,共214頁。案例(ànlì)2:暴風(fēng)影音每天處理日志1.2T,20億行。存儲(chǔ)設(shè)計(jì)容量200TB對(duì)外提供產(chǎn)品分析(fēnxī),廣告分析(fēnxī),用戶分析(fēnxī)服務(wù)。每天處理任務(wù)上千個(gè)jobs第一百零五頁,共214頁。應(yīng)用領(lǐng)域搜索社交游戲(yóuxì)視頻電信醫(yī)療(yīliáo)交通公安航空電力(diànlì)金融第一百零六頁,共214頁。HDFS介紹(jièshào)第一百零七頁,共214頁。HDFS定義(dìngyì)HDFS是GoogleGFS的開源版本,一個(gè)高度容錯(cuò)的分布式文件系統(tǒng),它能夠提供高吞吐量的數(shù)據(jù)(shùjù)訪問,適合存儲(chǔ)海量(PB級(jí))大文件(通常超過64M)。第一百零八頁,共214頁。HDFS設(shè)計(jì)(shèjì)基礎(chǔ)與目標(biāo)硬件錯(cuò)誤是常態(tài),需要冗余。流式數(shù)據(jù)訪問。即數(shù)據(jù)批量讀取而非隨機(jī)讀寫,Hadoop擅長(zhǎng)(shàncháng)做數(shù)據(jù)分析而不是數(shù)據(jù)處理。大規(guī)模數(shù)據(jù)集簡(jiǎn)單一致性模型。程序采用“數(shù)據(jù)就近”原則分配節(jié)點(diǎn)執(zhí)行。第一百零九頁,共214頁。HDFS不適合(shìhé)場(chǎng)景1低延遲數(shù)據(jù)訪問HDFS是為了達(dá)到高數(shù)據(jù)吞吐量而優(yōu)化的,這是以延遲為代價(jià)的,對(duì)于低延遲訪問,可以用Hbase(hadoop的子項(xiàng)目)。2大量的小文件3多用戶寫入任意修改第一百一十頁,共214頁。HDFS架構(gòu)(jiàɡòu)在Hadoop中,一個(gè)文件被劃分成大小固定的多個(gè)文件塊,分布的存儲(chǔ)(cúnchǔ)在集群中的節(jié)點(diǎn)中。111第一百一十一頁,共214頁。HDFS架構(gòu)(jiàɡòu)同一個(gè)文件塊在不同的節(jié)點(diǎn)(jiédiǎn)中有多個(gè)副本111第一百一十二頁,共214頁。HDFS架構(gòu)(jiàɡòu)我們(wǒmen)需要一個(gè)集中的地方保存文件的分塊信息/home/hdfs/a.txt.part1,3,(dn1,dn2,dn3)/home/hdfs/a.txt.part2,3,(dn2,dn3,dn4)/home/hdfs/a.txt.part3,3,(dn6,dn11,dn28)…第一百一十三頁,共214頁。HDFS架構(gòu)(jiàɡòu)第一百一十四頁,共214頁。HDFS架構(gòu)(jiàɡòu)BlockNameNodeDataNodeHA策略(cèlüè)一個(gè)文件(wénjiàn)分塊,默認(rèn)64M用于存儲(chǔ)Blocks保存整個(gè)文件系統(tǒng)的目錄信息,文件信息以及文件相應(yīng)的分塊信息NameNode一旦宕機(jī),整個(gè)文件系統(tǒng)將無法工作。如果NameNode中的數(shù)據(jù)丟失,整個(gè)文件系統(tǒng)也就丟失了。
115第一百一十五頁,共214頁。HDFS體系結(jié)構(gòu)NameNodeDataNode事務(wù)日志映像(yìnɡxiànɡ)文件SecondaryNameNode116第一百一十六頁,共214頁。Namenode管理文件系統(tǒng)的命名空間記錄每個(gè)文件數(shù)據(jù)塊在各個(gè)Datanode上的位置和副本信息協(xié)調(diào)客戶端對(duì)文件的訪問記錄命名空間內(nèi)的改動(dòng)或空間本身屬性的改動(dòng)Namenode使用事務(wù)(shìwù)日志記錄HDFS元數(shù)據(jù)的變化。使用映像文件存儲(chǔ)文件系統(tǒng)的命名空間,包括文件映射,文件屬性等第一百一十七頁,共214頁。Datanode負(fù)責(zé)所在物理節(jié)點(diǎn)的存儲(chǔ)管理一次寫入,多次讀?。ú恍薷模┪募蓴?shù)據(jù)塊組成,典型(diǎnxíng)的塊大小是64MB數(shù)據(jù)塊盡量散布道各個(gè)節(jié)點(diǎn)第一百一十八頁,共214頁。讀取數(shù)據(jù)流程(liúchéng)第一百一十九頁,共214頁。HDFS文件(wénjiàn)操作命令行方式(fāngshì)API方式(fāngshì)第一百二十頁,共214頁。HDFS基本操作hadoopdfs–ls/hadoopdfs–mkidr/testhadoopdfs–get/filenamehadoopdfs–putsrcfile/desfile第一百二十一頁,共214頁。列出HDFS文件(wénjiàn)hduser@master:~$hadoopdfs-ls/注意:hadoop沒有當(dāng)前目錄的概念(gàiniàn),也沒有cd命令。第一百二十二頁,共214頁。上傳文件(wénjiàn)到HDFShduser@master:~$hadoopdfs-put/home/hduser/test.txt/app/hadoop/tmp/hduser@master:~$hadoopdfs-ls/app/hadoop/tmp/第一百二十三頁,共214頁。將HDFS的文件(wénjiàn)復(fù)制到本地hduser@master:~$hadoopdfs-get/app/hadoop/tmp/test.txt/home/hduser/testdfs.txthduser@master:~$ll/home/hduser/第一百二十四頁,共214頁。刪除(shānchú)HDFS下的文檔hduser@master:~$hadoopdfs-ls/app/hadoop/tmp/hduser@master:~$hadoopdfs-rmr/app/hadoop/tmp/test.txthduser@master:~$hadoopdfs-ls/app/hadoop/tmp/第一百二十五頁,共214頁。查看文件(wénjiàn)內(nèi)容hduser@master:~$hadoopdfs-ls.hduser@master:~$hadoopdfs-cat./test.txt第一百二十六頁,共214頁。查看(chákàn)HDFS基本統(tǒng)計(jì)信息hduser@master:~$hadoopdfsadmin-report第一百二十七頁,共214頁。進(jìn)入和退出(tuìchū)安全模式hduser@master:~$hadoopdfsadmin-safemodeenterhduser@master:~$hadoopdfsadmin-safemodeleave更多命令(mìnglìng)請(qǐng)參考《file_system_shell.pdf》第一百二十八頁,共214頁。節(jié)點(diǎn)(jiédiǎn)添加在新節(jié)點(diǎn)安裝好hadoop把namenode的有關(guān)配置文件復(fù)制到該節(jié)點(diǎn)修改masters和slaves文件,增加該節(jié)點(diǎn)設(shè)置(shèzhì)ssh免密碼進(jìn)出該節(jié)點(diǎn)單獨(dú)啟動(dòng)該節(jié)點(diǎn)上的datanode和tasktracker(hadoop-daemon.shstartdatanode/tasktracker)運(yùn)行start-balancer.sh進(jìn)行數(shù)據(jù)負(fù)載均衡第一百二十九頁,共214頁。啟動(dòng)(qǐdòng)某些特定后臺(tái)進(jìn)程hduser@master:~$start-all.sh第一百三十頁,共214頁。負(fù)載(fùzài)均衡當(dāng)節(jié)點(diǎn)出現(xiàn)故障,或新增加節(jié)點(diǎn)時(shí),數(shù)據(jù)塊分布可能不均勻,負(fù)載均衡可以重新(chóngxīn)平衡各個(gè)datanode上數(shù)據(jù)塊的分布。hduser@master:~$start-balancer.sh第一百三十一頁,共214頁。HDFSAPI第一百三十二頁,共214頁。Java調(diào)用(diàoyòng)HDFS演示hadoopjar/home/hduser/upload.jar/app/hadoop/tmp/test.txt(本地(běndì)文件)/app/hadoop/tmp/outputhadoopdfs-ls/app/hadoop/tmp/hadoopdfs-cat/app/hadoop/tmp/output第一百三十三頁,共214頁。Map-Reduce第一百三十四頁,共214頁。MapReduce算法(suànfǎ)思想MapReduce主要反映了映射和規(guī)約兩個(gè)概念(gàiniàn),分別完成映射操作和規(guī)約操作。第一百三十五頁,共214頁。第一百三十六頁,共214頁。MapReduce邏輯(luójí)部署第一百三十七頁,共214頁。MapReduce邏輯(luójí)部署Hadoop主要由HDFS(HadoopDistributedFileSystem)和MapReduce引擎(yǐnqíng)兩部分組成。最底部是HDFS,它存儲(chǔ)Hadoop集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。HDFS的上一層是MapReduce引擎(yǐnqíng),該引擎(yǐnqíng)由JobTrackers和TaskTrackers組成。第一百三十八頁,共214頁。MapReduce運(yùn)行機(jī)制第一百三十九頁,共214頁。GoogleMapReduce原理(yuánlǐ)2023/2/6(1) 輸入文件分成M塊,每塊大概16M~64MB(可以通過參數(shù)決定),接著在集群的機(jī)器上執(zhí)行分派處理程序
(2) M個(gè)Map任務(wù)和R個(gè)Reduce任務(wù)需要分派,Master選擇空閑Worker來分配這些Map或Reduce任務(wù)(3) Worker讀取并處理相關(guān)輸入塊,Map函數(shù)產(chǎn)生的中間結(jié)果<key,value>對(duì)暫時(shí)緩沖到內(nèi)存(4) 中間結(jié)果定時(shí)寫到本地硬盤,分區(qū)(fēnqū)函數(shù)將其分成R個(gè)區(qū)。中間結(jié)果在本地硬盤的位置信息將被發(fā)送回Master,然后Master負(fù)責(zé)把這些位置信息傳送給ReduceWorker第一百四十頁,共214頁。GoogleMapReduce原理(yuánlǐ)2023/2/6(5) 當(dāng)Master通知執(zhí)行Reduce的Worker關(guān)于中間<key,value>對(duì)的位置時(shí),它調(diào)用遠(yuǎn)程過程,從MapWorker的本地硬盤上讀取緩沖的中間數(shù)據(jù)。當(dāng)ReduceWorker讀到所有的中間數(shù)據(jù),它就使用中間key進(jìn)行排序,這樣可使相同key的值都在一起(6) ReduceWorker根據(jù)每一個(gè)唯一中間key來遍歷所有的排序后的中間數(shù)據(jù),并且把key和相關(guān)的中間結(jié)果值集合傳遞(chuándì)給用戶定義的Reduce函數(shù)。Reduce函數(shù)的結(jié)果寫到一個(gè)最終的輸出文件
(7) 當(dāng)所有的Map任務(wù)和Reduce任務(wù)都完成的時(shí)候,Master激活用戶程序。此時(shí)MapReduce返回用戶程序的調(diào)用點(diǎn)第一百四十一頁,共214頁。HadoopMapReduce實(shí)現(xiàn)(shíxiàn)機(jī)制2023/2/6第一百四十二頁,共214頁。HadoopMapReduce實(shí)現(xiàn)(shíxiàn)機(jī)制2023/2/61、向jobtracker請(qǐng)求一個(gè)新的作業(yè)ID(通過Jobtracker的getNewJobId())2、檢查作業(yè)的輸出目錄。比如,如果沒有指定輸出目錄或者它已經(jīng)存在,作業(yè)就不會(huì)被提交,并有錯(cuò)誤(cuòwù)返回給MapReduce程序。3、計(jì)算作業(yè)的輸入分片。如果分片無法計(jì)算,比如因?yàn)檩斎肼窂讲淮嬖?,作業(yè)就不會(huì)被提交,并有錯(cuò)誤(cuòwù)返回給MapReduce程序。第一百四十三頁,共214頁。HadoopMapReduce實(shí)現(xiàn)(shíxiàn)機(jī)制2023/2/64、將運(yùn)行作業(yè)所需要(xūyào)的資源(包括作業(yè)的JAR文件、配置文件和計(jì)算所得的輸入分片)復(fù)制到一個(gè)以作業(yè)ID號(hào)命名的目錄中jobtracker的文件系統(tǒng)。作業(yè)JAR的副本較多(由mapred.submit.replication屬性控制,默認(rèn)為10),因此,在tasktracker運(yùn)行作業(yè)任務(wù)時(shí),集群能為它們提供許多副本進(jìn)行訪問。(步驟3)5、告訴jobtracker作業(yè)準(zhǔn)備執(zhí)行(通過調(diào)用JobTracker的submitJob()方法)(步驟4)第一百四十四頁,共214頁。HadoopMapReduce實(shí)現(xiàn)(shíxiàn)機(jī)制2023/2/66、Jobtracker接受(jiēshòu)到對(duì)其submitJob()方法調(diào)用后,會(huì)把此調(diào)用放入一個(gè)內(nèi)部的隊(duì)列中,交由作業(yè)調(diào)度器進(jìn)行調(diào)度,并對(duì)其進(jìn)行初始化。初始化包括創(chuàng)建一個(gè)代表該正在運(yùn)行的作業(yè)的對(duì)象,它封裝任務(wù)和記錄信息,以便跟蹤任務(wù)的狀態(tài)和進(jìn)程(步驟5)7、要?jiǎng)?chuàng)建運(yùn)行任務(wù)列表,作業(yè)調(diào)度器首先從共享文件系統(tǒng)中獲取JobClient已經(jīng)計(jì)算好的輸入分片信息(步驟6)然后為每個(gè)分片創(chuàng)建一個(gè)map任務(wù)。創(chuàng)建的reduce任務(wù)的數(shù)量由JobConf的mapred.reduce.tasks屬性決定,它是用setNumReduceTasks()方法來設(shè)定的,然后調(diào)度器便創(chuàng)建這么多reduce任務(wù)來運(yùn)行。任務(wù)在此時(shí)指定ID號(hào)。第一百四十五頁,共214頁。HadoopMapReduce實(shí)現(xiàn)(shíxiàn)機(jī)制2023/2/68、TaskTraker運(yùn)行一個(gè)簡(jiǎn)單的循環(huán)來定期發(fā)送心跳(heartbeat)給Jobtracker。心跳方法告知jobtracker,tasktracker是否存活,同時(shí)也充當(dāng)兩者之間的消息通道。作為(zuòwéi)心跳的一部分,tasktracker會(huì)指明它是否已經(jīng)準(zhǔn)備運(yùn)行新的任務(wù),如果是,jobtracker會(huì)為它分配一個(gè)任務(wù),并使用心跳的返回值與tasktracker進(jìn)行通信(步驟7)第一百四十六頁,共214頁。HadoopMapReduce實(shí)現(xiàn)(shíxiàn)機(jī)制2023/2/69、現(xiàn)在,tasktracker已經(jīng)被分配了任務(wù),下一步是運(yùn)行任務(wù)。第一步,通過從共享文件系統(tǒng)把作業(yè)JAR文件復(fù)制到tasktracker所在的文件系統(tǒng),從而實(shí)現(xiàn)作業(yè)的JAR文件本地化。同時(shí),tasktracker將應(yīng)用程序所需要的全部文件從分布式緩存復(fù)制到本地磁盤。第二步,tasktracker為任務(wù)新建一個(gè)本地工作目錄,并把JAR文件中的內(nèi)容解壓到這個(gè)文件夾下。第三步,tasktracker新建一個(gè)TaskRunner實(shí)例(shílì)來運(yùn)行任務(wù)。TaskRunner啟動(dòng)一個(gè)新的Java虛擬機(jī)(步驟9)來運(yùn)行每個(gè)任務(wù)(步驟10),以便用戶定義的map和reduce函數(shù)的任何軟件問題都不會(huì)影響tasktracker(比如導(dǎo)致崩潰或者掛起等)。但在不同的任務(wù)之間重用JVM還是可能的。10、子進(jìn)程通過中央接口與父進(jìn)程進(jìn)行通信。它每隔幾秒便告知父進(jìn)程它的進(jìn)度,直到任務(wù)完成。第一百四十七頁,共214頁。MapReduce應(yīng)用程序組成(zǔchénɡ)1一個(gè)Mapper函數(shù)2一個(gè)Reducer函數(shù)3一個(gè)main函數(shù)。MapReduce第一百四十八頁,共214頁。MapReduceMapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)(shùjù)集(大于1TB)的并行運(yùn)算通俗的說就是將一個(gè)大任務(wù)分成多個(gè)小任務(wù)并行完成,然后合并小任務(wù)的結(jié)果,得到最終結(jié)果。Map-reduce的思想就是“分而治之”第一百四十九頁,共214頁。MapperMapper負(fù)責(zé)“分”,即把復(fù)雜的任務(wù)分解為若干個(gè)“簡(jiǎn)單(jiǎndān)的任務(wù)”執(zhí)行.第一百五十頁,共214頁。Reducer對(duì)map階段的結(jié)果(jiēguǒ)進(jìn)行匯總Reducer的數(shù)目由mapred-site.xml配置文件里的項(xiàng)目mapred.reduce.tasks決定。缺省值為1,用戶可以覆蓋之第一百五十一頁,共214頁。Shuffler在mapper和reducer中間的一個(gè)步驟(可以沒有)可以把mapper的輸出按照某種key值重新切分和組合成n份,把key值符合某種范圍(fànwéi)的輸出送到特定的reducer那里去處理可以簡(jiǎn)化reducer過程第一百五十二頁,共214頁。命令(mìnglìng)操作hadoopjar/usr/local/hadoop/hadoop-examples-1.0.4.jarwordcount/app/hadoop/tmp/test.txt/app/hadoop/tmp/output第一百五十三頁,共214頁。WordCount的運(yùn)算(yùnsuàn)過程假設(shè)輸入文件的內(nèi)容(nèiróng)如下:HowareyouHelloword,areyouokThisisatest第一百五十四頁,共214頁。文件(wénjiàn)被分成3個(gè)splitSplit1HowareyouSplit2Helloword,areyouokSplit3Thisisatest第一百五十五頁,共214頁。
Map的過程(guòchéng)
Split1Howareyou (How,1)(are,1)(you,1)Split2Helloword,areyouok (Hello,1)(word,,1)(are,1)(you,1)(ok,1)Split3Thisisatest (This,1)(is,1)(a,1)(test,1)第一百五十六頁,共214頁。Reduce的過程(guòchéng)(How,1)(are,1)(you,1)(Hello,1)(word,,1)(are,1)(you,1)(ok,1)(This,1)(is,1)(a,1)(test,1)(How,{1})(are,{1,1})(you,{1,1})(Hello,{1})(word,,{1})(are,{1})(ok,{1})(This,{1})(is,{1})(a,{1})(test,{1})第一百五十七頁,共214頁。調(diào)度(diàodù)機(jī)制缺省為先入先出作業(yè)隊(duì)列(duìliè)調(diào)度支持公平調(diào)度器支持容量調(diào)度器第一百五十八頁,共214頁。任務(wù)(rènwu)執(zhí)行優(yōu)化推測(cè)式執(zhí)行:即如果jobtracker發(fā)現(xiàn)有拖后腿的任務(wù),會(huì)再啟動(dòng)一個(gè)相同的備份任務(wù),然后哪個(gè)先執(zhí)行完就會(huì)kill去另外一個(gè)。因此在監(jiān)控網(wǎng)頁上經(jīng)常能看到正常執(zhí)行完的作業(yè)有被kill掉的任務(wù)推測(cè)式執(zhí)行缺省打開,但如果是代碼問題,并不能解決問題,而且會(huì)使集群更慢,通過在mapred-site.xml配置文件中設(shè)置mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution可為map任務(wù)或reduce任務(wù)開啟或關(guān)閉推測(cè)式執(zhí)行重用JVM,可以省去啟動(dòng)新的JVM消耗的時(shí)間,在mapred-site.xml配置文件中設(shè)置mapred.job.reuse.jvm.num.tasks設(shè)置單個(gè)JVM上運(yùn)行的最大任務(wù)數(shù)(1,>1或-1表示沒有限制)忽略模式,任務(wù)在讀取數(shù)據(jù)失敗2次后,會(huì)把數(shù)據(jù)位置(wèizhi)告訴jobtracker,后者重新啟動(dòng)該任務(wù)并且在遇到所記錄的壞數(shù)據(jù)時(shí)直接跳過(缺省關(guān)閉,用SkipBadRecord方法打開)第一百五十九頁,共214頁。錯(cuò)誤處理機(jī)制(jīzhì):硬件故障硬件故障是指jobtracker故障或tasktracker故障jobtracker是單點(diǎn),若發(fā)生故障目前hadoop還無法處理,唯有選擇最牢靠的硬件作為(zuòwéi)jobtrackerJobtracker通過心跳(周期1分鐘)信號(hào)了解tasktracker是否發(fā)生故障或負(fù)載過于嚴(yán)重Jobtracker將從任務(wù)節(jié)點(diǎn)列表中移除發(fā)生故障的tasktracker如果故障節(jié)點(diǎn)在執(zhí)行map任務(wù)并且尚未完成,jobtracker會(huì)要求其它節(jié)點(diǎn)重新執(zhí)行此map任務(wù)如果故障節(jié)點(diǎn)在執(zhí)行reduce任務(wù)并且尚未完成,jobtracker會(huì)要求其它節(jié)點(diǎn)繼續(xù)執(zhí)行尚未完成的reduce任務(wù)第一百六十頁,共214頁。錯(cuò)誤處理機(jī)制(jīzhì):任務(wù)失敗由于代碼缺陷或進(jìn)程崩潰引起任務(wù)失敗Jvm自動(dòng)退出,向tasktracker父進(jìn)程發(fā)送方錯(cuò)誤信息,錯(cuò)誤信息也會(huì)寫入到日志Tasktracker監(jiān)聽程序會(huì)發(fā)現(xiàn)進(jìn)程退出,或進(jìn)程很久沒有更新信息送回,將任務(wù)標(biāo)記為失敗標(biāo)記失敗任務(wù)后,任務(wù)計(jì)數(shù)器減去1以便接受新任務(wù),并通過心跳信號(hào)告訴jobtracker任務(wù)失敗的信息Jobtrack獲悉任務(wù)失敗后,將把該任務(wù)重新放入調(diào)度隊(duì)列(duìliè),重新分配出去再執(zhí)行如果一個(gè)任務(wù)失敗超過4次(可以設(shè)置),將不會(huì)再被執(zhí)行,同時(shí)作業(yè)也宣布失敗第一百六十一頁,共214頁。Hadoop命令(mìnglìng)大全第一百六十二頁,共214頁。HadoopAPI大全(dàquán)第一百六十三頁,共214頁。HBase第一百六十四頁,共214頁。Hbase的特點(diǎn)(tèdiǎn)高可靠性高性能可伸縮(shēnsuō)面向(miànxiànɡ)列第一百六十五頁,共214頁。Hbase介紹(jièshào)HBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)(shùjù)庫(kù)就像Bigtable利用了Google文件系統(tǒng)(FileSystem)所提供的分布式數(shù)據(jù)(shùjù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase不同于一般的關(guān)系數(shù)據(jù)(shùjù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)(shùjù)存儲(chǔ)的數(shù)據(jù)(shùjù)庫(kù).另一個(gè)不同的是HBase基于列的而不是基于行的模式第一百六十六頁,共214頁。Bigtable思想(sīxiǎng)學(xué)生表的例子S(s#,sn,sd,sa)存放為關(guān)系(guānxì)的學(xué)生表以bigtable方式存放學(xué)生表Bigtable:無所不包的大表第一百六十七頁,共214頁。Hbase邏輯(luójí)模型以表的形式存放數(shù)據(jù)表由行與列組成,每個(gè)列屬于某個(gè)列族,由行和列確定的存儲(chǔ)單元稱為元素(yuánsù)每個(gè)元素(yuánsù)保存了同一份數(shù)據(jù)的多個(gè)版本,由時(shí)間戳來標(biāo)識(shí)區(qū)分Bigtable:無所不包的大表第一百六十八頁,共214頁。Hbase行鍵行鍵是數(shù)據(jù)行在表里的唯一標(biāo)識(shí),并作為檢索記錄的主鍵訪問表里的行只有三種方式通過單個(gè)行鍵訪問給定行鍵的范圍訪問全表掃描行鍵可以(kěyǐ)是最大長(zhǎng)度不超過64KB的任意字符串,并按照字典序存儲(chǔ)對(duì)于經(jīng)常要一起讀取的行,要對(duì)行鍵值精心設(shè)計(jì),以便它們能放在一起存儲(chǔ)第一百六十九頁,共214頁。Hbase列族與列列表示為<列族>:<限定符>Hbase在磁盤上按照列族存儲(chǔ)數(shù)據(jù),這種列式數(shù)據(jù)庫(kù)的設(shè)計(jì)非常適合于數(shù)據(jù)分析的情形列族里的元素最好具有相同的讀寫方式(例如(lìrú)等長(zhǎng)的字符串),以提高性能列族名盡量短列族在創(chuàng)建表的時(shí)候聲明,一個(gè)列族可以包含多個(gè)列,列中的數(shù)據(jù)都是以二進(jìn)制形式存在,沒有數(shù)據(jù)類型。第一百七十頁,共214頁。Hbase時(shí)間(shíjiān)戳對(duì)應(yīng)每次數(shù)據(jù)操作(cāozuò)的時(shí)間,可由系統(tǒng)自動(dòng)生成,也可以由用戶顯式的賦值Hbase支持兩種數(shù)據(jù)版本回收方式:1每個(gè)數(shù)據(jù)單元,只存儲(chǔ)指定個(gè)數(shù)的最新版本2保存指定時(shí)間長(zhǎng)度的版本(例如7天)常見的客戶端時(shí)間查詢:“某個(gè)時(shí)刻起的最新數(shù)據(jù)”或“給我全部版本的數(shù)據(jù)”元素由行鍵,列族:限定符,時(shí)間戳唯一決定元素以字節(jié)碼形式存放,沒有類型之分第一百七十一頁,共214頁。HbasevsOracle索引不同造成行為的差異Hbase適合大量插入同時(shí)又有讀的情況Hbase的瓶頸是硬盤傳輸速度,Oracle的瓶頸是硬盤尋道時(shí)間(shíjiān)Hbase很適合尋找按照時(shí)間(shíjiān)排序topn的場(chǎng)景第一百七十二頁,共214頁。傳統(tǒng)(chuántǒng)數(shù)據(jù)庫(kù)的行式存儲(chǔ)數(shù)據(jù)存放在數(shù)據(jù)文件內(nèi)數(shù)據(jù)文件的基本組成單位(dānwèi):塊/頁塊內(nèi)結(jié)構(gòu):塊頭、數(shù)據(jù)區(qū)第一百七十三頁,共214頁。Hbase物理(wùlǐ)模型第一百七十四頁,共214頁。HMaster為Regionserver分配region負(fù)責(zé)regionserver的負(fù)載均衡發(fā)現(xiàn)(fāxiàn)失效的regionserver并重新分配其上的regionHDFS上的垃圾文件回收處理schema更新請(qǐng)求第一百七十五頁,共214頁。HRegionServerHRegionserver維護(hù)HMaster分配(fēnpèi)給它的HRegion,處理對(duì)這些HRegion的IO請(qǐng)求。HRegionserver負(fù)責(zé)切分在運(yùn)行過程中變得過大的HRegion可以看到,client訪問Hbase上數(shù)據(jù)的過程并不需要HMaster參與(尋址訪問zookeeper和HRegionserver,數(shù)據(jù)讀寫訪問HRegioneserver),HMaster僅僅維護(hù)者table和HRegion的元數(shù)據(jù)信息,負(fù)載很低。第一百七十六頁,共214頁。行式存儲(chǔ)(cúnchǔ)的問題讀某個(gè)(mǒuɡè)列必須讀入整行行不等長(zhǎng),修改數(shù)據(jù)可能導(dǎo)致行遷移行數(shù)據(jù)較多時(shí)可能導(dǎo)致行鏈第一百七十七頁,共214頁。Hbase邏輯(luójí)模型第一百七十八頁,共214頁。Hbase中數(shù)據(jù)(shùjù)存儲(chǔ)方式按RowKey的字典順序TableRegionRegionRegionRegionRegionServersRegionServerRegionServerRegionServerRegionServer第一百七十九頁,共214頁。Table&Region 當(dāng)Table隨著記錄數(shù)不斷增加而變大后,會(huì)逐漸分裂成多份splits,成為regions,一個(gè)region由[startkey,endkey)表示,不同(bùtónɡ)的region會(huì)被Master分配給相應(yīng)的RegionServer進(jìn)行管理180第一百八十頁,共214頁。字典(zìdiǎn)順序特點(diǎn):擁有相同(xiānɡtónɡ)“前綴”的數(shù)據(jù),會(huì)存儲(chǔ)在相鄰區(qū)域aababcbbababccacab第一百八十一頁,共214頁。HTable=>HRegion=>HStoreTableRegionRegionServerHRegionRegionRegionRegionHStoreMemStoreStoreFileStoreFileStoreFileHStoreMemStoreStoreFileStoreFileHStoreMemStoreStoreFile182第一百八十二頁,共214頁。HStore是怎樣(zěnyàng)工作的?HStoreMemStoreStoreFileStoreFileStoreFile向表中寫入數(shù)據(jù)的過程:首先寫入MemStore,同時(shí)(tóngshí)寫入HLog但MemStore到達(dá)一定大小的時(shí)候,MemStore會(huì)flush成一個(gè)StoreFile(HFile文件)但StoreFile的數(shù)量達(dá)到一定閥值,會(huì)觸發(fā)compact, 將多個(gè)StoreFile合并成1個(gè)StoreFile當(dāng)單個(gè)StoreFile達(dá)到一定大小的時(shí)候,會(huì)觸發(fā)split, 將當(dāng)前的Region拆分成2個(gè)Region,并且分發(fā)到 不同的RegionServer上183第一百八十三頁,共214頁。HStore是怎樣(zěnyàng)工作的?184第一百八十四頁,共214頁。HFile的存儲(chǔ)(cúnchǔ)格式DataBlock是HBaseI/O的基本單元(dānyuán),每個(gè)Data塊除了開頭的Magic以外就是一個(gè)個(gè)KeyValue對(duì)拼接而成185第一百八十五頁,共214頁。KeyValue的存儲(chǔ)(cúnchǔ)格式開始是兩個(gè)固定長(zhǎng)度(chángdù)的數(shù)值,分別表示Key的長(zhǎng)度(chángdù)和Value的長(zhǎng)度(chángdù)。緊接著是Key,開始是固定長(zhǎng)度(chángdù)的數(shù)值,表示RowKey的長(zhǎng)度(c
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版六年級(jí)語文上冊(cè)第18課《古詩(shī)三首》精美課件
- 2024年石家莊駕駛員客運(yùn)從業(yè)資格證模擬考試題
- 2024年雙鴨山從業(yè)資格證模擬考試題庫(kù)
- 2024年臨夏駕??荚嚳瓦\(yùn)從業(yè)資格證考試題庫(kù)
- 浙江省七彩陽光聯(lián)盟2022-2023學(xué)年高二11月期中生物試題(原卷版)
- 2024年工廠研發(fā)與技術(shù)轉(zhuǎn)讓合同
- 計(jì)算機(jī)等級(jí)考試一級(jí)計(jì)算機(jī)基礎(chǔ)及WPS Office應(yīng)用試題與參考答案(2025年)
- 三年級(jí)上冊(cè)數(shù)學(xué)四邊形的認(rèn)識(shí)說課稿范文
- 京劇批評(píng)研究的回顧、新變與不足
- 感謝信,給我?guī)砉ぷ鳈C(jī)會(huì)
- 中國(guó) 美國(guó) 日本水洗標(biāo)志對(duì)比
- 新產(chǎn)品試制流程管理辦法
- 通用橫版企業(yè)報(bào)價(jià)單模板
- 潛油泵及潛油泵加油機(jī)講義
- 物業(yè)服務(wù)公司各崗位規(guī)范用語
- 醫(yī)患溝通內(nèi)容要求記錄模板(入院、入院三日、術(shù)前、術(shù)后、出院)
- 航海學(xué)天文定位第四篇第6章天文定位
- 淺談深度教學(xué)中小學(xué)數(shù)學(xué)U型學(xué)習(xí)模式
- 物理電學(xué)暗箱專題30道
- 裝修公司員工勞動(dòng)合同
- 江西上饒鉛山汽車駕駛科目三考試線路
評(píng)論
0/150
提交評(píng)論