Hadoop各组件详解
大數(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ù)率
常用命令:
大數(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)
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
–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)題。
- 上一篇: 关于WPF界面框架合集
- 下一篇: 理解http的幂等性