日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop各组件详解

發(fā)布時(shí)間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop各组件详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大數(shù)據(jù)之HDFS

1.HDFS產(chǎn)生背景

隨著數(shù)據(jù)量越來(lái)越大,在一個(gè)操作系統(tǒng)存不下所有的數(shù)據(jù),那么就分配到更多的操作系統(tǒng)管理的磁盆中,但是不方便管理和維護(hù),迫切需要一種系統(tǒng)來(lái)管理多臺(tái)機(jī)器上的文件,這就是分布式文件管理系統(tǒng)。HDFS只是分布式文件管理系統(tǒng)中的一種。

2.HDFS定義

HDFS,是一個(gè)文件系統(tǒng),用于存儲(chǔ)文件,通過(guò)目錄樹(shù)來(lái)定位文件;其次,它是分布式的,由很多服務(wù)器聯(lián)合起來(lái)實(shí)現(xiàn)其功能,機(jī)器中的服務(wù)器有各自的角色。
HDFS使用場(chǎng)景:適合一次寫(xiě)入,多次讀出的場(chǎng)景,且不支持文件的修改。適合用來(lái)做數(shù)據(jù)分析,不適合做網(wǎng)盤(pán)應(yīng)用。
優(yōu)點(diǎn):
1.高容錯(cuò)性
2.適合處理大數(shù)據(jù)
3.可構(gòu)建在廉價(jià)機(jī)器上,通過(guò)多副本機(jī)制,提高可靠性
缺點(diǎn):
1.不適合低延時(shí)數(shù)據(jù)訪(fǎng)問(wèn)
2.無(wú)法高效的對(duì)大量小文件進(jìn)行存儲(chǔ)
3.不支持并發(fā)寫(xiě)入、文件隨機(jī)修改
HDFS塊的大小主要取決與磁盤(pán)的傳輸數(shù)率
常用命令:

