云計算分布式大數(shù)據(jù)Hadoop深入淺出案例驅動實戰(zhàn)外訓講義說課講解_第1頁
云計算分布式大數(shù)據(jù)Hadoop深入淺出案例驅動實戰(zhàn)外訓講義說課講解_第2頁
云計算分布式大數(shù)據(jù)Hadoop深入淺出案例驅動實戰(zhàn)外訓講義說課講解_第3頁
云計算分布式大數(shù)據(jù)Hadoop深入淺出案例驅動實戰(zhàn)外訓講義說課講解_第4頁
云計算分布式大數(shù)據(jù)Hadoop深入淺出案例驅動實戰(zhàn)外訓講義說課講解_第5頁
已閱讀5頁,還剩209頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Hadoop深入淺出案例驅動(qūdònɡ)實戰(zhàn)中程(zhōnɡchénɡ)在線(北京)科技有限公司內部教程注意(zhùyì)保密第一頁,共214頁。Hive的安裝和配置、原理(yuánlǐ)、開發(fā)課程目標Hadoop安裝(ānzhuāng)、配置與管理HDFS原理及開發(fā)(kāifā),HDFS文件管理Map-Reduce原理及開發(fā)Hbase的安裝和配置、原理、開發(fā)2第二頁,共214頁。課程(kèchéng)安排day1Step3云計算Hadoop安裝(ānzhuāng)、配置大數(shù)據(jù)Hadoop介紹(jièshào)HDFS介紹(jièshào)與實戰(zhàn)MapReduce介紹與實戰(zhàn)Hbase介紹與實戰(zhàn)Hive介紹與實戰(zhàn)疑難解答day2day33第三頁,共214頁。提前準備Hadoop環(huán)境部署軟件列表編號軟件名稱要求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頁。提前準備Hadoop組件列表編號軟件名稱要求1hadoop-1.0.4.tar.gz

2hbase-0.94.4.tar.gz

3hive-0.9.0.tar.gz

從老師的機器上可以下載這些軟件:http://ip/fs.php第五頁,共214頁。自我介紹1、工作年限;2、所在(suǒzài)部門;3、是否精通Linux;4、是否精通Java;5、是否安裝過Hadoop;第六頁,共214頁。學習(xuéxí)Hadoop的目的Hadoop是IT行業(yè)一個(yīɡè)新的熱點,是云計算大數(shù)據(jù)處理的一個(yīɡè)具體實現(xiàn)。Hadoop本身具有很高的技術含量,是IT工程師學習的首選。Hadoop商業(yè)價值日益增長,是商業(yè)企業(yè)大數(shù)據(jù)處理的首選。第七頁,共214頁。大數(shù)據(jù)時代(shídài)來臨一分鐘內,互聯(lián)網發(fā)生(fāshēng)了什么?YouTube增加72小時視頻Google進行200萬次搜索Spotify增加14首新音樂新增域名70個iTunes下載音樂1.5萬首新增網站571個每分鐘發(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個“贊”、每秒增加新帖子4.1萬8第八頁,共214頁。古代,人們用牛來拉重物,當一頭牛拉不動一根圓木時,他們不曾(bùcéng)想過培育更大更壯的牛。同樣,我們也不需要嘗試開發(fā)高級計算機,而應嘗試著結合使用更多計算機系統(tǒng)。格蕾斯.霍珀第九頁,共214頁。大數(shù)據(jù)(shùjù)云計算(jìsuàn)大數(shù)據(jù)(shùjù)互聯(lián)網營銷10第十頁,共214頁。你準備(zhǔnbèi)好了嗎?千載難逢(qiānzǎinánféng)的機會IT界的又一桶金11第十一頁,共214頁。開始(kāishǐ)云計算之旅第十二頁,共214頁。2023/2/6什么(shénme)是云計算?第十三頁,共214頁。2023/2/6什么(shénme)是云計算?搜索網絡(wǎngluò)購物QQ微博微信……不識廬山真面目,只緣身在此山中第十四頁,共214頁。云計算(jìsuàn)歷史2023/2/6網格(wǎnɡɡé)計算云計算(jìsuàn)云計算和網格計算在Google中的搜索趨勢15第十五頁,共214頁。云計算(jìsuàn)發(fā)源(fāyuán)于搜索引擎平臺,是互聯(lián)網企業(yè)在創(chuàng)業(yè)階段基于追求低成本、高性能、以及資源靈活分配與應用快速布署的考慮而開發(fā)出一種IT系統(tǒng)實現(xiàn)技術。云計算(jìsuàn)利用大規(guī)模低成本運算單元通過IP網絡連接,以提供各種計算服務的IT技術。第十六頁,共214頁。2/6/202316云計算(jìsuàn)定義云計算就是通過(tōngguò)網絡把信息技術當作服務來使用核心理念最典型代表:Google搜索引擎典型代表云計算是網格計算、分布式計算、并行計算、效用(xiàoyòng)計算、網絡存儲、虛擬化、負載均衡、網絡技術等一些傳統(tǒng)計算方法的融合體。核心理念:通過不斷提高“云”的處理能力而減少用戶終端的處理負擔,使用戶終端簡化成一個單純的輸入輸出設備。17第十七頁,共214頁。云計算(jìsuàn)特征按需自助服務廣泛的網絡接入Title服務可計量資源池快速彈性第十八頁,共214頁。2/6/2023云計算(jìsuàn)分類私有云公有云混合云InfrastructureasaService以服務的形式提供虛擬硬件資源,如虛擬主機/存儲/網絡等資源。用戶無需購買服務器、網絡設備、存儲設備,只需通過互聯(lián)網租賃(zūlìn)即可搭建自己的應用系統(tǒng)典型應用:AmazonWebService(AWS)PlatformasaService提供應用服務引擎,如互聯(lián)網應用編程接口/運行(yùnxíng)平臺等。用戶基于該應用服務引擎,可以構建該類應用。典型應用:GoogleAppEngine,F,MicrosoftAzure服務平臺Softwareasa

