云計(jì)算基礎(chǔ)-以服務(wù)為目的_第1頁
云計(jì)算基礎(chǔ)-以服務(wù)為目的_第2頁
云計(jì)算基礎(chǔ)-以服務(wù)為目的_第3頁
云計(jì)算基礎(chǔ)-以服務(wù)為目的_第4頁
云計(jì)算基礎(chǔ)-以服務(wù)為目的_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一四章以服務(wù)為目地一四.一Hadoop生態(tài)系統(tǒng)概述一四.二Hadoop臺構(gòu)建一四.三WordCount案例一四.四DNS解析案例一四.一Hadoop生態(tài)系統(tǒng)概述

大數(shù)據(jù)基礎(chǔ)架構(gòu)大數(shù)據(jù)地基礎(chǔ)架構(gòu)通常分為四層,分別是數(shù)據(jù)存儲層,集群資源管理層,計(jì)算引擎層,以及應(yīng)用接口層。Ambari集群web管理工具GraphXMLibSparkSQLSparkStreamingStormPigHiveZookeeper集群協(xié)調(diào)管理SparkMapReduceMesos資源管理Yarn資源管理HbaseTachyon分布式存儲系統(tǒng)HDFS

hadoop分布式文件系統(tǒng)

一四.一Hadoop生態(tài)系統(tǒng)概述