啟動(dòng)hadoop命令: #cd /usrlocal/hadoop #./sbin/start-dfs.sh [root@master ~]# hadoop fs -help Usage: hadoop fs [generic options][-appendToFile <localsrc> ... <dst>][-cat [-ignoreCrc] <src> ...][-checksum <src> ...][-chgrp [-R] GROUP PATH...][-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...][-chown [-R] [OWNER][:[GROUP]] PATH...][-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>][-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>][-count [-q] [-h] [-v] [-t [<storage type>]] [-u] <path> ...][-cp [-f] [-p | -p[topax]] <src> ... <dst>][-createSnapshot <snapshotDir> [<snapshotName>]][-deleteSnapshot <snapshotDir> <snapshotName>][-df [-h] [<path> ...]][-du [-s] [-h] <path> ...][-expunge][-find <path> ... <expression> ...][-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>][-getfacl [-R] <path>][-getfattr [-R] {-n name | -d} [-e en] <path>][-getmerge [-nl] <src> <localdst>][-help [cmd ...]][-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]][-mkdir [-p] <path> ...][-moveFromLocal <localsrc> ... <dst>][-moveToLocal <src> <localdst>][-mv <src> ... <dst>][-put [-f] [-p] [-l] <localsrc> ... <dst>][-renameSnapshot <snapshotDir> <oldName> <newName>][-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...][-rmdir [--ignore-fail-on-non-empty] <dir> ...][-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]][-setfattr {-n name [-v value] | -x name} <path>][-setrep [-R] [-w] <rep> <path> ...][-stat [format] <path> ...][-tail [-f] <file>][-test -[defsz] <path>][-text [-ignoreCrc] <src> ...][-touchz <path> ...][-truncate [-w] <length> <path> ...][-usage [cmd ...]] Generic options supported are -conf <configuration file> specify an application configuration file -D <property=value> use value for given property -fs <local|namenode:port> specify a namenode -jt <local|resourcemanager:port> specify a ResourceManager -files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster -libjars <comma separated list of jars> specify comma separated jar files to include in the classpath. -archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines. The general command line syntax is bin/hadoop command [genericOptions] [commandOptions] -appendToFile [localsrc] [dst] 將本地文件localsrc追加到hdfs的dst文件中,如果dst文件不存在,則創(chuàng)建。 eg:hdfs dfs -appendToFile /home/t2.txt /user/hdfs/gpl/t2.txt -cat [dst]顯示文件內(nèi)容 eg:hdfs dfs -cat /user/hdfs/gpl/t2.txt -checksum [dst] 為匹配文件模式dst到stdou的文件轉(zhuǎn)儲(chǔ)校驗(yàn)和信息 eg:hdfs dfs -checksum /user/hdfs/gpl/t2.txt-chgrp [-R] GROUP PATH 相當(dāng)與-chown eg:hdfs dfs -chgrp hdfs /user/hdfs/gpl/t2.txt-chmod 更改文件的權(quán)限,與shell的chmod命令類(lèi)似 eg:hdfs dfs -chmod 777 /user/hdfs/gpl/t2.txt -chown 更改文件所屬者 eg:hdfs dfs -chown hdfs /user/hdfs/gpl/tx.txt -copyFromLocal [localsrc] [dst] 將本地文件上傳到hdfs目錄 eg:hdfs dfs -copyFromLocal /home/t2.txt /user/hdfs/gpl/ -copyToLocal [dst] [localsrc] 將hdfs文件下載到本地 eg:hadoop fs -copyToLocal /user/hdfs/data2/ip=10.69.2.3/logfile_localhost.lo caldomain_1531106559.txt /home/ -count 查看目錄下,子目錄數(shù)[-q]、文件數(shù)[-h]、文件大小[-v]、文件名/目錄名[dst] eg: hdfs dfs -count /user/hdfs/gpl-cp SRC [SRC …] DST 將文件從SRC復(fù)制到DST,如果指定了多個(gè)SRC,則DST必須為一個(gè)目錄 eg: hdfs dfs -cp /user/hdfs/data2/ip=10.69.2.3/logfile_localhost.loc aldomain_1531106600.txt /user/hdfs/gpl/ -createSnapshot [snapshotDir] [snapshotName] 在目錄上創(chuàng)建快照 eg:hdfs dfs -createSnapshot /user/hdfs/gpl/ kz . -deleteSnapshot [snapshotDir][snapshotName] 在目錄上刪除快照 eg:hdfs dfs -deleteSnapshot /user/hdfs/gpl/kz -df 顯示文件系統(tǒng)的容量、空閑空間和使用空間 eg:hdfs dfs -df /user/hdfs/gpl-du 顯示該目錄中每個(gè)文件或目錄的大小 eg: hdfs dfs -du -s -h /user/hdfs-expunge 清空回收站,文件被刪除時(shí),它首先會(huì)移到臨時(shí)目錄.Trash/中,當(dāng)超過(guò)延遲時(shí)間之后,文件才會(huì)被永久刪除 eg: hdfs dfs -expunge -find 查找與指定表達(dá)式匹配的所有文件 eg:hdfs dfs -find /user/hdfs -name t2.txt -get 將hdfs文件下載到本地與-copyToLocal 類(lèi)似 eg:hadoop fs -get /user/hdfs/data2/ip=10.69.2.3/logfile_localhost.lo caldomain_1531106559.txt /home/ -getfacl [-R] [path] 顯示文件和目錄的訪(fǎng)問(wèn)控制列表(acl)。如果一個(gè) 目錄有一個(gè)默認(rèn)的ACL,然后getfacl也顯示默認(rèn)的ACL。 eg:hdfs dfs -getfacl /user/hdfs-getfattr 顯示文件或的擴(kuò)展屬性名和值(如果有的話(huà)) -getmerge [src] [localdst] 將hdfs的多個(gè)文件合并后下載到本地 eg:hsfs dfs -getmerge /user/hdfs/data2/ip=10.69.2.3/ /home/ip.txt help 幫助命令,列出可操作命令 -ls 列出指定目錄下的文件或目錄 eg:hdfs dfs -ls /user/hdfs-mkdir 創(chuàng)建目錄 eg:hdfs dfs -mkdir /user/hdfs/test-moveFromLocal [localsrc] … [dst] 本地文件系統(tǒng)復(fù)制文件到HDFS文件系統(tǒng)后刪除本地文件 eg:hdfs dfs -moveFromLocal /home/md.txt /user/hdfs/gpl -moveToLocal [src] [localdst] 未實(shí)現(xiàn)-mv [src] [dst] 將匹配指定文件模式src的文件移動(dòng)到目標(biāo)dst,在移動(dòng)多個(gè)文件時(shí),目標(biāo)必須是一個(gè)目錄。 eg:hdfs dfs -mv /user/hdfs/gpl/mft5.txt /user/hdfs/gpl/mft.txt-put [localsrc] [dst] 本地文件系統(tǒng)復(fù)制文件到HDFS文件系統(tǒng)與,與-copyFromLocal類(lèi)似 -renameSnapshot [snapshotDir][oldName] [newName] 快照重命名 -rm 刪除 ,與shell的rm命令類(lèi)似 eg: hdfs dfs -rm -r /user/hdfs/gpl/mtf.txt -rmdir [dir] 刪除指定的dir目錄項(xiàng) eg: hdfs dfs -rmdir /user/hdfs/test -setfacl 設(shè)置文件和目錄的訪(fǎng)問(wèn)控制列表(acl)。 -setfattr 設(shè)置文件或目錄的擴(kuò)展屬性名和值。 -setrep 設(shè)置文件的復(fù)制級(jí)別 -stat [format] path 以指定格式打印文件/目錄的統(tǒng)計(jì)信息,其中,%b-塊、%g-所屬組 、%n-文件名、%o塊大小、%u用戶(hù)名 eg:hdfs dfs -stat [%b-%g-%n-%o-%r-%u-%y:%Y] /user/hdfs/gpl-tail [-f] path Show the last 1KB of the file eg:hdfs dfs -tail /user/hdfs/gpl/t2.txt-test -[defsz] path 回答關(guān)于path的各種問(wèn)題,結(jié)果通過(guò)退出狀態(tài)。-text 獲取源文件并以文本格式輸出該文件。允許的格式是zip和TextRecordInputStream和Avro。 -touchz path 在path處創(chuàng)建一個(gè)0長(zhǎng)度的文件,當(dāng)前時(shí)間作為時(shí)間戳 <路徑>如果文件的長(zhǎng)度不為零,則返回錯(cuò)誤 eg:hdfs dfs -touchz /user/hdfs/gpl/1.txt -usage 顯示給定命令或所有命令的用法(如果沒(méi)有指定任何命令)。與-help類(lèi)似 eg:hdfs dfs -usage