Service用戶通過Internet(如瀏覽器)來使用軟件。用戶不必購買軟件,只需按需租用軟件典型應用:GoogleDoc,S,OracleCRMOnDemand,OfficeLiveWorkspace面向外部用戶需求,通過開放網絡提供云計算服務IDC,GoogleApp,Saleforce在線CRM大型企業(yè)按照云計算的架構搭建平臺,面向企業(yè)內部需求提供云計算服務企業(yè)內部數(shù)據(jù)中心等兼顧以上兩種情況的云計算服務AmazonWebServer等既為企業(yè)內部又為外部用戶提供云計算服務按提供的服務類型按云服務的對象IAASPaaSSaaSIaaS分布存儲分布計算第十九頁,共214頁。云計算(jìsuàn)核心技術第二十頁,共214頁。云計算(jìsuàn)產生的前提節(jié)約成本廣泛的網絡(wǎngluò)接入虛擬化技術的成熟計算能力提升大數(shù)據(jù)的出現(xiàn)競爭2023/2/6第二十一頁,共214頁。節(jié)約(jiéyuē)成本22第二十二頁,共214頁。廣泛(guǎngfàn)的網絡接入2023/2/6第二十三頁,共214頁。虛擬化技術(jìshù)的成熟2023/2/624第二十四頁,共214頁。虛擬化技術(jìshù)的成熟2023/2/625第二十五頁,共214頁。虛擬化技術(jìshù)的成熟2023/2/626第二十六頁,共214頁。計算能力提升(tíshēng)2023/2/627第二十七頁,共214頁。大數(shù)據(jù)(shùjù)的出現(xiàn)2023/2/628第二十八頁,共214頁。云計算(jìsuàn)產生原動力2023/2/629第二十九頁,共214頁。云計算(jìsuàn)發(fā)展現(xiàn)狀2023/2/6第三十頁,共214頁。云參考(cānkǎo)架構--AWS2023/2/6第三十一頁,共214頁。云參考(cānkǎo)架構--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)架構33第三十三頁,共214頁。云計算(jìsuàn)的價值第三十四頁,共214頁。云部署(bùshǔ)35第三十五頁,共214頁。以分鐘時間部署(bùshǔ)復雜企業(yè)應用36第三十六頁,共214頁。以分鐘時間部署(bùshǔ)復雜企業(yè)應用37第三十七頁,共214頁。以分鐘時間部署(bùshǔ)復雜企業(yè)應用38第三十八頁,共214頁。誰需要(xūyào)云計算2023/2/639第三十九頁,共214頁。Hadoop集群搭建(dājiàn)40第四十頁,共214頁。三種運行(yùnxíng)模式安裝簡單,幾乎不用作任何配置(pèizhì),但僅限于調試用途在單節(jié)點(jiédiǎn)上同時啟動namenode、datanode、jobtracker、tasktracker、secondarynamenode等5個進程,模擬分布式運行的各個節(jié)點(jiédiǎn)。正常的Hadoop集群,由多個各司其職的節(jié)點構成。單機模式偽分布模式完全分布式模式第四十一頁,共214頁。安裝和配置(pèizhì)步驟參考(cānkǎo)《Hadoop-1.0.0集群安裝.pdf》42第四十二頁,共214頁。VirtualBox安裝(ānzhuāng)虛擬機設置虛擬網卡為host-only模式(móshì)共享主機網卡配置虛擬機VirtualBoxHost-OnlyEthernetAdapter網卡IP為第四十三頁,共214頁。虛擬機NetworkAdapterBridged(橋接模式)Bridged(橋接模式):默認使用VMnet0,不提供DHCP服務,需要(xūyào)手動配置IP、網關、子網掩碼等第四十四頁,共214頁。虛擬機NetworkAdapterNAT(網絡地址轉換模式(móshì))NAT(網絡地址轉換模式(móshì)):默認使用VMnet8,提供DHCP服務45第四十五頁,共214頁。虛擬機NetworkAdapterHost-only(主機模式)Host-only(主機模式):默認使用VMnet1,提供DHCP服務當要組成一個(yīɡè)與物理網絡相隔離的虛擬網絡時,無疑非常適合使用Host-only模式。46第四十六頁,共214頁。安裝(ānzhuāng)Linux操作系統(tǒng)安裝的過程(guòchéng)中選擇OpenSSH支持47第四十七頁,共214頁。LinuxShellvimkdirtarchmodchowncpmv第四十八頁,共214頁。SSH安裝(ānzhuāng)安裝SSHyuminstallssh啟動SSHservicesshdstart設置(shèzhì)開機運行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在所有機器上操作(cāozuò)#vi/etc/modprobe.d/anaconda.conf添加如下行installipv6/bin/true重新啟動系統(tǒng)生效第五十二頁,共214頁。CloneMaster虛擬機選擇重新初始化網卡選項完全Clone啟動新的虛擬機修改(xiūgǎi)hostname修改(xiūgǎi)網卡,讓網卡生效,能ping通Master第五十三頁,共214頁。CloneMaster配置(pèizhì)網卡1)必須確認克隆(clone)的CentOS6的各個網卡的MAC是否有重復或與其它虛擬主機重復,最好利用其網卡工具刷新一下,生成新的MAC。使用vi命令,打開/etc/sysconfig/network-scripts/下的ifcfg-eth*(*代表0~n個網卡序號),把這個新的MAC修改進去。2)修改/etc/udev/rules.d/70-persistent-net.rules文件,刪除原來的eth0那一段,把后增加的eth1改為eth0。如果有多塊網卡以此類推(yǐcǐlèituī);如果只有一行,則把“eth1”改為eth0即可。3)使用start_udev命令重新檢測硬件;4)用servicenetworkrestart命令重啟下網絡。54第五十四頁,共214頁。HDFS重要(zhòngyào)配置項<!--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)配置項<!--core-site.xml--><property><name></name><value>hdfs://master.hadoop:9000</value><description></description></property></configuration>第五十六頁,共214頁。HDFS重要(zhòngyào)配置項<!--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)配置項<!--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é)點將master.hadoop上安裝配置(pèizhì)完成的hadoop文件夾復制到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頁。啟動(qǐdòng)Hadoop使用hduser用戶,在master.hadoop上bin/start-all.sh啟動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ídài)來臨一分鐘內,互聯(lián)網發(fā)生了什么?YouTube增加72小時視頻Google進行200萬次搜索Spotify增加14首新音樂新增域名70個iTunes下載音樂1.5萬首新增網站571個每分鐘發(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個“贊”、每秒增加新帖子4.1萬第六十六頁,共214頁。大數(shù)據(jù)(shùjù)2023/2/6第六十七頁,共214頁。大數(shù)據(jù)(shùjù)&數(shù)據(jù)(shùjù)結構2023/2/668第六十八頁,共214頁。大數(shù)據(jù)(shùjù)2023/2/6第六十九頁,共214頁。大數(shù)據(jù)(shùjù)存儲2023/2/670第七十頁,共214頁。大數(shù)據(jù)(shùjù)的4V2023/2/6數(shù)據(jù)量時效性多變性價值(jiàzhí)性71第七十一頁,共214頁。Hadoop72第七十二頁,共214頁。大數(shù)據(jù)(shùjù)的服務器2023/2/6第七十三頁,共214頁。大數(shù)據(jù)分析2023/2/609年4月59秒排序(páixù)500GB(在1400個節(jié)點上)173分鐘內排序(páixù)100TB數(shù)據(jù)(在3400個節(jié)點上)74第七十四頁,共214頁。大數(shù)據(jù)分析2023/2/61.可視化分析2.數(shù)據(jù)挖掘算法(suànfǎ)3.預測性分析能力4.語義引擎5.數(shù)據(jù)質量和數(shù)據(jù)管理75第七十五頁,共214頁。Hadoop的思想(sīxiǎng)之源:Google下一步(yībù)Googlewhat?Google搜索引擎GmailGoogleearthGoogle翻譯(fānyì)Google+76第七十六頁,共214頁。Google低成本之道1234不使用(shǐyòng)超級計算機,不使用(shǐyòng)專業(yè)存儲。大量使用普通(pǔtōng)的pc服務器,提供有冗余的集群服務器多個(duōɡè)數(shù)據(jù)中心運營商向Google倒付費77第七十七頁,共214頁。Google面臨(miànlíng)的難題大量網頁如何(rúhé)存儲?搜索算法Rank計算(jìsuàn)問題第七十八頁,共214頁。2/6/202378Google關鍵技術和思想(sīxiǎng)1GFS2Map-Reduce3Bigtable79第七十九頁,共214頁。Google三大(sāndà)論文TheGoogleFileSystems.pdfMapReduceSimpliedDataProcessingonLargeClusters.pdfBigtableADistributedStorageSystemforStructuredData.pdfTheChubbylockservice.pdfLogicalTimeAWaytoCaptureCausality.pdfLog-StructuredFileSystem.pdf80第八十頁,共214頁。Hadoop從何而來第八十一頁,共214頁。Hadoop的源起——Lucene對于大數(shù)量的場景,Lucene仍面對與Google同樣(tóngyàng)的困難。Lucene的目的(mùdì)是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。DougCutting開創(chuàng)的開源軟件,用java書寫代碼,實現(xiàn)與Google類似的全文搜索功能,提供了全文檢索引擎(yǐnqíng)的架構,包括完整的查詢引擎(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)存儲云服務解決方案