Hadoop生態(tài)圈ApacheHadoop是一個(gè)由Apache基金會所開發(fā)地分布式系統(tǒng)基礎(chǔ)架構(gòu)。其生態(tài)圈可以讓用戶在不了解分布式底層細(xì)節(jié)地情況下,開發(fā)出可靠,可擴(kuò)展地分布式計(jì)算應(yīng)用。一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件一.Hadoopmon:為Hadoop地其它項(xiàng)目提供了一些常用工具,主要包括系統(tǒng)配置工具Configuration,遠(yuǎn)程過程調(diào)用RPC,序列化機(jī)制與Hadoop抽象文件系統(tǒng)FileSystem等。二.HDFS分布式文件系統(tǒng),它提供對應(yīng)用程序數(shù)據(jù)地高吞吐量訪問。包括:一個(gè)nameNode(管理者),一個(gè)secondNameNode(namenode輔助系統(tǒng))與多個(gè)datanode(工作者)。三.YARN作業(yè)調(diào)度與集群資源管理框架,是master/slave架構(gòu),其master被稱為ResourceManager,slave被稱為NodeManager,ResourceManager負(fù)責(zé)對各個(gè)NodeManager上地資源行統(tǒng)一管理與調(diào)度。四.MapReduce,分布式計(jì)算框架。MapReduce程序地工作分兩個(gè)階段行:Map階段(分割及映射)與Reduce階段(重排,還原)。Map階段由Mapper負(fù)責(zé)"分",即把復(fù)雜地任務(wù)分解為若干個(gè)"簡單地任務(wù)"來處理。Reduce階段由Reducer負(fù)責(zé)對map階段地結(jié)果行匯總。一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件MapReduce編程接口主要為如下五大模塊:一.輸入格式InputFormat二.映射Mapper三.分區(qū)Partitioner四.合并biner五.歸并Reducer六.輸出格式OutputFormatInputFormatsplitsplitsplitRRRRRRmapmapmapPartitionergroup&sortreduceOutputFormatfilefile注:InputFormat:輸入格式split:數(shù)據(jù)切片RR:recordreader:鍵值對記錄map:映射函數(shù)biner:對單個(gè)Map合并Partitioner:分區(qū)group:分組sort:排序reduce:合并函數(shù)OutputFormat:輸出格式biner一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件五.Ambari:一個(gè)基于Web地工具,用于配置,管理與監(jiān)控地ApacheHadoop集群,其包括支持HadoopHDFS,HadoopMapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig與Sqoop。六.Avro:數(shù)據(jù)序列化系統(tǒng),Avro是一個(gè)基于二制數(shù)據(jù)傳輸高能地間組件,用于將數(shù)據(jù)結(jié)構(gòu)或?qū)ο筠D(zhuǎn)化成便于存儲或傳輸?shù)馗袷?。?HBase:是一種面向列地非關(guān)系型地分布式數(shù)據(jù)庫,以鍵值對地形式儲存數(shù)據(jù),它運(yùn)行在HDFS之上,通鍵值對(Key/Value)來定位到具體地字段。它是物理表,不是邏輯表,適合非結(jié)構(gòu)化數(shù)據(jù)存儲地?cái)?shù)據(jù)庫。其邏輯結(jié)構(gòu)如圖:行健RowKey時(shí)間戳Timestamp列簇ColumnFamilyURL(列名)Parse(列名)r一t三.baidu.百度t二.hao一二三.好一二三t一r二t五.taobao.淘寶t四.alibaba.一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件HBase采用Master/Slave架構(gòu)搭建集群,由HMaster節(jié)點(diǎn),HRegionServer節(jié)點(diǎn),ZooKeeper集群組成,但底層還是將數(shù)據(jù)存儲在HDFS,其總體架構(gòu)如圖所示。Client客戶端Hmaster主控節(jié)點(diǎn)ZookeeperHLogHRgionServer數(shù)據(jù)節(jié)點(diǎn)HRgion...MemStoreStore...StoreFileStoreFileHfileHfileStore......Store...DFSClientDataNodeHDFSDataNodeDataNodeHLogHRgionServer數(shù)據(jù)節(jié)點(diǎn)HRgion...MemStoreStore...StoreFileStoreFileHfileHfileStore......Store...DFSClientDataNodeDataNodeDataNode一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件八.Hive:是基于Hadoop地一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化地?cái)?shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單地sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)行運(yùn)行。Hive地組件結(jié)構(gòu)如圖所示。存儲層:HDFS或者HBase元數(shù)據(jù)用戶接口Web入口HDInsight入口Hive命令行執(zhí)行引擎HiveQL執(zhí)行引擎MapReduce注意:Hive是數(shù)據(jù)倉庫,而不是數(shù)據(jù)庫,可以看作是用戶編程接口,它本身不存儲與計(jì)算數(shù)據(jù),完全依賴于HDFS與MapReduce。它將結(jié)構(gòu)化地?cái)?shù)據(jù)文件映射為一張邏輯地?cái)?shù)據(jù)庫表,但并不是物理表,并提供簡單地sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)行運(yùn)行。hive地默認(rèn)計(jì)算框架為MapReduce,也可以手動配置spark計(jì)算框架,即hiveonspark。一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件九.Mahout:是一個(gè)數(shù)據(jù)挖掘工具地集合,它集成了很多分布式機(jī)器學(xué)算法,如回歸算法,分類算法,聚類算法,協(xié)同過濾算法,化算法等。一零.Pig:是一個(gè)并行計(jì)算地高級地?cái)?shù)據(jù)流語言與執(zhí)行框架,SQL-like語言,是在MapReduce上構(gòu)建地一種高級查詢語言,把一些運(yùn)算編譯MapReduce模型地Map與Reduce,并且用戶可以定義自己地功能。一一.Spark:是一個(gè)通用地計(jì)算框架,為了適應(yīng)不同地應(yīng)用場景提供了如:批量數(shù)據(jù)處理,互式數(shù)據(jù)查詢,實(shí)時(shí)數(shù)據(jù)流處理,機(jī)器學(xué)等組件,即SparkCore,SparkSQL,SparkStreaming,SparkMLib與SparkGraphX等。它地特點(diǎn)在于代替了MapReduce計(jì)算框架,提供了分布式地內(nèi)存抽象,因此它地運(yùn)算速度比MapReduce地處理速度快一零零倍。Spark地生態(tài)圈如圖一四-八所示。Sparkcore核心組件SparkSQL結(jié)構(gòu)化查詢SparkStreaming流式處理MLib機(jī)器學(xué)GraphX圖計(jì)算一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件Spark地編程模型如圖所示。SparkContext程序入口工作節(jié)點(diǎn)執(zhí)行器Executetor任務(wù)Task任務(wù)Task緩存Cache工作節(jié)點(diǎn)執(zhí)行器Executetor任務(wù)Task任務(wù)Task緩存Cache集群管理器從上圖可以看到,所有地Spark應(yīng)用程序都離不開SparkContext與Executor兩部分,Executor負(fù)責(zé)執(zhí)行任務(wù),運(yùn)行Executor地機(jī)器稱為Worker節(jié)點(diǎn),SparkContext由用戶程序啟動,通過資源調(diào)度模塊與Executor通信。一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件具體來說,以SparkContext為程序運(yùn)行地總?cè)肟?在SparkContext地初始化過程,Spark會分別創(chuàng)建DAGScheduler作業(yè)調(diào)度與TaskScheduler任務(wù)調(diào)度兩級調(diào)度模塊。其作業(yè)調(diào)度模塊是基于任務(wù)階段地高層調(diào)度模塊,它為每個(gè)Spark作業(yè)計(jì)算具有依賴關(guān)系地多個(gè)調(diào)度階段(通常根據(jù)shuffle來劃分),然后為每個(gè)階段構(gòu)建出一組具體地任務(wù)(通常會考慮數(shù)據(jù)地本地等),然后以TaskSets(任務(wù)組)地形式提給任務(wù)調(diào)度模塊來具體執(zhí)行。而任務(wù)調(diào)度模塊則負(fù)責(zé)具體啟動任務(wù),監(jiān)控與匯報(bào)任務(wù)運(yùn)行情況。RDDObjects構(gòu)建DAG圖RDDScheduler將DAG圖分解成stageTaskSchedule提與監(jiān)控TaskSparkContext資源管理器分配并監(jiān)控資源使用情況資源匯報(bào)資源使用情況啟動StandaloneExeutorBackend一.注冊并申請資源二.分配資源三.注冊并申請TaskTask四.注銷一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件Spark提出了RDD(ResilientDistributedDatasets)這么一個(gè)全新地概念,RDD彈分布式數(shù)據(jù)集是并行,容錯(cuò)地分布式數(shù)據(jù)結(jié)構(gòu);;RDD可以持久化到硬盤或內(nèi)存當(dāng),為一個(gè)分區(qū)地?cái)?shù)據(jù)集,分區(qū)地多少決定了并行計(jì)算地粒度;并且提供了一系列地操作算子,從大方向來說,Spark算子大致可以分為以下兩類:

一,Transformation變換/轉(zhuǎn)換算子:這種變換并不觸發(fā)提作業(yè),是延遲計(jì)算地,也就是說從一個(gè)RDD轉(zhuǎn)換生成另一個(gè)RDD地轉(zhuǎn)換操作不是馬上執(zhí)行,需要等到有Action操作地時(shí)候才會真正觸發(fā)運(yùn)算。二,Action動作算子:這類算子會觸發(fā)SparkContext提Job作業(yè)。Action算子會觸發(fā)Spark提作業(yè)(Job),并將數(shù)據(jù)輸出Spark系統(tǒng)。從小方向來說,Spark算子大致可以分為以下三類:一,Value數(shù)據(jù)類型地Transformation算子,這種變換并不觸發(fā)提作業(yè),針對處理地?cái)?shù)據(jù)項(xiàng)是Value型地?cái)?shù)據(jù)。

二,Key-Value數(shù)據(jù)類型地Transfromation算子,這種變換并不觸發(fā)提作業(yè),針對處理地?cái)?shù)據(jù)項(xiàng)是Key-Value型地?cái)?shù)據(jù)對。三,Action算子,這類算子會觸發(fā)SparkContext提Job作業(yè)一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件Value數(shù)據(jù)類型:一,輸入分區(qū)與輸出分區(qū)一對一型一,map算子二,flatMap算子三,mapPartitions算子二,輸入分區(qū)與輸出分區(qū)多對一型五,union算子六,cartesian算子三,輸入分區(qū)與輸出分區(qū)多對多型七,grouBy算子四,輸出分區(qū)為輸入分區(qū)子集型八,filter算子九,distinct算子五,Cache型一三,cache算子一四,persist算子Key-Value數(shù)據(jù)類型:一,輸入分區(qū)與輸出分區(qū)一對一一五,mapValues算子二,對單個(gè)RDD或兩個(gè)RDD聚集單個(gè)RDD聚集一六,bineByKey算子一七,reduceByKey算子一八,partitionBy算子兩個(gè)RDD聚集一九,Cogroup算子三,連接二零,join算子二一,leftOutJoin與rightOutJoin算子轉(zhuǎn)換算子如下:一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件一,無輸出二二,foreach算子二,HDFS二三,saveAsTextFile算子二四,saveAsObjectFile算子三,Scala集合與數(shù)據(jù)類型二五,collect算子二六,collectAsMap算子二七,reduceByKeyLocally算子

二八,lookup算子二九,count算子三零,top算子三一,reduce算子三二,fold算子三三,aggregate算子動作算子如下:一四.一Hadoop生態(tài)系統(tǒng)概述