大數(shù)據(jù)之MapReduce

MapReduce是Hadoop中的一種處理大規(guī)模數(shù)據(jù)的編程模型,得益于MapReduce的并行計(jì)算,可以高效的處理大規(guī)模數(shù)據(jù)(一般是HDFS中存儲(chǔ)的數(shù)據(jù))。

生成序列文件: # mahout seqdirectory

-i Sequence File文件目錄
-o 向量文件輸出目錄
-wt 權(quán)重類(lèi)型,支持TF或者TFIDF兩種選項(xiàng),默認(rèn)TFIDF
-n 使用的正規(guī)化,使用浮點(diǎn)數(shù)或者"INF"表示,
-ow 指定該參數(shù),將覆蓋已有的輸出目錄
-seq 指定該參數(shù),那么輸出的向量是SequentialAccessVectors
-nv 指定該參數(shù),那么輸出的向量是NamedVectors

大數(shù)據(jù)之hbase

一、hbase的簡(jiǎn)介:

HBase - Hadoop Database,是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。HBase是Google BigTable的開(kāi)源實(shí)現(xiàn),類(lèi)似Google BigTable利用GFS作為其文件存儲(chǔ)系統(tǒng),HBase利用Hadoop HDFS作為其文件存儲(chǔ)系統(tǒng);Google運(yùn)行MapReduce來(lái)處理Bigtable中的海量數(shù)據(jù),HBase同樣利用Hadoop MapReduce來(lái)處理HBase中的海量數(shù)據(jù);Google Bigtable利用Chubby作為協(xié)同服務(wù),HBase利用Zookeeper作為對(duì)應(yīng)。

優(yōu)勢(shì):
1.寫(xiě)入性能高,且?guī)缀蹩梢詿o(wú)限擴(kuò)展。
2.海量數(shù)據(jù)下(100TB級(jí)別表)的查詢(xún)依然能保持在5ms級(jí)別。
3.存儲(chǔ)容量大,不需要做分庫(kù)分表。
4.表的列可以靈活配置,1行可以有多個(gè)非固定的列。
劣勢(shì):
1.并不能保證100%時(shí)間可用,宕機(jī)回復(fù)時(shí)間根據(jù)寫(xiě)入流量不同在幾秒到幾十秒內(nèi)。
2.查詢(xún)便利性上缺少支持sql語(yǔ)句。
3.無(wú)索引,查詢(xún)必須按照RowKey嚴(yán)格查詢(xún),不帶RowKey的filter性能較低。
4.對(duì)于查詢(xún)會(huì)有一些毛刺,特別是在compact時(shí),平均查詢(xún)延遲在2~3ms,但是毛刺時(shí)會(huì)升高到幾十到100多毫秒。

二、HBase使用場(chǎng)景

2.1 歷史數(shù)據(jù)存儲(chǔ)類(lèi)應(yīng)用(約占七成)
這類(lèi)應(yīng)用范圍比較廣,特別對(duì)于歷史訂單、歷史記錄、日志類(lèi)的業(yè)務(wù)比較友好。由于以上這些業(yè)務(wù)的數(shù)據(jù)量巨大,傳統(tǒng)的書(shū)庫(kù)很難hold住,而這類(lèi)應(yīng)用往往查詢(xún)量相對(duì)較少,查詢(xún)隨機(jī)性較大(無(wú)熱點(diǎn)訪(fǎng)問(wèn)),對(duì)于mysql,redis來(lái)說(shuō)存儲(chǔ)成本太高,hbase用在這里非常合適。
2.2 分析型應(yīng)用(約占兩成)
主要是指配合spark,MapReduce,storm等來(lái)做數(shù)據(jù)分析。由于以上這些計(jì)算組件對(duì)于中間狀態(tài)的保存具有局限性,當(dāng)然spark內(nèi)也有全局變量的概念,但是畢竟不是存儲(chǔ),不可能緩存一年的中間結(jié)果做cache。二有些應(yīng)用又需要用到可能很長(zhǎng)一段時(shí)間的數(shù)據(jù)做訓(xùn)練或者比對(duì),這個(gè)時(shí)候hbase的優(yōu)勢(shì)就可以發(fā)揮出來(lái)了。
2.3 在線(xiàn)讀寫(xiě)型應(yīng)用(約占一成)
可以理解為對(duì)mysql或者redis的一種替換做法,但是這類(lèi)應(yīng)用比較在意可用性、穩(wěn)定性以及sql、索引等支持。hbase的劣勢(shì)較大,應(yīng)用范圍較窄。只有在一種情況下會(huì)是用–mysql或者redis的容量實(shí)在無(wú)法支撐數(shù)據(jù)量了,而應(yīng)用對(duì)可用性的要求可以有一定成都的容忍。