一體機發(fā)行版本Hadoop第八十四頁,共214頁。目前(mùqián)Hadoop達到的高度實現(xiàn)云計算的事實標準開源軟件包含數(shù)十個具有強大生命力的子項目已經能在數(shù)千節(jié)點上運行(yùnxíng),處理數(shù)據(jù)量和排序時間不斷打破世界紀錄第八十五頁,共214頁。Hadoop定義(dìngyì)Hadoop一個分布式系統(tǒng)基礎架構,由Apache基金會開發(fā)。用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運算和存儲(cúnchǔ)。Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成員組成。HDFS和MapReduce是兩個最基礎最重要的成員。第八十六頁,共214頁。Hadoop子項目家族(jiāzú)第八十七頁,共214頁。PigHadoop客戶端使用(shǐyòng)類似于SQL的面向數(shù)據(jù)流的語言PigLatinPigLatin可以完成排序,過濾,求和,聚組,關聯(lián)等操作,可以支持自定義函數(shù)Pig自動把PigLatin映射為Map-Reduce作業(yè)上傳到集群運行,減少用戶編寫Java程序的苦惱三種運行方式:Gruntshell,腳本方式,嵌入式第八十八頁,共214頁。HBaseGoogleBigtable的開源實現(xiàn)列式數(shù)據(jù)庫可集群化可以使用shell、web、api等多種方式訪問適合(shìhé)高讀寫(insert)的場景HQL查詢語言NoSQL的典型代表產品第八十九頁,共214頁。Hive數(shù)據(jù)倉庫工具。可以把Hadoop下的原始結構化數(shù)據(jù)變成Hive中的表支持一種與SQL幾乎完全相同的語言HiveQL。除了不支持更新(gēngxīn)、索引和事務,幾乎SQL的其它特征都能支持可以看成是從SQL到Map-Reduce的映射器提供shell、JDBC/ODBC、Thrift、Web等接口第九十頁,共214頁。ZookeeperGoogleChubby的開源實現(xiàn)用于協(xié)調分布式系統(tǒng)上的各種服務。例如確認消息是否準確到達,防止單點失效,處理負載均衡(jūnhéng)等應用場景:Hbase,實現(xiàn)Namenode自動切換工作原理:領導者,跟隨者以及選舉過程第九十一頁,共214頁。Sqoop用于在Hadoop和關系(guānxì)型數(shù)據(jù)庫之間交換數(shù)據(jù)通過JDBC接口連入關系(guānxì)型數(shù)據(jù)庫第九十二頁,共214頁。Avro數(shù)據(jù)序列化工具,由Hadoop的創(chuàng)始人DougCutting主持開發(fā)用于支持大批量數(shù)據(jù)交換的應用。支持二進制序列化方式,可以便捷(biànjié),快速地處理大量數(shù)據(jù)動態(tài)語言友好,Avro提供的機制使動態(tài)語言可以方便地處理Avro數(shù)據(jù)。Thrift接口第九十三頁,共214頁。Chukwa架構在Hadoop之上的數(shù)據(jù)采集與分析框架主要進行日志采集和分析通過安裝在收集節(jié)點的“代理”采集最原始的日志數(shù)據(jù)代理將數(shù)據(jù)發(fā)給收集器收集器定時將數(shù)據(jù)寫入Hadoop集群指定定時啟動的Map-Reduce作業(yè)隊數(shù)據(jù)進行加工處理和分析Hadoop基礎(jīchǔ)管理中心(HICC)最終展示數(shù)據(jù)第九十四頁,共214頁。CassandraNoSQL,分布式的Key-Value型數(shù)據(jù)庫,由Facebook貢獻與Hbase類似(lèisì),也是借鑒GoogleBigtable的思想體系只有順序寫,沒有隨機寫的設計,滿足高負荷情形的性能需求第九十五頁,共214頁。Hadoop特點(tèdiǎn)可擴展經濟AB高效D可靠C可架設于任何pc機上分布式文件系統(tǒng)的高效數(shù)據(jù)交互實現(xiàn)以及MapReduce結合LocalData處理的模式,為高效處理海量的信息作了基礎準備不論是存儲的可擴展性還是計算的可擴展行,都是Hadoop的根本分布式文件系統(tǒng)的備份恢復機制以及MapReduce的任務監(jiān)控保證了分布式處理的可靠性第九十六頁,共214頁。 基礎架構第九十七頁,共214頁。