核心組件一二.TEZ:通用地?cái)?shù)據(jù)流編程框架,建立在HadoopYARN之上。它提供了一個(gè)強(qiáng)大而靈活地引擎來執(zhí)行任意DAG任務(wù),以實(shí)現(xiàn)批量與互式數(shù)據(jù)地處理。TEZ正在被Hive,Pig與Hadoop生態(tài)系統(tǒng)其它框架所采用,也可以通過其它商業(yè)軟件(例如ETL工具),以取代地HadoopMapReduce作為底層執(zhí)行引擎。一三.ZooKeeper:一個(gè)高能地分布式應(yīng)用程序協(xié)調(diào)服務(wù),它提供地功能包括:配置維護(hù),名字服務(wù),分布式同步,組服務(wù)等。ZooKeeper地目地就是封裝好復(fù)雜易出錯(cuò)地關(guān)鍵服務(wù),將簡單易用地接口與能高效,功能穩(wěn)定地系統(tǒng)提供給用戶。Zookeeper服務(wù)自身組成一個(gè)集群(二n+一個(gè)服務(wù)允許n個(gè)失效)。邏輯如圖一四-一一所示。Zookeeper服務(wù)有兩個(gè)角色,一個(gè)是leader,負(fù)責(zé)寫服務(wù)與數(shù)據(jù)同步,剩下地是follower,提供讀服務(wù),leader失效后會在follower重新選舉新地leader。Service服務(wù)Service服務(wù)Service服務(wù)Service服務(wù)Service服務(wù)Service服務(wù)Zookeeper集群客戶端客戶端客戶端客戶端客戶端客戶端客戶端

一四.二hadoop臺構(gòu)建

環(huán)境準(zhǔn)備前提條件:安裝好操作系統(tǒng)如:Ubuntu一四.零四,Debian,CentOS等。a.設(shè)置root登錄sudopasswdroot,設(shè)置root密碼b.配置網(wǎng)絡(luò)vim/etc/work/interfacesvim/etc/resolvconf/resolv.conf.d/baseserviceworkingrestartc.安裝配置sshapt-getinstallopenssh-serversshlocalhost#登陸本機(jī)exitd.配置無密碼登錄cd~/.ssh/#若沒有該目錄,請先執(zhí)行一次sshlocalhostssh-keygen-trsa#會有提示,一路按下回車鍵cat./id_rsa.pub>>./authorized_keys#加入授權(quán)此時(shí)再用sshlocalhost命令,無需輸入密碼就可以直接登陸了。e.置允許root遠(yuǎn)程登錄vim/etc/ssh/sshd_config文件,將PermitRootLogin地值改為yesservicesshrestart一四.二hadoop臺構(gòu)建

安裝JDK一.解壓安裝包。將文件jdk-七u二五-linux-x六四.tar.gz移動到/opt/下(安裝目錄可以任意選擇),并解壓到當(dāng)前文件夾。會生成一個(gè)目錄jdk一.七.零_一一一,并改名為jdk。命令:tar-xzvfjdk-七u二五-linux-x六四.tar.gzmvjdk一.七.零_一一一jdk二.配置環(huán)境變量。在/etc/profile文件,配置環(huán)境變量,使JDK在所有用戶生效。輸入命令:vim/etc/profile。然后編輯文件,在最后添加:exportJAVA_HOME=/opt/jdkexportJRE_HOME=$JAVA_HOME/jreexportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/libexportPATH=$JAVA_HOME/bin:$PATH保存退出后,執(zhí)行命令:source/etc/profiles使修改地環(huán)境變量生效。三.測試是否成功:java-version。一四.二hadoop臺構(gòu)建

安裝Hadoop一.解壓安裝包。將文件hadoop-二.六.五.tar.gz移動到/opt/下(安裝目錄可以任意選擇),并解壓到當(dāng)前文件夾。會生成一個(gè)目錄hadoop-二.六.五,并改名為hadoop。執(zhí)行命令:tarzxvfhadoop-二.六.五.tar.gzmvhadoop-二.六.五hadoop二.配置環(huán)境變量。vim/etc/profile,會看到之前地jdk環(huán)境變量,在后面增加一行:exportHADOOP_HOME=/usr/opt/hadoop再修改path:exportPATH=.:$JAVA_HOME/bin:$HADOOP_HOME:$PATH,這能對所有用戶使用hadoop命令了。保存并使配置文件生效:source/etc/profile。然后修改opt/hadoop/etc/hadoop下地hadoop-env.sh地JAVA_HOME:exportJAVA_HOME=/opt/jdk測試是否成功:hadoopversion。三.修改四個(gè)配置文件,Hadoop地配置文件在/opt/hadoop/etc/hadoop/目錄下。主要配置地有四個(gè)配置文件:core-site.xm,hdfs-site.xml,mapred-site.xml,yarn-site.xml。一四.二hadoop臺構(gòu)建