三、HBase與傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的區(qū)別?

答:主要體現(xiàn)在以下幾個(gè)方面:1.數(shù)據(jù)類(lèi)型。關(guān)系數(shù)據(jù)庫(kù)采用關(guān)系模型,具有豐富的數(shù)據(jù)類(lèi)型和儲(chǔ)存方式。HBase則采用了更加簡(jiǎn)單的數(shù)據(jù)模型,它把數(shù)據(jù)儲(chǔ)存為未經(jīng)解釋的字符串,用戶(hù)可以把不同格式的結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)都序列化成字符串保存到HBase中,用戶(hù)需要自己編寫(xiě)程序把字符串解析成不同的數(shù)據(jù)類(lèi)型。
2.數(shù)據(jù)操作。關(guān)系數(shù)據(jù)庫(kù)中包含了豐富的操作,如插入、刪除、更新、查詢(xún)等,其中會(huì)涉及復(fù)雜的多表連接,通常是借助多個(gè)表之間的主外鍵關(guān)聯(lián)來(lái)實(shí)現(xiàn)的。HBase操作則不存在復(fù)雜的表與表之間的關(guān)系,只有簡(jiǎn)單的插入、查詢(xún)、刪除、清空等,因?yàn)镠Base在設(shè)計(jì)上就避免了復(fù)雜的表與表之間的關(guān)系,通常只采用單表的主鍵查詢(xún),所以它無(wú)法實(shí)現(xiàn)像關(guān)系數(shù)據(jù)庫(kù)中那樣的表與表之間的連接操作。
3.存儲(chǔ)模式。關(guān)系數(shù)據(jù)庫(kù)是基于行模式存儲(chǔ)的,元祖或行會(huì)被連續(xù)地存儲(chǔ)在磁盤(pán)頁(yè)中。在讀取數(shù)據(jù)時(shí),需要順序掃描每個(gè)元組,然后從中篩選出查詢(xún)所需要的屬性。如果每個(gè)元組只有少量屬性的值對(duì)于查詢(xún)是有用的,那么基于行模式存儲(chǔ)就會(huì)浪費(fèi)許多磁盤(pán)空間和內(nèi)存帶寬。HBase是基于列存儲(chǔ)的,每個(gè)列族都由幾個(gè)文件保存,不同列族的文件是分離的,它的優(yōu)點(diǎn)是:可以降低I/O開(kāi)銷(xiāo),支持大量并發(fā)用戶(hù)查詢(xún),因?yàn)閮H需要處理可以回答這些查詢(xún)的列,而不是處理與查詢(xún)無(wú)關(guān)的大量數(shù)據(jù)行;同一個(gè)列族中的數(shù)據(jù)會(huì)被一起進(jìn)行壓縮,由于同一列族內(nèi)的數(shù)據(jù)相似度較高,因此可以獲得較高的數(shù)據(jù)壓縮比。
4.數(shù)據(jù)索引。關(guān)系數(shù)據(jù)庫(kù)通常可以針對(duì)不同列構(gòu)建復(fù)雜的多個(gè)索引,以提高數(shù)據(jù)訪(fǎng)問(wèn)性能。與關(guān)系數(shù)據(jù)庫(kù)不同的是,HBase只有一個(gè)索引——行鍵,通過(guò)巧妙的設(shè)計(jì),HBase中所有訪(fǎng)問(wèn)方法,或者通過(guò)行鍵訪(fǎng)問(wèn),或者通過(guò)行鍵掃描,從而使整個(gè)系統(tǒng)不會(huì)慢下來(lái)。由于HBase位于Hadoop框架之上,因此可以使用Hadoop MapReduce來(lái)快速、高效地生成索引表。
6.數(shù)據(jù)維護(hù)。在關(guān)系數(shù)據(jù)庫(kù)中,更新操作會(huì)用最新的當(dāng)前值去替換記錄中原來(lái)的舊值,舊值被覆蓋后就不會(huì)存在。而在HBase中執(zhí)行更新操作時(shí),并不會(huì)刪除數(shù)據(jù)舊的版本,而是生成一個(gè)新的版本,舊有的版本仍舊保留。
7.可伸縮性。關(guān)系數(shù)據(jù)庫(kù)很難實(shí)現(xiàn)橫向擴(kuò)展,縱向擴(kuò)展的空間也比較有限。相反,HBase和BigTable這些分布式數(shù)據(jù)庫(kù)就是為了實(shí)現(xiàn)靈活的水平擴(kuò)展而開(kāi)發(fā)的,因此能夠輕易地通過(guò)在集群中增加或者減少硬件數(shù)量來(lái)實(shí)現(xiàn)性能的伸縮。