Hadoop與Google比較(bǐjiào)

后端系統(tǒng):Google數(shù)據(jù)分析平臺(píngtái)Google集群管理系統(tǒng)存儲(cúnchǔ)+計算(HDFS+MapReduce)數(shù)據(jù)倉庫(Hive)內存數(shù)據(jù)庫(Hbase)批處理(Pig)BSP模型(Hama)分布式鎖(Zoomkeeper)第九十八頁,共214頁。子系統(tǒng)位置(wèizhi)第九十九頁,共214頁。Hadoop應用(yìngyòng)案例第一百頁,共214頁。國內應用(yìngyòng)情況第一百零一頁,共214頁。案例(ànlì)1:淘寶每日新增數(shù)據(jù)(shùjù)20T累積(lěijī)數(shù)據(jù)14P2000+服務器的云計算平臺每天處理100,000+作業(yè)任務,包括100+新增作業(yè)任務每天處理1P+數(shù)據(jù),包括0.5%新增數(shù)據(jù)數(shù)據(jù)規(guī)模第一百零二頁,共214頁。雙十一191億背后的開源(kāiyuán)技術?支付寶核心數(shù)據(jù)庫集群處理(chǔlǐ)了41億個事務執(zhí)行(zhíxíng)285億次SQL訪問1931億次內存數(shù)據(jù)塊13億個物理讀生成15TB日志雙十一第一百零三頁,共214頁。淘寶數(shù)據(jù)(shùjù)平臺——產品架構數(shù)據(jù)(shùjù)應用開發(fā)平臺——數(shù)據(jù)(shùjù)工場底層(dǐcénɡ)平臺數(shù)據(jù)開發(fā)平臺數(shù)據(jù)應用報表需求(淘數(shù)據(jù))即席查詢(adhoc)數(shù)據(jù)分析數(shù)據(jù)挖掘數(shù)據(jù)產品DataIntegrationDBsyncTTHiveHadoopMapReduceHadoopHDFSDatax報表需求(淘數(shù)據(jù))Hbase即席查詢(adhoc)數(shù)據(jù)分析數(shù)據(jù)挖掘數(shù)據(jù)產品實時計算