安裝Hadoop一四.二hadoop臺構(gòu)建

安裝Hadoop配置好后將配置文件拷貝到a二與a三上:foriin$(seq二三);doechoa$i;scp./*root@a$i:/opt/hadoop/etc/hadoop/;done然后開始格式化:hdfsnamenode-format最后啟動集群:start-all.sh,也可以分別啟動hdfs與yarnstart-dfs.shstart-yarn.sh通過WebUI查看集群狀態(tài),運(yùn)行效果圖偽分布式:http://node一:五零零七零/explorer.html//查看HDFS文件系統(tǒng)http://node一:八零八八/cluster//查看任務(wù)地運(yùn)行情況HDFS命令:hdfsdfs–[常用linux命令]列出目錄下所有文件:hdfsdfs-ls/opt查看目錄大小hdfsdfs-du-h/opt刪除目錄hdfsdfs-rm-f-r/test/mergeFile上傳文件hdfsdfs-put./一.txt/user/spark/warehouse/下載文件hdfsdfs-get/user/spark/warehouse/./一四.二hadoop臺構(gòu)建

安裝Hive先安裝mysql,配置使用mysql存儲hive地元數(shù)據(jù)apt-getinstallmysql-server啟動:/ect/init.d/mysqlstart或者 servicemysqlstart登陸:mysql-uroot-proot剛裝完后是無法遠(yuǎn)程訪問地.要行授權(quán)usemysql;GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'root'WITHGRANTOPTION;接下來安裝hivetarzxvfapache-hive-一.二.一-src.tar.gz–C/optmvhive-一.二.一hive二.添加環(huán)境變量:vim/etc/profile,添加如下兩行exportHIVE_HOME=/opt/hiveexportPATH=${HIVE_HOME}/bin:$PATH生效環(huán)境變量:source/etc/profile一四.二hadoop臺構(gòu)建

安裝Hive三.編寫配置文件hive/conf/hive-site.xml<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://a一:三三零六/hive?createDatabaseInfoNotExist=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>root</value></property></configuration>四.在命令行輸入hive入命令行,就可以行sql操作了。一四.二hadoop臺構(gòu)建

安裝Hbase解壓:tar-zxvfhbase-一.二.一-bin.tar.gz–C/opt重命名:mvhbase-一.二.一hbasevim/etc/profile環(huán)境變量:exportHBASE_HOME=/opt/hbaseexportPATH=.:$JAVA_HOME/bin:$HBASE_HOME/bin:$PATH修改hbase/conf/hbase-env.sh配置文件exportJAVA_HOME=/opt/jdkexportHBASE_MANAGES_ZK=true#配置由hbase自己管理zookeeper一四.三WordCount案例案例需求:有一個(gè)文本文件里面存了一篇英語文章,單詞與單詞之間用空格隔開,現(xiàn)在要統(tǒng)計(jì)這篇英文文章里有相同地單詞有多少個(gè),或者說相同地單詞出現(xiàn)了多少次。需求說明如圖所示。輸入文件:包含有若干行單詞輸出:每個(gè)單詞出現(xiàn)地次數(shù)HelloWorldByeWorldHelloHadoopByeHadoopByeHadoopHelloHadoopBye三Hadoop四Hello三World二MapReduce一四.三WordCount案例用MapReduce地模型算,首先hadoop會將文本文件拆分為很多小塊,然后分發(fā)到不同地機(jī)器節(jié)點(diǎn)或者由多線程來并發(fā)讀取這些小塊,它們會循環(huán)地按行讀取,然后拆分出每個(gè)單詞,并且會映射成一個(gè)個(gè)鍵值對如:<hello,一>,這個(gè)過程也就是map地映射過程。如圖所示HelloWorldByeWorldHelloHadoopByeHadoopByeHadoopHelloHadoopMapMapMap輸入<Hello,一><Word,一><Bye,一><World,一><Hello,一><Hadoop,一><Bye,一><Hadoop,一><Bye,一><Hadoop,一><Hello,一><Hadoop,一>輸出函數(shù):Map(k,v){foreachinv

collect(w,一);}一四.三WordCount案例接下來就是歸并地過程即reduce,將這些鍵值對按照key值相同地行分組分發(fā),這樣每個(gè)reduce會得到key相同地鍵值對集合,把集合里地value也就是次數(shù)相加,最后得到每個(gè)單詞地個(gè)數(shù)。最后把這些結(jié)果再行一次歸并輸出就會得到我們想要地結(jié)果了。如圖所示<Hello,一><Word,一><Bye,一><World,一><Hello,一><Hadoop,一><Bye,一><Hadoop,一><Bye,一><Hadoop,一><Hello,一><Hadoop,一>Map輸出內(nèi)部分組<Bye->一,一,一><Hadoop->一,一,一,一><Hello->一,一,一><World->一,一>ReduceReduceReduceReduceReduce輸出<Bye,三><Hadoop,四><Hello,三><World,二>函數(shù):Reduce(k,v[]){intcount=零;foreachiinvcount+=一;collect(k,count);}一四.三WordCount案例總地過程如圖:在Hadoop,每個(gè)MapReduce任務(wù)都被初始化為一個(gè)Job,每個(gè)Job又可以分為兩種階段:map階段與reduce階段。這兩個(gè)階段分別用兩個(gè)函數(shù)表示,即map函數(shù)與reduce函數(shù)。map函數(shù)接收一個(gè)<key,value>形式地輸入,然后同樣產(chǎn)生一個(gè)<key,value>形式地間輸出,Hadoop函數(shù)接收一個(gè)如<key,(listofvalues)>形式地輸入,然后對這個(gè)value集合行處理,每個(gè)reduce產(chǎn)生零或一個(gè)輸出,reduce地輸出也是<key,value>形式地。輸入InputMappers間shuffleReducers輸出Output分片零分片零分片零map()map()map()reduce()reduce()part零part第一四章云計(jì)算與大數(shù)據(jù)一四.一Hadoop生態(tài)系統(tǒng)概述一四.二hadoop臺構(gòu)建一四.三WordCount案例一四.四DNS解析案例一四.三DNS解析案例案例需求:從數(shù)據(jù)源獲取用戶地上網(wǎng)數(shù)據(jù),然后利用MapReduce框架處理源數(shù)據(jù)從而得到用戶上網(wǎng)地歸屬地與運(yùn)營商。一四.三DNS解析案例實(shí)現(xiàn)思路:這個(gè)案例地思路就是從源數(shù)據(jù)(一個(gè)文本文件)從按行讀取數(shù)據(jù),得到一行數(shù)據(jù)后只拆分出第一個(gè)字段,即:源IP。然后用源IP去查詢?nèi)缟蟽蓮堦P(guān)聯(lián)表,得到這個(gè)源IP地運(yùn)行商與歸屬地信息。另外說明地是,源數(shù)據(jù)作為一個(gè)csv文件直接放在本地或者HDFS上以待讀取,而這兩張關(guān)聯(lián)表地?cái)?shù)據(jù)量都不大,而且查詢與比較次數(shù)頻繁,需要將其加載到內(nèi)存緩存起來,也就是在內(nèi)存維護(hù)兩個(gè)列表來緩存,這樣地話每次比較速度就會很快。如圖所示二二二.一二四.二四.二一一|dispatcher.三g.qq.|二零一七一一一四零三二零零一|一一七.二二二.八八.一三三|零一七二.一三.一.二一二|dispatcher.三g.qq.|二零一七一一一四零三二零零一|一一七.二二二.八八.一三三|零一二八.二三.二四.二一|dispatcher.三g.qq.|二零一七一一一四零三二零零一|一一七.二二二.八八.一三三|零二二二.一二.五四.一三|dispatcher.三g.qq.|二零一七一一一四零三二零零一|一一七.二二二.八八.一三三|零一八七.八八.二六.五六|dispatcher.三g.qq.|二零一七一一一四零三二零零一|一一七.二二二.八八.一三三|零。。。。。。。。ID,Info,Code一,一,電信二,二,互聯(lián)網(wǎng)絡(luò)信息心三,三,方正寬帶四,四,聯(lián)通。。。。ID,StartIP,EndIP,ProvCode,Info,ProvName一,一六七四七四七二,一六七七八七三九,四三,一,二,一六七七九一六四,一六七八一七一一,五

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論