HBase也有自身的局限性,如HBase不支持事務(wù),因此無(wú)法實(shí)現(xiàn)跨行的原子性。

五、Hbase常用shell命令:
啟動(dòng)hbase
$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh
$ cd /usr/local/hbase
$ ./sbin/start-hbase.sh
$ ./bin/hbase shell
注:啟動(dòng)和關(guān)閉hadoop和hbase的順序一定是:啟動(dòng)hadoop,啟動(dòng)hbase,關(guān)閉hadoop,關(guān)閉hbase。
hbase 中創(chuàng)建表:
hbase>create ‘student’ , ‘Sname’ , ‘Ssex’, ‘Sage’
hbase 中查看創(chuàng)建的表:
hbase>list
hbase 中添加數(shù)據(jù):
hbase>put ‘student’ , ‘95001’ , ‘Ssex’, ‘Sage’
hbase 中查看數(shù)據(jù):
hbase>get ‘student’ , ‘95001’
hbase 中查詢(xún)表的全部數(shù)據(jù):
hbase>scan ‘student’
hbase 中刪除數(shù)據(jù):
hbase>delete ‘student’ , ‘95001’ , ‘Ssex’, ‘Sage’
disable 表的禁用:
hbase(main):038:0> disable ‘xt’
drop 表的刪除:
hbase(main):039:0> drop ‘xt’
count 統(tǒng)計(jì)表個(gè)數(shù):
hbase(main):034:0> count ‘xt’
truncate 清空表數(shù)據(jù):
hbase(main):035:0> truncate ‘xt’
put 添加數(shù)據(jù)
hbase>put ‘student’ , ‘Sname’ , ‘Ssex’, ‘Sage’
退出hbase:
hbase>exit
終止hbase運(yùn)行:
#stop-hbase.sh
開(kāi)啟hbase運(yùn)行:
#start-hbase.sh

大數(shù)據(jù)之pig

什么是Pig?
Pig 是一種數(shù)據(jù)流語(yǔ)言和運(yùn)行環(huán)境,常用于檢索和分析數(shù)據(jù)量較大的數(shù)據(jù)集。Pig包括兩部分:一是用于描述數(shù)據(jù)流的語(yǔ)言,稱(chēng)為Pig Latin;二是用于運(yùn)行Pig Latin程序的執(zhí)行環(huán)境。

Pig的常用命令:操作HDFS
ls、cd、cat、mkdir、pwd、copyFromLocal(上傳)、copyToLocal(下載)、register、define等。

操作Pig:

命令行:pig提供了一個(gè)shell終端與用戶(hù)進(jìn)行交互,用戶(hù)可以進(jìn)行增刪改查操作。
啟動(dòng)pig命令行模式,進(jìn)入本地模式:pig -x local

啟動(dòng)pig命令行模式,進(jìn)入集群模式:pig - x mapredcue/pig
(pig沒(méi)有API可以操作)

常用的PigLatin語(yǔ)句:
load:加載數(shù)據(jù)
foreach:逐行掃描
generate:提取列
filter:過(guò)濾
distinct:去重
order by:排序
group by:分組
join:多表查詢(xún)
union:聯(lián)合查詢(xún)
dump:把結(jié)果輸出到屏幕上
store:把結(jié)果保存到HDFS上

大數(shù)據(jù)之mahout

1.概念:

Mahout 是 Apache Software Foundation(ASF) 旗下的一個(gè)開(kāi)源項(xiàng)目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開(kāi)發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout包含許多實(shí)現(xiàn),包括聚類(lèi)、分類(lèi)、推薦過(guò)濾、頻繁子項(xiàng)挖掘。此外,通過(guò)使用 Apache Hadoop 庫(kù),Mahout 可以有效地?cái)U(kuò)展到云中。
2.主要特性:

雖然在開(kāi)源領(lǐng)域中相對(duì)較為年輕,但 Mahout 已經(jīng)提供了大量功能,特別是在集群和 CF 方面。Mahout 的主要特性包括:
  Taste CF。Taste 是 Sean Owen 在 SourceForge 上發(fā)起的一個(gè)針對(duì) CF 的開(kāi)源項(xiàng)目,并在 2008 年被贈(zèng)予 Mahout。
  一些支持 Map-Reduce 的集群實(shí)現(xiàn)包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift。
  Distributed Naive Bayes 和 Complementary Naive Bayes 分類(lèi)實(shí)現(xiàn)。
  針對(duì)進(jìn)化編程的分布式適用性功能。
  Matrix 和矢量庫(kù)。
  上述算法的示例。
3.內(nèi)容簡(jiǎn)介:
Mahout 的創(chuàng)始人 Grant Ingersoll 介紹了機(jī)器學(xué)習(xí)的基本概念,并演示了如何使用 Mahout 來(lái)實(shí)現(xiàn)文檔聚類(lèi)、做出推薦和組織內(nèi)容。