第一百零四頁,共214頁。案例(ànlì)2:暴風影音每天處理日志1.2T,20億行。存儲設計容量200TB對外提供產品分析(fēnxī),廣告分析(fēnxī),用戶分析(fēnxī)服務。每天處理任務上千個jobs第一百零五頁,共214頁。應用領域搜索社交游戲(yóuxì)視頻電信醫(yī)療(yīliáo)交通公安航空電力(diànlì)金融第一百零六頁,共214頁。HDFS介紹(jièshào)第一百零七頁,共214頁。HDFS定義(dìngyì)HDFS是GoogleGFS的開源版本,一個高度容錯的分布式文件系統(tǒng),它能夠提供高吞吐量的數(shù)據(jù)(shùjù)訪問,適合存儲海量(PB級)大文件(通常超過64M)。第一百零八頁,共214頁。HDFS設計(shèjì)基礎與目標硬件錯誤是常態(tài),需要冗余。流式數(shù)據(jù)訪問。即數(shù)據(jù)批量讀取而非隨機讀寫,Hadoop擅長(shàncháng)做數(shù)據(jù)分析而不是數(shù)據(jù)處理。大規(guī)模數(shù)據(jù)集簡單一致性模型。程序采用“數(shù)據(jù)就近”原則分配節(jié)點執(zhí)行。第一百零九頁,共214頁。HDFS不適合(shìhé)場景1低延遲數(shù)據(jù)訪問HDFS是為了達到高數(shù)據(jù)吞吐量而優(yōu)化的,這是以延遲為代價的,對于低延遲訪問,可以用Hbase(hadoop的子項目)。2大量的小文件3多用戶寫入任意修改第一百一十頁,共214頁。HDFS架構(jiàɡòu)在Hadoop中,一個文件被劃分成大小固定的多個文件塊,分布的存儲(cúnchǔ)在集群中的節(jié)點中。111第一百一十一頁,共214頁。HDFS架構(jiàɡòu)同一個文件塊在不同的節(jié)點(jiédiǎn)中有多個副本111第一百一十二頁,共214頁。HDFS架構(jiàɡòu)我們(wǒmen)需要一個集中的地方保存文件的分塊信息/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架構(jiàɡòu)第一百一十四頁,共214頁。HDFS架構(jiàɡòu)BlockNameNodeDataNodeHA策略(cèlüè)一個文件(wénjiàn)分塊,默認64M用于存儲Blocks保存整個文件系統(tǒng)的目錄信息,文件信息以及文件相應的分塊信息NameNode一旦宕機,整個文件系統(tǒng)將無法工作。如果NameNode中的數(shù)據(jù)丟失,整個文件系統(tǒng)也就丟失了。

115第一百一十五頁,共214頁。HDFS體系結構NameNodeDataNode事務日志映像(yìnɡxiànɡ)文件SecondaryNameNode116第一百一十六頁,共214頁。Namenode管理文件系統(tǒng)的命名空間記錄每個文件數(shù)據(jù)塊在各個Datanode上的位置和副本信息協(xié)調客戶端對文件的訪問記錄命名空間內的改動或空間本身屬性的改動Namenode使用事務(shìwù)日志記錄HDFS元數(shù)據(jù)的變化。使用映像文件存儲文件系統(tǒng)的命名空間,包括文件映射,文件屬性等第一百一十七頁,共214頁。Datanode負責所在物理節(jié)點的存儲管理一次寫入,多次讀?。ú恍薷模┪募蓴?shù)據(jù)塊組成,典型(diǎnxíng)的塊大小是64MB數(shù)據(jù)塊盡量散布道各個節(jié)點第一百一十八頁,共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沒有當前目錄的概念(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)復制到本地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)內容hduser@master:~$hadoopdfs-ls.hduser@master:~$hadoopdfs-cat./test.txt第一百二十六頁,共214頁。查看(chákàn)HDFS基本統(tǒng)計信息hduser@master:~$hadoopdfsadmin-report第一百二十七頁,共214頁。進入和退出(tuìchū)安全模式hduser@master:~$hadoopdfsadmin-safemodeenterhduser@master:~$hadoopdfsadmin-safemodeleave更多命令(mìnglìng)請參考《file_system_shell.pdf》第一百二十八頁,共214頁。節(jié)點(jiédiǎn)添加在新節(jié)點安裝好hadoop把namenode的有關配置文件復制到該節(jié)點修改masters和slaves文件,增加該節(jié)點設置(shèzhì)ssh免密碼進出該節(jié)點單獨啟動該節(jié)點上的datanode和tasktracker(hadoop-daemon.shstartdatanode/tasktracker)運行start-balancer.sh進行數(shù)據(jù)負載均衡第一百二十九頁,共214頁。啟動(qǐdòng)某些特定后臺進程hduser@master:~$start-all.sh第一百三十頁,共214頁。負載(fùzài)均衡當節(jié)點出現(xiàn)故障,或新增加節(jié)點時,數(shù)據(jù)塊分布可能不均勻,負載均衡可以重新(chóngxīn)平衡各個datanode上數(shù)據(jù)塊的分布。hduser@master:~$start-balancer.sh第一百三十一頁,共214頁。HDFSAPI第一百三十二頁,共214頁。Java調用(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àiniàn),分別完成映射操作和規(guī)約操作。第一百三十五頁,共214頁。第一百三十六頁,共214頁。MapReduce邏輯(luójí)部署第一百三十七頁,共214頁。MapReduce邏輯(luójí)部署Hadoop主要由HDFS(HadoopDistributedFileSystem)和MapReduce引擎(yǐnqíng)兩部分組成。最底部是HDFS,它存儲Hadoop集群中所有存儲節(jié)點上的文件。HDFS的上一層是MapReduce引擎(yǐnqíng),該引擎(yǐnqíng)由JobTrackers和TaskTrackers組成。第一百三十八頁,共214頁。MapReduce運行機制第一百三十九頁,共214頁。GoogleMapReduce原理(yuánlǐ)2023/2/6(1) 輸入文件分成M塊,每塊大概16M~64MB(可以通過參數(shù)決定),接著在集群的機器上執(zhí)行分派處理程序

