




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
云計(jì)算與大數(shù)據(jù)第2版分布式文件存儲與大數(shù)據(jù)挖掘10.1分布式數(shù)據(jù)庫HBase10.2分布式數(shù)據(jù)倉庫Hive10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout實(shí)驗(yàn)基于Hive的數(shù)據(jù)統(tǒng)計(jì)實(shí)驗(yàn)基于Mahout的聚類實(shí)驗(yàn)重點(diǎn):Hbase概念與結(jié)構(gòu)Hive體系結(jié)構(gòu)Mahout中的協(xié)同過濾難點(diǎn):Hbase、協(xié)同過濾本章重點(diǎn)及難點(diǎn)10.1分布式數(shù)據(jù)庫Hbase10.1.1HBase簡介HBase是Hadoop的子項(xiàng)目,它是一個(gè)面向列的分布式數(shù)據(jù)庫。它建立在HDFS之上,是能提供高可靠性、高性能、列存儲、可伸縮、實(shí)時(shí)讀寫的數(shù)據(jù)庫系統(tǒng)。HDFS實(shí)現(xiàn)了一個(gè)分布式的文件系統(tǒng),雖然這個(gè)文件系統(tǒng)能以分布和可擴(kuò)展的方式有效存儲海量數(shù)據(jù),但文件系統(tǒng)缺少結(jié)構(gòu)化/半結(jié)構(gòu)化數(shù)據(jù)的存儲管理和訪問能力,其編程接口對于很多應(yīng)用來說還太底層了。就像有了NTFS這樣的單機(jī)文件系統(tǒng)后,我們還需要Oracle、IBMDB2、MicrosoftSQLServer這樣的數(shù)據(jù)庫來幫助我們管理數(shù)據(jù)一樣。HBase之于HDFS就類似于數(shù)據(jù)庫之于文件系統(tǒng)。10.1分布式數(shù)據(jù)庫Hbase10.1.1HBase簡介HBase存儲的數(shù)據(jù)介于映射(key/value)和關(guān)系型數(shù)據(jù)之間。能通過主鍵(rowkey)和主鍵的range來檢索數(shù)據(jù),支持單行事務(wù)(可通過hive支持來實(shí)現(xiàn)多表join等復(fù)雜操作)。主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。Hbase目標(biāo)主要依靠橫向擴(kuò)展,通過不斷增加廉價(jià)的商用服務(wù)器,來增加計(jì)算和存儲能力。它可以直接使用本地文件系統(tǒng),也可以使用Hadoop的HDFS文件存儲系統(tǒng)。10.1分布式數(shù)據(jù)庫Hbase10.1.1HBase簡介10.1分布式數(shù)據(jù)庫Hbase10.1.1HBase簡介HBase的特征包括:線性及模塊可擴(kuò)展性;嚴(yán)格一致讀寫;可配置的表自動分割策略;RegionServer自動故障恢復(fù);便利地備份MapReduce作業(yè)的基類;便于客戶端訪問的JavaAPI;為實(shí)時(shí)查詢提供了塊緩存和BloomFilter;可通過服務(wù)器端的過濾器進(jìn)行查詢預(yù)測;提供了支持XML、Protobuf及二進(jìn)制編碼的Thrift網(wǎng)管和REST-ful網(wǎng)絡(luò)服務(wù);可擴(kuò)展的JIRB(Jruby-based)shell;支持通過Hadoop或JMX將度量標(biāo)準(zhǔn)倒出到文件或Ganglia中。10.1分布式數(shù)據(jù)庫Hbase10.1.1HBase簡介HBase中表一般有如下的特點(diǎn):大:一個(gè)表可以有上億行,上百萬列面向列:面向列(族)的存儲和權(quán)限控制,列(族)獨(dú)立檢索。稀疏:對于為空(null)的列,并不占用存儲空間,因此,表可以設(shè)計(jì)的非常稀疏。10.1分布式數(shù)據(jù)庫Hbase10.1.2Hbase體系結(jié)構(gòu)HBase的服務(wù)器體系結(jié)構(gòu)遵從主從服務(wù)器架構(gòu),由HRegion服務(wù)器(HRegionServer)群和HBaseMaster服務(wù)器(HBaseMasterServer)構(gòu)成。HBaseMaster服務(wù)器負(fù)責(zé)管理所有的HRegion服務(wù)器。而HBase中的所有服務(wù)器都是通過ZooKeeper來進(jìn)行協(xié)調(diào)并處理HBase服務(wù)器運(yùn)行期間可能遇到的錯(cuò)誤。HBaseMaster服務(wù)器本身并不存儲HBase中的任何數(shù)據(jù),HBase邏輯上的表可能被劃分成多個(gè)HRegion,然后存儲到HRegion服務(wù)器群中。HBaseMaster服務(wù)器中存儲的是從數(shù)據(jù)到HRegion服務(wù)器的映射。10.1分布式數(shù)據(jù)庫Hbase10.1.2Hbase體系結(jié)構(gòu)10.1分布式數(shù)據(jù)庫Hbase10.1.2Hbase體系結(jié)構(gòu)1、HRegion當(dāng)表的大小超過設(shè)置值時(shí),HBase會自動將表劃分到不同的區(qū)域,每個(gè)區(qū)域包含所有行的一個(gè)子集。對用戶來說,每個(gè)表是一堆數(shù)據(jù)的集合,靠主鍵來區(qū)分。從物理上來說,一張表是被拆分成了多塊,每一塊就是一個(gè)HRegion,用表名+開始/結(jié)束主鍵來區(qū)分每一個(gè)HRegion。一個(gè)HRegion會保存一個(gè)表中某段連續(xù)的數(shù)據(jù),從開始主鍵到結(jié)束主鍵,一張完整的表格保存在多個(gè)Region上面。10.1分布式數(shù)據(jù)庫Hbase10.1.2Hbase體系結(jié)構(gòu)2、HRegion服務(wù)器HRegion服務(wù)器主要負(fù)責(zé)響應(yīng)用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù),是HBase中最核心的模塊。所有的數(shù)據(jù)庫數(shù)據(jù)一般是保存在Hadoop分布式文件系統(tǒng)上面的,用戶通過一系列HRegion服務(wù)器來獲取這些數(shù)據(jù),一臺機(jī)器上面一般只運(yùn)行一個(gè)HRegion服務(wù)器,且每一個(gè)區(qū)段的HRegion也只會被一個(gè)HRegion服務(wù)器維護(hù)。10.1分布式數(shù)據(jù)庫Hbase10.1.2Hbase體系結(jié)構(gòu)2、HRegion服務(wù)器HRegion服務(wù)器包含兩部分:HLog部分和HRegion部分。其中HLog存儲數(shù)據(jù)日志。HRegion部分由很多的HRegion組成,存儲的是實(shí)際的數(shù)據(jù)。每一個(gè)HRegion又由許多Store組成,每一個(gè)Store存儲實(shí)際上是一個(gè)列族(ColumnFamily)下的數(shù)據(jù)。此外,在每一個(gè)Store中包含一塊MemStore。MemStore駐留在內(nèi)存中,數(shù)據(jù)到來時(shí)首先更新到MemStore中,當(dāng)達(dá)到閾值之后再更新到對應(yīng)的StoreFile(又名HFile)中。每一個(gè)HStore集合包含了多個(gè)HStoreFile,HStoreFile負(fù)責(zé)的是實(shí)際的數(shù)據(jù)存儲,為HBase中最小的存儲單元。10.1分布式數(shù)據(jù)庫Hbase10.1.2Hbase體系結(jié)構(gòu)3、HBaseMaster服務(wù)器每臺HRegion服務(wù)器都會和HMaster服務(wù)器通信,HMaster的主要任務(wù)就是要告訴每臺HRegion服務(wù)器它要維護(hù)哪些HRegion。當(dāng)一臺新的HRegion服務(wù)器登錄到HMaster服務(wù)器時(shí),HMaster會告訴它先等待分配數(shù)據(jù)。而當(dāng)一臺HRegion死機(jī)時(shí),HMaster會把它負(fù)責(zé)的HRegion標(biāo)記為未分配,然后再把它們分配到其他HRegion服務(wù)器中。HBase通過ZooKeeper來保證系統(tǒng)中總有一個(gè)Master在運(yùn)行。HMaster在功能上主要負(fù)責(zé)Table和HRegion的管理工作。10.1分布式數(shù)據(jù)庫Hbase10.1.2Hbase體系結(jié)構(gòu)4、ZooKeeperZooKeeper存儲的是HBase中Root表和Meta表的位置。此外,ZooKeeper還負(fù)責(zé)監(jiān)控各個(gè)機(jī)器的狀態(tài)。當(dāng)某臺機(jī)器發(fā)生故障時(shí),ZooKeeper會第一個(gè)感知,并通知HBaseMaster進(jìn)行相應(yīng)的處理。當(dāng)HBaseMaster發(fā)生故障時(shí),ZooKeeper負(fù)責(zé)HBaseMaster的恢復(fù)工作,能夠保證在同一個(gè)時(shí)刻系統(tǒng)中只有一臺HBaseMaster提供服務(wù)。10.1分布式數(shù)據(jù)庫Hbase10.1.3Hbase數(shù)據(jù)模型1、物理模型HBase是一個(gè)類似GoogleBigtable的分布式數(shù)據(jù)庫,它是一個(gè)稀疏的長期存儲的(存儲在硬盤上)、多維度的、排序的映射表,這張表的索引是行關(guān)鍵字、列關(guān)鍵字和時(shí)間戳,HBase中的數(shù)據(jù)都是字符串,沒有類型。用戶在表格中存儲數(shù)據(jù),每一行都有一個(gè)可排序的主鍵和任意多的列。由于是稀疏存儲,同一張里面的每一行數(shù)據(jù)都可以有截然不同的列。列名字的格式是"<family>:<qualifier>",都是由字符串組成的,每一張表有一個(gè)列族集合,這個(gè)集合是固定不變的,只能通過改變表結(jié)構(gòu)來改變。但是qulifier值相對于每一行來說都是可以改變的。10.1分布式數(shù)據(jù)庫Hbase10.1.3Hbase數(shù)據(jù)模型2、概念視圖可以將一個(gè)表想象成一個(gè)大的映射關(guān)系,通過行健、行健+時(shí)間戳或行鍵+列(列族:列修飾符),就可以定位特定數(shù)據(jù),HBase是稀疏存儲數(shù)據(jù)的,因此某些列可以是空白的。10.1分布式數(shù)據(jù)庫Hbase10.1.3Hbase數(shù)據(jù)模型2、概念視圖從上表可以看出,test表有r1和r2兩行數(shù)據(jù),c1和c2兩個(gè)列族,在r1中,列族c1有三條數(shù)據(jù),列族c2有兩條數(shù)據(jù);在r2中,列族c1有一條數(shù)據(jù),列族c2有一條數(shù)據(jù),每一條數(shù)據(jù)對應(yīng)的時(shí)間戳都用數(shù)字來表示。10.1分布式數(shù)據(jù)庫Hbase10.1.3Hbase數(shù)據(jù)模型3、物理視圖雖然從概念視圖來看每個(gè)表格是由很多行組成的,但是在物理存儲上面,它是按照列來保存的。10.1分布式數(shù)據(jù)庫Hbase10.1.4Hbase的基本操作HBase的部署可分為單機(jī)模式、偽分布模式以及完全分布模式。單機(jī)模式直接下載HBase的二進(jìn)制tar.gz包解壓后配置Java路徑即可使用。偽分布模式的搭建下載解壓HBase壓縮包,先在Master機(jī)器上操作;修改配置文件conf/hbase-env.sh,conf/hase-site.xml;設(shè)置regionservers和環(huán)境變量;HBase安裝文件復(fù)制到HadoopSlave節(jié)點(diǎn);先啟動Hadoop,再啟動Hbase。10.1分布式數(shù)據(jù)庫Hbase10.1.4Hbase的基本操作10.1分布式數(shù)據(jù)庫Hbase10.1.4Hbase的基本操作HBaseShell是為用戶提供的能通過Shell控制臺或腳本執(zhí)行HBase操作的接口。任務(wù)命令表達(dá)式1)一般操作
查詢數(shù)據(jù)庫狀態(tài)status查詢版本version2)數(shù)據(jù)庫操作
創(chuàng)建表create'表名稱','列名稱1','列名稱2','列名稱N'添加記錄put'表名稱','行名稱','列名稱:','值'查看記錄get'表名稱','行名稱'查看表中的記錄總數(shù)count'表名稱'刪除記錄delete'表名','行名稱','列名稱'刪除一張表先要屏蔽該表,才能對該表進(jìn)行刪除,第一步disable'表名稱'第二步drop'表名稱'查看所有記錄scan"表名稱"查看某個(gè)表某個(gè)列中所有數(shù)據(jù)scan"表名稱",['列名稱:']10.2分布式數(shù)據(jù)倉庫Hive10.2.1Hive簡介Hive是建立在Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。Hive定義了簡單的類SQL查詢語言,稱為HiveQL。HiveQL允許熟悉SQL的用戶查詢數(shù)據(jù)。同時(shí),也允許熟悉MapReduce的開發(fā)者自定義Mapper和Reducer操作,從而支持MapReduce框架。10.2分布式數(shù)據(jù)倉庫Hive10.2.1Hive簡介Hive的設(shè)計(jì)特點(diǎn)如下:支持不同的存儲類型,例如,純文本文件、HBase中的文件??蓪⒃獢?shù)據(jù)保存在關(guān)系數(shù)據(jù)庫中,減少了在查詢過程中執(zhí)行語義檢查的時(shí)間。可以直接使用存儲在Hadoop文件系統(tǒng)中的數(shù)據(jù)。內(nèi)置大量用戶函數(shù)UDF來操作時(shí)間、字符串和其他的數(shù)據(jù)挖掘工具,支持用戶擴(kuò)展UDF函數(shù)來完成內(nèi)置函數(shù)無法實(shí)現(xiàn)的操作。采用類SQL的查詢方式,可將SQL查詢轉(zhuǎn)換為MapReduce的job在Hadoop集群上執(zhí)行。10.2分布式數(shù)據(jù)倉庫Hive10.2.2Hive體系結(jié)構(gòu)10.2分布式數(shù)據(jù)倉庫Hive10.2.2Hive體系結(jié)構(gòu)
(1)用戶接口用戶接口主要有三個(gè):命令行接口(CommandLineInterface,CLI)、Client和網(wǎng)絡(luò)接口(WebUserInterface,WUI)。其中最常用的是CLI,當(dāng)CLI啟動的時(shí)候,會同時(shí)啟動一個(gè)Hive副本。Client是Hive的客戶端,用戶連接至HiveServer(如前圖中的ThiftServer)。在啟動Client模式的時(shí)候,需要指出HiveServer所在節(jié)點(diǎn),并且在該節(jié)點(diǎn)啟動HiveServer。WUI是通過瀏覽器訪問Hive。10.2分布式數(shù)據(jù)倉庫Hive10.2.2Hive體系結(jié)構(gòu)(2)元數(shù)據(jù)存儲Hive將元數(shù)據(jù)存儲在數(shù)據(jù)庫中,如MySQL、Derby。Hive中的元數(shù)據(jù)包括表的名字、表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。(3)解釋器、編譯器、優(yōu)化器、執(zhí)行器解釋器、編譯器、優(yōu)化器完成HQL查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計(jì)劃的生成。生成的查詢計(jì)劃存儲在HDFS中,并在隨后由MapReduce調(diào)用執(zhí)行。(4)HadoopHive的數(shù)據(jù)存儲在HDFS中,大部分的查詢由MapReduce完成(包含*的查詢,比如select*fromtbl會生成MapReduce任務(wù))。10.2分布式數(shù)據(jù)倉庫Hive10.2.3Hive數(shù)據(jù)類型Hive的數(shù)據(jù)存儲模型有四種:表(Table),外部表(ExternalTable),分區(qū)(Partition),桶(Bucket)。(1)Hive中的Table和數(shù)據(jù)庫中的Table在概念上是類似的。在Hive中每一個(gè)Table都有一個(gè)相應(yīng)的目錄存儲數(shù)據(jù)。例如,一個(gè)表ahpu,它在HDFS中的路徑為:/wh/ahpu,其中,wh是在hive-site.xml中由${hive.metastore.warehouse.dir}指定的數(shù)據(jù)倉庫的目錄,所有的Table數(shù)據(jù)(不包括ExternalTable)都保存在這個(gè)目錄中。(2)外部表是一個(gè)已經(jīng)存儲在HDFS中,并具有一定格式的數(shù)據(jù)。使用外部表意味著Hive表內(nèi)的數(shù)據(jù)不在Hive的數(shù)據(jù)倉庫內(nèi),它會到倉庫目錄以外的位置訪問數(shù)據(jù)。10.2分布式數(shù)據(jù)倉庫Hive10.2.3Hive數(shù)據(jù)類型1、Hive的數(shù)據(jù)存儲模型Hive的數(shù)據(jù)存儲模型有四種:表(Table),外部表(ExternalTable),分區(qū)(Partition),桶(Bucket)。(3)分區(qū)對應(yīng)于數(shù)據(jù)庫中的分區(qū)列的密集索引,但是Hive中分區(qū)的組織方式和數(shù)據(jù)庫中的很不相同。在Hive中,表中的一個(gè)分區(qū)對應(yīng)于表下的一個(gè)目錄,所有的分區(qū)的數(shù)據(jù)都存儲在對應(yīng)的目錄中。(4)桶對指定列進(jìn)行哈希(hash)計(jì)算,會根據(jù)哈希值切分?jǐn)?shù)據(jù),目的是為了并行,每一個(gè)桶對應(yīng)一個(gè)文件。10.2分布式數(shù)據(jù)倉庫Hive10.2.3Hive數(shù)據(jù)類型1、Hive的數(shù)據(jù)存儲模型Hive的數(shù)據(jù)存儲模型有四種:表(Table),外部表(ExternalTable),分區(qū)(Partition),桶(Bucket)。(3)分區(qū)對應(yīng)于數(shù)據(jù)庫中的分區(qū)列的密集索引,但是Hive中分區(qū)的組織方式和數(shù)據(jù)庫中的很不相同。在Hive中,表中的一個(gè)分區(qū)對應(yīng)于表下的一個(gè)目錄,所有的分區(qū)的數(shù)據(jù)都存儲在對應(yīng)的目錄中。(4)桶對指定列進(jìn)行哈希(hash)計(jì)算,會根據(jù)哈希值切分?jǐn)?shù)據(jù),目的是為了并行,每一個(gè)桶對應(yīng)一個(gè)文件。10.2分布式數(shù)據(jù)倉庫Hive10.2.3Hive數(shù)據(jù)類型2、Hive的元數(shù)據(jù)存儲管理Hive運(yùn)行過程中,其元數(shù)據(jù)可能會不斷被讀取、更新和修改,因此這些元數(shù)據(jù)不宜存放在Hadoop的HDFS文件系統(tǒng)中,否則會降低元數(shù)據(jù)的訪問效率,進(jìn)一步降低Hive的整體性能。目前,Hive使用一個(gè)關(guān)系型數(shù)據(jù)庫來存儲元數(shù)據(jù)。Hive可以通過三種方式連接到數(shù)據(jù)庫。(1)“單用戶”模式(2)“多用戶”模式(3)“遠(yuǎn)程服務(wù)器”模式10.2分布式數(shù)據(jù)倉庫Hive10.2.3Hive數(shù)據(jù)類型3、Hive的數(shù)據(jù)類型(1)基本數(shù)據(jù)類型數(shù)據(jù)類型所占字節(jié)開始支持版本TINYINT1byte,-128~127
SMALLINT2byte,-32,768~32,767
INT4byte,-2,147,483,648~2,147,483,647
BIGINT8byte,-9,223,372,036,854,775,808~9,223,372,036,854,775,807
BOOLEAN
FLOAT4byte單精度
DOUBLE8byte雙精度
STRING
BINARY布爾型(true/false)從Hive0.8.0開始支持TIMESTAMP
從Hive0.8.0開始支持DECIMAL
從Hive0.11.0開始支持CHAR
從Hive0.13.0開始支持VARCHAR
從Hive0.12.0開始支持DATE
從Hive0.12.0開始支持10.2分布式數(shù)據(jù)倉庫Hive10.2.3Hive數(shù)據(jù)類型3、Hive的數(shù)據(jù)類型(2)復(fù)雜數(shù)據(jù)類型包括:ARRAY,MAP,STRUCT,UNION,這些復(fù)雜類型是由基礎(chǔ)類型組成的。10.2分布式數(shù)據(jù)倉庫Hive10.2.4Hive基本操作創(chuàng)建表:hive>
CREATE
TABLE
pokes
(foo
INT,
bar
STRING);
創(chuàng)建一個(gè)新表,結(jié)構(gòu)與record表一樣hive>
create
table
new_table
like
records;
創(chuàng)建分區(qū)表:hive>
create
table
logs(ts
bigint,line
string)
partitioned
by
(dt
String,country
String);
加載分區(qū)表數(shù)據(jù):hive>
load
data
local
inpath
'/home/Hadoop/input/hive/partitions/file1'
into
table
logs
partition
(dt='2001-01-01',country='GB');
展示表中有多少分區(qū):hive>
show
partitions
logs;
10.2分布式數(shù)據(jù)倉庫Hive10.2.4Hive基本操作展示所有表:hive>
SHOW
TABLES;
hive>
SHOW
TABLES
'.*s‘顯示表的結(jié)構(gòu)信息hive>
DESCRIBE
invites;
更新表的名稱:hive>
ALTER
TABLE
source
RENAME
TO
target;
添加新一列hive>
ALTER
TABLE
invites
ADD
COLUMNS
(new_col2
INT
COMMENT
'a
comment');
10.2分布式數(shù)據(jù)倉庫Hive10.2.4Hive基本操作刪除表:hive>
DROP
TABLE
records;
刪除表中數(shù)據(jù),但要保持表的結(jié)構(gòu)定義hive>
dfs
-rmr
/user/hive/warehouse/records;
從本地文件加載數(shù)據(jù):hive>
LOAD
DATA
LOCAL
INPATH
'/home/hadoop/input/ncdc/micro-tab/sample.txt'
顯示所有函數(shù):hive>
show
functions;
查看函數(shù)用法:hive>
describe
function
substr;
10.2分布式數(shù)據(jù)倉庫Hive10.2.4Hive基本操作內(nèi)連接:
hive>
SELECT
sales.*,
things.*
FROM
sales
JOIN
things
ON
(sales.id
=
things.id);
外連接:hive>
SELECT
sales.*,
things.*
FROM
sales
LEFT
OUTER
JOIN
things
ON
(sales.id
=
things.id);hive>SELECTsales.*,things.*FROMsalesRIGHTOUTERJOINthingsON(sales.id=things.id);hive>SELECTsales.*,things.*FROMsalesFULLOUTERJOINthingsON(sales.id=things.id);
10.2分布式數(shù)據(jù)倉庫Hive10.2.4Hive基本操作創(chuàng)建視圖:hive>CREATEVIEWvalid_recordsASSELECT*FROMrecords2WHEREtemperature!=9999;查看視圖詳細(xì)信息:hive>
DESCRIBE
EXTENDED
valid_records;10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.1Mahout簡介Mahout項(xiàng)目是由ApacheSoftwareFoundation(ASF)的開源項(xiàng)目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開發(fā)人員更加方便、快捷地創(chuàng)建智能應(yīng)用程序。發(fā)展至今,ApacheMahout項(xiàng)目目前已經(jīng)有3個(gè)公開發(fā)行版本,包含許多實(shí)現(xiàn),如聚類、分類、推薦過濾、頻繁子項(xiàng)挖掘。此外,通過使用ApacheHadoop庫,Mahout可以有效地?cái)U(kuò)展到云中。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.1Mahout簡介Mahout的機(jī)器學(xué)習(xí)算法算法類算法說明分類算法LogisticRegression邏輯回歸
Bayesian貝葉斯
SVM支持向量機(jī)
Perceptron感知器算法
NeuralNetwork神經(jīng)網(wǎng)絡(luò)
RandomForests隨機(jī)森林
RestrictedBoltzmannMachines有限波爾茲曼機(jī)聚類算法CanopyClusteringCanopy聚類
K-meansClusteringK均值算法
FuzzyK-means模糊K均值
ExpectationMaximizationEM聚類(期望最大化聚類)
MeanShiftClustering均值漂移聚類
HierarchicalClustering層次聚類
DirichletProcessClustering狄里克雷過程聚類
LatentDirichletAllocationLDA聚類
SpectralClustering譜聚類關(guān)聯(lián)規(guī)則挖掘ParallelFPGrowthAlgorithm并行FPGrowth算法回歸LocallyWeightedLinearRegression局部加權(quán)線性回歸降維/維約簡SingularValueDecomposition奇異值分解
PrincipalComponentsAnalysis主成分分析
IndependentComponentAnalysis獨(dú)立成分分析
GaussianDiscriminativeAnalysis高斯判別分析進(jìn)化算法并行化Watchmaker框架
推薦/協(xié)同過濾Non-distributedrecommendersTaste(UserCF,ItemCF,SlopeOne)
DistributedRecommendersItemCF向量相似度計(jì)算RowSimilarityJob計(jì)算列間相似度
VectorDistanceJob計(jì)算向量間距離非Map-Reduce算法HiddenMarkovModels隱馬爾科夫模型集合方法擴(kuò)展Collections擴(kuò)展了java的Collections類10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.1Mahout簡介TasteTaste是ApacheMahout提供的一個(gè)協(xié)同過濾算法的高效實(shí)現(xiàn),它是一個(gè)基于Java實(shí)現(xiàn),可擴(kuò)展性強(qiáng),它在Mahout中對一些推薦算法進(jìn)行MapReduce編程模式轉(zhuǎn)化,從而可以利用Hadoop的分布式架構(gòu),提高了推薦算法的性能。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾1.協(xié)同過濾協(xié)同過濾(CollaborativeFiltering,CF)是利用集體智慧的一個(gè)典型方法。要理解什么是協(xié)同過濾,首先想一個(gè)簡單的問題,如果你現(xiàn)在想看個(gè)電影,但你不知道具體看哪部,你會怎么做?大部分的人會問問周圍的朋友,看看最近有什么好看的電影推薦,而我們一般更傾向于從口味比較類似的朋友那里得到推薦。這就是協(xié)同過濾的核心思想。換句話說,協(xié)同過濾就是借鑒和你相關(guān)人群的觀點(diǎn)來進(jìn)行推薦。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾1、
協(xié)同過濾概念不同于基于內(nèi)容的推薦,協(xié)同過濾主要是基于用戶行為的推薦。比如,協(xié)同過濾會在海量的用戶中發(fā)掘出一小部分和你品位比較類似的,這些用戶成為鄰居,然后根據(jù)他們喜歡的其他東西組織成一個(gè)排序的目錄作為推薦給你。當(dāng)然其中存在的核心的問題是:如何確定一個(gè)用戶是不是和你有相似的品位?如何將鄰居們的喜好組織成一個(gè)排序的目錄?10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實(shí)現(xiàn)要實(shí)現(xiàn)協(xié)同過濾的推薦算法,要進(jìn)行以下三個(gè)步驟:(1)收集數(shù)據(jù)這里的數(shù)據(jù)指的都是用戶的歷史行為數(shù)據(jù),比如用戶的購買歷史,關(guān)注,收藏行為,或者發(fā)表了某些評論,給某個(gè)物品打了多少分等等,這些都可以用來作為數(shù)據(jù)供推薦算法使用,服務(wù)于推薦算法。需要特別指出的在于,不同的數(shù)據(jù)準(zhǔn)確性不同,粒度也不同,在使用時(shí)需要考慮到噪音所帶來的影響。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實(shí)現(xiàn)要實(shí)現(xiàn)協(xié)同過濾的推薦算法,要進(jìn)行以下三個(gè)步驟:(2)找到相似用戶和物品計(jì)算用戶間以及物品間的相似度。以下是幾種計(jì)算相似度的方法:歐幾里德距離皮爾遜相關(guān)系數(shù)Cosine相似度Tanimoto系數(shù)10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實(shí)現(xiàn)要實(shí)現(xiàn)協(xié)同過濾的推薦算法,要進(jìn)行以下三個(gè)步驟:(3)進(jìn)行推薦計(jì)算相似度后,就可以進(jìn)行推薦了。在協(xié)同過濾中,有基于用戶的協(xié)同過濾和基于項(xiàng)目(物品)的協(xié)同過濾兩種主流方法。10.3.2Mahout中的協(xié)同過濾
基于用戶的協(xié)同過濾基于物品的協(xié)同過濾10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實(shí)現(xiàn)基于用戶的協(xié)同過濾的基本思想是:基于用戶對物品的偏好找到相鄰鄰居用戶,然后將鄰居用戶喜歡的推薦給當(dāng)前用戶。計(jì)算上,就是將一個(gè)用戶對所有物品的偏好作為一個(gè)向量來計(jì)算用戶之間的相似度,找到K鄰居后,根據(jù)鄰居的相似度權(quán)重以及他們對物品的偏好,預(yù)測當(dāng)前用戶沒有偏好的未涉及物品,計(jì)算得到一個(gè)排序的物品列表作為推薦。如圖所示,對于用戶A,根據(jù)用戶的歷史偏好,這里只計(jì)算得到一個(gè)鄰居,即用戶C,然后將用戶C喜歡的物品D推薦給用戶A。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實(shí)現(xiàn)基于物品的協(xié)同過濾的原理和基于用戶的協(xié)同過濾類似,只是在計(jì)算鄰居時(shí)采用物品本身,而不是從用戶的角度,即基于用戶對物品的偏好找到相似的物品,然后根據(jù)用戶的歷史偏好,推薦相似的物品給他。從計(jì)算的角度看,就是將所有用戶對某個(gè)物品的偏好作為一個(gè)向量來計(jì)算物品之間的相似度,得到物品的相似物品后,根據(jù)用戶歷史的偏好預(yù)測當(dāng)前用戶還沒有表示偏好的物品,計(jì)算得到一個(gè)排序的物品列表作為推薦。對于物品A,根據(jù)所有用戶的歷史偏好,喜歡物品A的用戶都喜歡物品C,得出物品A和物品C比較相似,而用戶C喜歡物品A,那么可以推斷出用戶C可能也喜歡物品C。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾3.Mahout中的協(xié)同過濾過程Mahout首先通過Taste庫建立一個(gè)針對協(xié)同過濾的推薦引擎。Taste支持基于用戶和基于物品(項(xiàng)目)的推薦,在它的用戶自定義的界面提供了許多推薦選項(xiàng)。借助這些組件以及它們的實(shí)現(xiàn),開發(fā)人員可以構(gòu)建復(fù)雜的推薦系統(tǒng),提供基于實(shí)時(shí)或者離線的推薦?;趯?shí)時(shí)的推薦經(jīng)常只能處理數(shù)千用戶,而離線推薦具有更好的適用性。Taste甚至提供了一些可利用Hadoop離線計(jì)算推薦的工具,可以滿足包含大量用戶、項(xiàng)目和首選項(xiàng)的大型系統(tǒng)的需求。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.2Mahout中的協(xié)同過濾3.Mahout中的協(xié)同過濾過程具體來說,Taste包含5個(gè)主要組件,用于確定用戶、項(xiàng)目和首選項(xiàng),它們是:DataModel:用于存儲用戶、項(xiàng)目和首選項(xiàng);UserSimilarity:用于定義兩個(gè)用戶之間的相似度的界面;ItemSimilarity:用于定義兩個(gè)項(xiàng)目之間的相似度的界面;Recommender:用于提供推薦的界面;UserNeighborhood:用于計(jì)算相似用戶鄰近度的界面,其結(jié)果隨時(shí)可由Recommender使用。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.3Mahout中的分類和聚類1、分類分類(classification)一種有監(jiān)督的學(xué)習(xí)方法,它根據(jù)有標(biāo)記的數(shù)據(jù)找出描述并區(qū)分?jǐn)?shù)據(jù)類或概念的模型(或函數(shù)),以便能夠使用模型預(yù)測類標(biāo)記未知的對象類。分類的目的是學(xué)會一個(gè)分類函數(shù)或分類模型(也常常稱作分類器),該模型能將未知的數(shù)據(jù)映射到給定類別中的某一個(gè)類中,從而實(shí)現(xiàn)分類的目標(biāo)。分類器的構(gòu)造方法有統(tǒng)計(jì)方法、機(jī)器學(xué)習(xí)方法、神經(jīng)網(wǎng)絡(luò)方法等等。不同的分類器有不同的特點(diǎn)。常使用三種分類器評價(jià)指標(biāo):①預(yù)測準(zhǔn)確度;②計(jì)算復(fù)雜度;③模型描述的簡潔度。10.3大數(shù)據(jù)挖掘計(jì)算平臺Mahout10.3.3Mahout中的分類和聚類2、聚類聚類(clustering)
是一種無監(jiān)督的學(xué)習(xí)方法,它是根據(jù)“物以類聚”的原理,將本身沒有類別的樣本聚集成不同的組,并且對每一個(gè)組對象進(jìn)行描述的過程。這樣的一組數(shù)據(jù)對象的集合常被稱為簇,。聚類目的是使得屬于同一個(gè)簇的樣本之間應(yīng)該彼此相似,而不同簇的樣本應(yīng)該足夠不相似。與分類規(guī)則不同,進(jìn)行聚類前并不知道將要?jiǎng)澐殖蓭讉€(gè)組和什么樣的組,也不知道根據(jù)哪些空間區(qū)分規(guī)則來定義組。聚類旨在發(fā)現(xiàn)空間實(shí)體的屬性間的函數(shù)關(guān)系,挖掘的知識用以屬性名為變量的數(shù)學(xué)方程來表示。常見的聚類算法包括:K-means聚類算
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水泥基礎(chǔ)施工方案
- 橋梁排水施工方案
- 管道拆除施工方案
- 1994年赴美考察散記
- 2025年村委會林地承包與木材加工銷售合同
- 二零二五年度實(shí)習(xí)生實(shí)習(xí)期間實(shí)習(xí)成果轉(zhuǎn)化與應(yīng)用協(xié)議
- 二零二五年度測繪成果應(yīng)用安全保護(hù)協(xié)議
- 二零二五年度風(fēng)投優(yōu)先股投資合作中的知識產(chǎn)權(quán)保護(hù)合同
- 二零二五年度股權(quán)投資顧問服務(wù)創(chuàng)新條款
- 2025股東股權(quán)協(xié)議:新能源汽車動力電池研發(fā)與生產(chǎn)
- 2024至2030年全球及中國電競游戲外設(shè)行業(yè)深度研究報(bào)告
- 2024年北京電子科技職業(yè)學(xué)院高職單招筆試歷年職業(yè)技能測驗(yàn)典型例題與考點(diǎn)解析含答案
- 家具公司合伙協(xié)議
- DL5000-火力發(fā)電廠設(shè)計(jì)技術(shù)規(guī)程
- 2025屆新高考數(shù)學(xué)沖刺復(fù)習(xí) 突破爪型三角形的八大妙手
- 《醫(yī)德醫(yī)風(fēng)學(xué)習(xí)記錄》
- 羊水穿刺的委托書
- 變電站工程的驗(yàn)收規(guī)范
- 爆破飛石控制措施
- 2024年新疆生產(chǎn)建設(shè)兵團(tuán)興新職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫必考題
- (高清版)JTGT M72-01-2017 公路隧道養(yǎng)護(hù)工程預(yù)算定額
評論
0/150
提交評論