mahout手冊(cè):
有效的程序名稱(chēng)是:
arff.vector::從ARFF文件或目錄生成向量
baumwelch::用于無(wú)監(jiān)督HMM訓(xùn)練的Baum-Welch算法
buildforest ::建立隨機(jī)森林分類(lèi)器
頂篷::頂篷聚類(lèi)
cat::打印文件或資源,因?yàn)檫壿嫽貧w模型會(huì)看到它
cleansvd ::清理和驗(yàn)證SVD輸出
clusterdump:將集群輸出轉(zhuǎn)儲(chǔ)到文本
clusterpp ::群集中的群集群集輸出
cmdump ::以HTML或文本格式轉(zhuǎn)儲(chǔ)混淆矩陣
concatmatrices:將兩個(gè)具有相同基數(shù)的矩陣連接到一個(gè)矩陣中
cvb ::通過(guò)折疊的變化貝葉斯(0th導(dǎo)數(shù))的LDA
cvb0_local ::通過(guò)折疊的變化貝葉斯LDA,在本地內(nèi)存中。
describe:描述數(shù)據(jù)集中的字段和目標(biāo)變量
valuateFactorization ::計(jì)算針對(duì)探針的評(píng)級(jí)矩陣分解的RMSE和MAE
fkmeans ::模糊K均值聚類(lèi)
hmmpredict::通過(guò)給定的HMM生成隨機(jī)的觀(guān)測(cè)序列
itemsimilarity:計(jì)算基于項(xiàng)目的協(xié)同過(guò)濾的item-item-likeities
kmeans :: K均值聚類(lèi)
lucene.vector ::從Lucene索引生成向量
lucene2seq::從Lucene索引生成文本SequenceFiles
matrixdump :: CSV格式的轉(zhuǎn)儲(chǔ)矩陣
matrixmult ::取兩個(gè)矩陣的乘積
parallelALS::評(píng)級(jí)矩陣的ALS-WR分解
qualcluster ::運(yùn)行聚類(lèi)實(shí)驗(yàn)并以CSV格式匯總結(jié)果
Recommendationfactorized ::使用評(píng)級(jí)矩陣的因式分解來(lái)計(jì)算建議
基于requestitem ::使用基于項(xiàng)目的協(xié)作過(guò)濾來(lái)計(jì)算建議
regexconverter::基于正則表達(dá)式每行轉(zhuǎn)換文本文件
resplit::將一組SequenceFiles拆分為多個(gè)相等的拆分
rowid ::將SequenceFile <Text,VectorWritable>映射到{SequenceFile <IntWritable,VectorWritable>,SequenceFile <IntWritable,Text>}
rowsimilarity:計(jì)算矩陣行的成對(duì)相似度
runAdaptiveLogistic::使用可能經(jīng)過(guò)訓(xùn)練和驗(yàn)證的AdaptivelogisticRegression模型對(duì)新生產(chǎn)數(shù)據(jù)進(jìn)行評(píng)分
runlogistic ::針對(duì)CSV數(shù)據(jù)運(yùn)行邏輯回歸模型
seq2encoded::從文本序列文件生成編碼的稀疏向量
seq2sparse ::從文本序列文件生成稀疏向量
seqdirectory ::從目錄生成(文本)序列文件
seqdumper ::通用序列文件轉(zhuǎn)儲(chǔ)器
seqmailarchives ::從包含gzip壓縮郵件存檔的目錄中創(chuàng)建SequenceFile
seqwiki :: Wikipedia xml轉(zhuǎn)儲(chǔ)到序列文件
Spectralkmeans::頻譜k均值聚類(lèi)
split ::將輸入數(shù)據(jù)分為測(cè)試和訓(xùn)練集
splitDataset::將評(píng)級(jí)數(shù)據(jù)集分為訓(xùn)練和探針部分
ssvd::隨機(jī)SVD
streamingkmeans ::流式k均值聚類(lèi)
svd::Lanczos奇異值分解
testforest:測(cè)試隨機(jī)森林分類(lèi)器
testnb::測(cè)試基于向量的貝葉斯分類(lèi)器
trainAdaptiveLogistic ::訓(xùn)練AdaptivelogisticRegression模型
trainlogistic ::使用隨機(jī)梯度下降訓(xùn)練邏輯回歸
trainnb::訓(xùn)練基于向量的貝葉斯分類(lèi)器
轉(zhuǎn)置::對(duì)矩陣進(jìn)行轉(zhuǎn)置
validateAdaptiveLogistic ::針對(duì)保持?jǐn)?shù)據(jù)集驗(yàn)證AdaptivelogisticRegression模型
vecdist::計(jì)算一組向量(或簇或樹(shù)冠,它們必須適合內(nèi)存)與向量列表之間的距離
vectordump:將向量從序列文件轉(zhuǎn)儲(chǔ)到文本
viterbi::從給定的輸出狀態(tài)序列對(duì)隱藏狀態(tài)進(jìn)行維特比解碼

  • itemsimilarity參數(shù)
    通過(guò)mahout itemsimilarity –-help 查看:
    –input (-i) input, 設(shè)置數(shù)據(jù)輸入路徑
    –output (-o) output ,設(shè)置結(jié)果輸出路徑
    –similarityClassname (-s) ,設(shè)置相似度計(jì)算函數(shù):
    SIMILARITY_COOCCURRENCE,同現(xiàn)相似度
    SIMILARITY_LOGLIKELIHOOD, 對(duì)數(shù)似然相似度
    SIMILARITY_TANIMOTO_COEFFICIENT
    SIMILARITY_CITY_BLOCK, 曼哈頓距離相似度
    SIMILARITY_COSINE, 余弦相似度
    SIMILARITY_PEARSON_CORRELATION,皮爾森相似度
    SIMILARITY_EUCLIDEAN_DISTANCE, 歐氏距離相似度
    具體函數(shù)定義參照:http://blog.fens.me/mahout-recommend-engine/
    –maxSimilaritiesPerItem (-m), 物品最大相似物品數(shù)量,默認(rèn)是100;
    –maxPrefs (-mppu) ,最大評(píng)分,默認(rèn)是: 500
    –minPrefsPerUser (-mp) ,最小評(píng)分,默認(rèn)是1
    –booleanData , false評(píng)分 true 0、1
    –threshold (-tr) ,相似度過(guò)濾
    –randomSeed ,抽樣
    –tempDir tempDir ,臨時(shí)目錄

  • recommenditembased參數(shù)
    通過(guò)mahout recommenditembased–-help 查看:
    –input (-i) input, 設(shè)置數(shù)據(jù)輸入路徑
    –output (-o) output ,設(shè)置結(jié)果輸出路徑
    –similarityClassname (-s) ,設(shè)置相似度計(jì)算函數(shù)
    –numRecommendations (-n) ,每個(gè)用戶(hù)推薦數(shù)量,默認(rèn)10
    –usersFile,計(jì)算用戶(hù)推薦結(jié)果的用戶(hù)數(shù)據(jù)
    – itemsFile,推薦結(jié)果只包含該物品列表;
    –maxSimilaritiesPerItem (-m), 物品最大相似物品數(shù)量,默認(rèn)是100;
    –maxPrefs (-mppu) ,最大評(píng)分,默認(rèn)是: 500
    –minPrefsPerUser (-mp) ,最小評(píng)分,默認(rèn)是1
    –booleanData , false評(píng)分 true 0、1
    –threshold (-tr) ,相似度過(guò)濾
    –filterFile (-f) ,過(guò)濾用戶(hù)推薦物品
    –randomSeed ,抽樣
    –tempDir tempDir ,臨時(shí)目錄

  • 大數(shù)據(jù)之spark

    spark-shell 退出的正確操作是**:quit**
    二:spark相關(guān)概念
    Application 運(yùn)行在集群上的用戶(hù)程序,包含集群上的driver program 和多個(gè)executor線(xiàn)程組成;
    Driver program application運(yùn)行的main方法,并生sparkcontext;
    Cluster manager 集群資源管理器 ;
    Deploy mode 部署模式 用于區(qū)別driver program的運(yùn)行方式:集群模式(cluter mode),driver在集群內(nèi)部啟動(dòng);客戶(hù)端模式(client mode),driver進(jìn)程從集群外部啟動(dòng);
    Worker node 工作節(jié)點(diǎn),運(yùn)行application的節(jié)點(diǎn)
    Executor work node的上進(jìn)程,運(yùn)行task并保持?jǐn)?shù)據(jù)交互,每一個(gè)application有自己的executor
    Task 運(yùn)行于Executor中的任務(wù)單元,Spark應(yīng)用程序最終被劃分為經(jīng)過(guò)優(yōu)化后的多個(gè)任務(wù)的集合
    Job 由多個(gè)轉(zhuǎn)變構(gòu)建的并行計(jì)算任務(wù),具體為Spark中的action操作, 一個(gè)action就為一個(gè)job

    Scala當(dāng)中parallelize并行化的用法
    parallelize并行化集合是根據(jù)一個(gè)已經(jīng)存在的Scala集合創(chuàng)建的RDD對(duì)象。集合的里面的元素將會(huì)被拷貝進(jìn)入新創(chuàng)建出的一個(gè)可被并行操作的分布式數(shù)據(jù)集。
    eg:加載數(shù)據(jù)“1,2,3,4,5,6,7,8,9,10”:
    scala> val num=sc.parallelize(1 to 10)

    Spark-必會(huì)的基礎(chǔ)語(yǔ)法練習(xí):
    //創(chuàng)建一個(gè)List
    val lst0 = List(1,7,9,8,0,3,5,4,6,2)
    //將lst0中每個(gè)元素乘以10后生成一個(gè)新的集合
    val lst1 = lst0.map(_*10)
    println(lst1)

    //將lst0中的偶數(shù)取出來(lái)生成一個(gè)新的集合 val lst2 = lst0.filter(_%2 ==0) //將lst0排序后生成一個(gè)新的集合 val lst3 = lst0.sorted//反轉(zhuǎn)順序 val lst4 = lst0.sorted.reverse//將lst0中的元素4個(gè)一組,類(lèi)型為Iterator[List[Int]] val lst5 = lst0.grouped(4)//將Iterator轉(zhuǎn)換成List val lst6 = lst5.toList//將多個(gè)list壓扁成一個(gè)List val lst7 = lst6.flattenval lines = List("hello tom hello jerry", "hello jerry", "hello kitty") //先按空格切分,在壓平 val lst8= lines.map(_.split(" ")).flatten//并行計(jì)算求和 val lst9 =lst0.par.reduce(_+_) val lst10 = lst0.par.fold(0)(_+_) //化簡(jiǎn):reduce //將非特定順序的二元操作應(yīng)用到所有元素 val lst11= lst0.fold(0)(_+_) //安裝特點(diǎn)的順序 val lst12= lst0.foldLeft(0)(_+_)//折疊:有初始值(無(wú)特定順序) val lst13 = lst0.par.fold(10)(_+_) val lst14 = lst0.fold(10)((x,y ) => x+y)//折疊:有初始值(有特定順序) val lst15 = lst0.par.foldLeft(10)(_+_) val lst16 = lst0.foldLeft(10)((x,y)=>x+y)//聚合 val arr = List(List(1, 2, 3), List(3, 4, 5), List(2), List(0)) //聚合操作, _+_.sum 初始值+集合中第一個(gè)元素的sum // _+_ 各個(gè)元素的sum,依次相加求和 val i = arr.aggregate(0)(_+_.sum,_+_)val l1 = List(5,6,4,7) val l2 = List(1,2,3,4) //求并集 val ls0 = l1.union(l2)//求交集 val ls1 = l1.intersect(l2)//求差集 val ls2 = l1.diff(l2)val lines = List("hello tom hello jerry", "hello jerry", "hello kitty")//wordcountlines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2)) lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).map(t=>(t._1, t._2.size)).toList.sortBy(_._2).reverse

    spark中函數(shù)用法
    sc.parallelize():并行化
    map():一種可迭代的鍵值對(duì)(key/value)結(jié)構(gòu)。
    filter():遍歷整個(gè)集合,你提供一個(gè)判斷條件(函數(shù)),來(lái)過(guò)濾集合元素
    toDebugString:可以輸出你的RDD的組成
    split():處理字符串
    textFile():讀取文件
    flatMap():將函數(shù)產(chǎn)出的集合串接在一起。
    foreach:用于調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù)。
    sparkContext:

    大數(shù)據(jù)之flume

    flume命令:
    help 幫助顯示此幫助文本
    agent 代理運(yùn)行一個(gè)flume代理
    avro-client 運(yùn)行avro客戶(hù)端
    password 創(chuàng)建用于flume配置的密碼文件
    version 版本顯示flume版本信息

    命令選項(xiàng):
    –conf,-c 使用目錄下的配置文件
    –classpath,-C 追加到classpath
    –dryrun,-d 實(shí)際上并沒(méi)有啟動(dòng)Flume,只是打印命令
    –plugins-path colon-separated list of plugins.d directories. See the
    plugins.d section in the user guide for more details.
    Default: $FLUME_HOME/plugins.d
    -Dproperty=value sets a Java system property value
    -Xproperty=value sets a Java -X option

    agent options:
    –conf-file,-f 指定一個(gè)配置文件(必選)
    –name,-n 這個(gè)代理的名稱(chēng)(必填)
    –help,-h -h顯示幫助文本

    avro-client options:
    –rpcProps,-P RPC客戶(hù)端屬性文件與服務(wù)器連接參數(shù)
    –host,-H 主機(jī)名,事件將被發(fā)送到該主機(jī)
    –port,-p <端口的avro源的>端口
    –dirname

    目錄流到avro源
    –filename,-F 文本文件流到avro源(默認(rèn):std輸入)
    –headerFile,-R File 其中每個(gè)新行上都包含作為鍵/值對(duì)的事件頭
    –help,-h 顯示幫助文本

    Either --rpcProps or both --host and --port must be specified.

    password options:
    –outfile 將存儲(chǔ)已編碼密碼的文件輸出

    注意,如果指定了目錄,那么總是先包含它在類(lèi)路徑中。

    大數(shù)據(jù)之hive

    概述:
    hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,用來(lái)進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲(chǔ)、查詢(xún)和分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。hive數(shù)據(jù)倉(cāng)庫(kù)工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供SQL查詢(xún)功能,能將SQL語(yǔ)句轉(zhuǎn)變成MapReduce任務(wù)來(lái)執(zhí)行。Hive的優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過(guò)類(lèi)似SQL語(yǔ)句實(shí)現(xiàn)快速M(fèi)apReduce統(tǒng)計(jì),使MapReduce變得更加簡(jiǎn)單,而不必開(kāi)發(fā)專(zhuān)門(mén)的MapReduce應(yīng)用程序。hive是十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析和Windows注冊(cè)表文件。

    hive語(yǔ)法與MySQL類(lèi)似

    總結(jié)

    以上是生活随笔為你收集整理的Hadoop各组件详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。