(2) M個Map任務和R個Reduce任務需要分派,Master選擇空閑Worker來分配這些Map或Reduce任務(3) Worker讀取并處理相關輸入塊,Map函數(shù)產生的中間結果<key,value>對暫時緩沖到內存(4) 中間結果定時寫到本地硬盤,分區(qū)(fēnqū)函數(shù)將其分成R個區(qū)。中間結果在本地硬盤的位置信息將被發(fā)送回Master,然后Master負責把這些位置信息傳送給ReduceWorker第一百四十頁,共214頁。GoogleMapReduce原理(yuánlǐ)2023/2/6(5) 當Master通知執(zhí)行Reduce的Worker關于中間<key,value>對的位置時,它調用遠程過程,從MapWorker的本地硬盤上讀取緩沖的中間數(shù)據(jù)。當ReduceWorker讀到所有的中間數(shù)據(jù),它就使用中間key進行排序,這樣可使相同key的值都在一起(6) ReduceWorker根據(jù)每一個唯一中間key來遍歷所有的排序后的中間數(shù)據(jù),并且把key和相關的中間結果值集合傳遞(chuándì)給用戶定義的Reduce函數(shù)。Reduce函數(shù)的結果寫到一個最終的輸出文件

(7) 當所有的Map任務和Reduce任務都完成的時候,Master激活用戶程序。此時MapReduce返回用戶程序的調用點第一百四十一頁,共214頁。HadoopMapReduce實現(xiàn)(shíxiàn)機制2023/2/6第一百四十二頁,共214頁。HadoopMapReduce實現(xiàn)(shíxiàn)機制2023/2/61、向jobtracker請求一個新的作業(yè)ID(通過Jobtracker的getNewJobId())2、檢查作業(yè)的輸出目錄。比如,如果沒有指定輸出目錄或者它已經存在,作業(yè)就不會被提交,并有錯誤(cuòwù)返回給MapReduce程序。3、計算作業(yè)的輸入分片。如果分片無法計算,比如因為輸入路徑不存在,作業(yè)就不會被提交,并有錯誤(cuòwù)返回給MapReduce程序。第一百四十三頁,共214頁。HadoopMapReduce實現(xiàn)(shíxiàn)機制2023/2/64、將運行作業(yè)所需要(xūyào)的資源(包括作業(yè)的JAR文件、配置文件和計算所得的輸入分片)復制到一個以作業(yè)ID號命名的目錄中jobtracker的文件系統(tǒng)。作業(yè)JAR的副本較多(由mapred.submit.replication屬性控制,默認為10),因此,在tasktracker運行作業(yè)任務時,集群能為它們提供許多副本進行訪問。(步驟3)5、告訴jobtracker作業(yè)準備執(zhí)行(通過調用JobTracker的submitJob()方法)(步驟4)第一百四十四頁,共214頁。HadoopMapReduce實現(xiàn)(shíxiàn)機制2023/2/66、Jobtracker接受(jiēshòu)到對其submitJob()方法調用后,會把此調用放入一個內部的隊列中,交由作業(yè)調度器進行調度,并對其進行初始化。初始化包括創(chuàng)建一個代表該正在運行的作業(yè)的對象,它封裝任務和記錄信息,以便跟蹤任務的狀態(tài)和進程(步驟5)7、要創(chuàng)建運行任務列表,作業(yè)調度器首先從共享文件系統(tǒng)中獲取JobClient已經計算好的輸入分片信息(步驟6)然后為每個分片創(chuàng)建一個map任務。創(chuàng)建的reduce任務的數(shù)量由JobConf的mapred.reduce.tasks屬性決定,它是用setNumReduceTasks()方法來設定的,然后調度器便創(chuàng)建這么多reduce任務來運行。任務在此時指定ID號。第一百四十五頁,共214頁。HadoopMapReduce實現(xiàn)(shíxiàn)機制2023/2/68、TaskTraker運行一個簡單的循環(huán)來定期發(fā)送心跳(heartbeat)給Jobtracker。心跳方法告知jobtracker,tasktracker是否存活,同時也充當兩者之間的消息通道。作為(zuòwéi)心跳的一部分,tasktracker會指明它是否已經準備運行新的任務,如果是,jobtracker會為它分配一個任務,并使用心跳的返回值與tasktracker進行通信(步驟7)第一百四十六頁,共214頁。HadoopMapReduce實現(xiàn)(shíxiàn)機制2023/2/69、現(xiàn)在,tasktracker已經被分配了任務,下一步是運行任務。第一步,通過從共享文件系統(tǒng)把作業(yè)JAR文件復制到tasktracker所在的文件系統(tǒng),從而實現(xiàn)作業(yè)的JAR文件本地化。同時,tasktracker將應用程序所需要的全部文件從分布式緩存復制到本地磁盤。第二步,tasktracker為任務新建一個本地工作目錄,并把JAR文件中的內容解壓到這個文件夾下。第三步,tasktracker新建一個TaskRunner實例(shílì)來運行任務。TaskRunner啟動一個新的Java虛擬機(步驟9)來運行每個任務(步驟10),以便用戶定義的map和reduce函數(shù)的任何軟件問題都不會影響tasktracker(比如導致崩潰或者掛起等)。但在不同的任務之間重用JVM還是可能的。10、子進程通過中央接口與父進程進行通信。它每隔幾秒便告知父進程它的進度,直到任務完成。第一百四十七頁,共214頁。MapReduce應用程序組成(zǔchénɡ)1一個Mapper函數(shù)2一個Reducer函數(shù)3一個main函數(shù)。MapReduce第一百四十八頁,共214頁。MapReduceMapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)(shùjù)集(大于1TB)的并行運算通俗的說就是將一個大任務分成多個小任務并行完成,然后合并小任務的結果,得到最終結果。Map-reduce的思想就是“分而治之”第一百四十九頁,共214頁。MapperMapper負責“分”,即把復雜的任務分解為若干個“簡單(jiǎndān)的任務”執(zhí)行.第一百五十頁,共214頁。Reducer對map階段的結果(jiēguǒ)進行匯總Reducer的數(shù)目由mapred-site.xml配置文件里的項目mapred.reduce.tasks決定。缺省值為1,用戶可以覆蓋之第一百五十一頁,共214頁。Shuffler在mapper和reducer中間的一個步驟(可以沒有)可以把mapper的輸出按照某種key值重新切分和組合成n份,把key值符合某種范圍(fànwéi)的輸出送到特定的reducer那里去處理可以簡化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ùnsuàn)過程假設輸入文件的內容(nèiróng)如下:HowareyouHelloword,areyouokThisisatest第一百五十四頁,共214頁。文件(wénjiàn)被分成3個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àodù)機制缺省為先入先出作業(yè)隊列(duìliè)調度支持公平調度器支持容量調度器第一百五十八頁,共214頁。任務(rènwu)執(zhí)行優(yōu)化推測式執(zhí)行:即如果jobtracker發(fā)現(xiàn)有拖后腿的任務,會再啟動一個相同的備份任務,然后哪個先執(zhí)行完就會kill去另外一個。因此在監(jiān)控網頁上經常能看到正常執(zhí)行完的作業(yè)有被kill掉的任務推測式執(zhí)行缺省打開,但如果是代碼問題,并不能解決問題,而且會使集群更慢,通過在mapred-site.xml配置文件中設置mapred.map.tasks.speculative.execution和mapred.reduce.tasks.speculative.execution可為map任務或reduce任務開啟或關閉推測式執(zhí)行重用JVM,可以省去啟動新的JVM消耗的時間,在mapred-site.xml配置文件中設置mapred.job.reuse.jvm.num.tasks設置單個JVM上運行的最大任務數(shù)(1,>1或-1表示沒有限制)忽略模式,任務在讀取數(shù)據(jù)失敗2次后,會把數(shù)據(jù)位置(wèizhi)告訴jobtracker,后者重新啟動該任務并且在遇到所記錄的壞數(shù)據(jù)時直接跳過(缺省關閉,用SkipBadRecord方法打開)第一百五十九頁,共214頁。錯誤處理機制(jīzhì):硬件故障硬件故障是指jobtracker故障或tasktracker故障jobtracker是單點,若發(fā)生故障目前hadoop還無法處理,唯有選擇最牢靠的硬件作為(zuòwéi)jobtrackerJobtracker通過心跳(周期1分鐘)信號了解tasktracker是否發(fā)生故障或負載過于嚴重Jobtracker將從任務節(jié)點列表中移除發(fā)生故障的tasktracker如果故障節(jié)點在執(zhí)行map任務并且尚未完成,jobtracker會要求其它節(jié)點重新執(zhí)行此map任務如果故障節(jié)點在執(zhí)行reduce任務并且尚未完成,jobtracker會要求其它節(jié)點繼續(xù)執(zhí)行尚未完成的reduce任務第一百六十頁,共214頁。錯誤處理機制(jīzhì):任務失敗由于代碼缺陷或進程崩潰引起任務失敗Jvm自動退出,向tasktracker父進程發(fā)送方錯誤信息,錯誤信息也會寫入到日志Tasktracker監(jiān)聽程序會發(fā)現(xiàn)進程退出,或進程很久沒有更新信息送回,將任務標記為失敗標記失敗任務后,任務計數(shù)器減去1以便接受新任務,并通過心跳信號告訴jobtracker任務失敗的信息Jobtrack獲悉任務失敗后,將把該任務重新放入調度隊列(duìliè),重新分配出去再執(zhí)行如果一個任務失敗超過4次(可以設置),將不會再被執(zhí)行,同時作業(yè)也宣布失敗第一百六十一頁,共214頁。Hadoop命令(mìnglìng)大全第一百六十二頁,共214頁。HadoopAPI大全(dàquán)第一百六十三頁,共214頁。HBase第一百六十四頁,共214頁。Hbase的特點(tèdiǎn)高可靠性高性能可伸縮(shēnsuō)面向(miànxiànɡ)列第一百六十五頁,共214頁。Hbase介紹(jièshào)HBase是一個分布式的、面向列的開源數(shù)據(jù)(shùjù)庫就像Bigtable利用了Google文件系統(tǒng)(FileSystem)所提供的分布式數(shù)據(jù)(shùjù)存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase不同于一般的關系數(shù)據(jù)(shùjù)庫,它是一個適合于非結構化數(shù)據(jù)(shùjù)存儲的數(shù)據(jù)(shùjù)庫.另一個不同的是HBase基于列的而不是基于行的模式第一百六十六頁,共214頁。Bigtable思想(sīxiǎng)學生表的例子S(s#,sn,sd,sa)存放為關系(guānxì)的學生表以bigtable方式存放學生表Bigtable:無所不包的大表第一百六十七頁,共214頁。Hbase邏輯(luójí)模型以表的形式存放數(shù)據(jù)表由行與列組成,每個列屬于某個列族,由行和列確定的存儲單元稱為元素(yuánsù)每個元素(yuánsù)保存了同一份數(shù)據(jù)的多個版本,由時間戳來標識區(qū)分Bigtable:無所不包的大表第一百六十八頁,共214頁。Hbase行鍵行鍵是數(shù)據(jù)行在表里的唯一標識,并作為檢索記錄的主鍵訪問表里的行只有三種方式通過單個行鍵訪問給定行鍵的范圍訪問全表掃描行鍵可以(kěyǐ)是最大長度不超過64KB的任意字符串,并按照字典序存儲對于經常要一起讀取的行,要對行鍵值精心設計,以便它們能放在一起存儲第一百六十九頁,共214頁。Hbase列族與列列表示為<列族>:<限定符>Hbase在磁盤上按照列族存儲數(shù)據(jù),這種列式數(shù)據(jù)庫的設計非常適合于數(shù)據(jù)分析的情形列族里的元素最好具有相同的讀寫方式(例如(lìrú)等長的字符串),以提高性能列族名盡量短列族在創(chuàng)建表的時候聲明,一個列族可以包含多個列,列中的數(shù)據(jù)都是以二進制形式存在,沒有數(shù)據(jù)類型。第一百七十頁,共214頁。Hbase時間(shíjiān)戳對應每次數(shù)據(jù)操作(cāozuò)的時間,可由系統(tǒng)自動生成,也可以由用戶顯式的賦值Hbase支持兩種數(shù)據(jù)版本回收方式:1每個數(shù)據(jù)單元,只存儲指定個數(shù)的最新版本2保存指定時間長度的版本(例如7天)常見的客戶端時間查詢:“某個時刻起的最新數(shù)據(jù)”或“給我全部版本的數(shù)據(jù)”元素由行鍵,列族:限定符,時間戳唯一決定元素以字節(jié)碼形式存放,沒有類型之分第一百七十一頁,共214頁。HbasevsOracle索引不同造成行為的差異Hbase適合大量插入同時又有讀的情況Hbase的瓶頸是硬盤傳輸速度,Oracle的瓶頸是硬盤尋道時間(shíjiān)Hbase很適合尋找按照時間(shíjiān)排序topn的場景第一百七十二頁,共214頁。傳統(tǒng)(chuántǒng)數(shù)據(jù)庫的行式存儲數(shù)據(jù)存放在數(shù)據(jù)文件內數(shù)據(jù)文件的基本組成單位(dānwèi):塊/頁塊內結構:塊頭、數(shù)據(jù)區(qū)第一百七十三頁,共214頁。Hbase物理(wùlǐ)模型第一百七十四頁,共214頁。HMaster為Regionserver分配region負責regionserver的負載均衡發(fā)現(xiàn)(fāxiàn)失效的regionserver并重新分配其上的regionHDFS上的垃圾文件回收處理schema更新請求第一百七十五頁,共214頁。HRegionServerHRegionserver維護HMaster分配(fēnpèi)給它的HRegion,處理對這些HRegion的IO請求。HRegionserver負責切分在運行過程中變得過大的HRegion可以看到,client訪問Hbase上數(shù)據(jù)的過程并不需要HMaster參與(尋址訪問zookeeper和HRegionserver,數(shù)據(jù)讀寫訪問HRegioneserver),HMaster僅僅維護者table和HRegion的元數(shù)據(jù)信息,負載很低。第一百七十六頁,共214頁。行式存儲(cúnchǔ)的問題讀某個(mǒuɡè)列必須讀入整行行不等長,修改數(shù)據(jù)可能導致行遷移行數(shù)據(jù)較多時可能導致行鏈第一百七十七頁,共214頁。Hbase邏輯(luójí)模型第一百七十八頁,共214頁。Hbase中數(shù)據(jù)(shùjù)存儲方式按RowKey的字典順序TableRegionRegionRegionRegionRegionServersRegionServerRegionServerRegionServerRegionServer第一百七十九頁,共214頁。Table&Region 當Table隨著記錄數(shù)不斷增加而變大后,會逐漸分裂成多份splits,成為regions,一個region由[startkey,endkey)表示,不同(bùtónɡ)的region會被Master分配給相應的RegionServer進行管理180第一百八十頁,共214頁。字典(zìdiǎn)順序特點:擁有相同(xiānɡtónɡ)“前綴”的數(shù)據(jù),會存儲在相鄰區(qū)域aababcbbababccacab第一百八十一頁,共214頁。HTable=>HRegion=>HStoreTableRegionRegionServerHRegionRegionRegionRegionHStoreMemStoreStoreFileStoreFileStoreFileHStoreMemStoreStoreFileStoreFileHStoreMemStoreStoreFile182第一百八十二頁,共214頁。HStore是怎樣(zěnyàng)工作的?HStoreMemStoreStoreFileStoreFileStoreFile向表中寫入數(shù)據(jù)的過程:首先寫入MemStore,同時(tóngshí)寫入HLog但MemStore到達一定大小的時候,MemStore會flush成一個StoreFile(HFile文件)但StoreFile的數(shù)量達到一定閥值,會觸發(fā)compact, 將多個StoreFile合并成1個StoreFile當單個StoreFile達到一定大小的時候,會觸發(fā)split, 將當前的Region拆分成2個Region,并且分發(fā)到 不同的RegionServer上183第一百八十三頁,共214頁。HStore是怎樣(zěnyàng)工作的?184第一百八十四頁,共214頁。HFile的存儲(cúnchǔ)格式DataBlock是HBaseI/O的基本單元(dānyuán),每個Data塊除了開頭的Magic以外就是一個個KeyValue對拼接而成185第一百八十五頁,共214頁。KeyValue的存儲(cúnchǔ)格式開始是兩個固定長度(chángdù)的數(shù)值,分別表示Key的長度(chángdù)和Value的長度(chángdù)。緊接著是Key,開始是固定長度(chángdù)的數(shù)值,表示RowKey的長度(c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論