?基礎(chǔ)|想要成為大數(shù)據(jù)工程師?你需要掌握以下知識(shí)(下)
http://mp.weixin.qq.com/s?src=3×tamp=1478140385&ver=1&signature=XDh44AJ0Er8YeNxFKyl80qTwQyOxseg8ZHWb5CHojFcJRbdzDcohd-yIuiTNYZc7e98CzcWHoDJId5*w2YgMOje8c-JrZ0Ac8yZk9bycJ-dhkpCbGiCV79yLVarpOrtRiN8jwgGfDXjGeI5SLL5FYx-iZyVGRbAvJ2GC5Cy3gPA=
文| 林肯公園(拒絕任何不標(biāo)明來源的轉(zhuǎn)載罢杉,轉(zhuǎn)發(fā)請(qǐng)標(biāo)明本文來源36大數(shù)據(jù))
接上篇《想要成為大數(shù)據(jù)工程師趟畏?你需要掌握以下知識(shí)(上)》。
在第一篇文章中滩租,我們?yōu)榇蠹医榻B了大數(shù)據(jù)基礎(chǔ)平臺(tái)架構(gòu)和部分大數(shù)據(jù)工程師所需的技能赋秀,其中包括大數(shù)據(jù)通用處理平臺(tái)、分布式存儲(chǔ)律想、資源調(diào)度猎莲、機(jī)器學(xué)習(xí)工具、數(shù)據(jù)分析/數(shù)據(jù)倉庫(SQL類)技即、消息隊(duì)列著洼、流式計(jì)算、日志收集姥份、編程語言和數(shù)據(jù)分析挖掘等方面需要掌握的技術(shù)郭脂。
第一部分介紹完成后,有小伙伴表示要學(xué)這么多知識(shí)才能成為大數(shù)據(jù)工程師澈歉,這也太難了展鸡。對(duì)此,筆者表示埃难,孩子莹弊,你還是太單純了,那只是第一部分涡尘。其實(shí)想想我們從小學(xué)到大學(xué)需要學(xué)的課程忍弛,這根本就是九牛一毛嘛,萬里長征不是一天走完的考抄,長城也不是一天能夠建好的细疚。要成為大數(shù)據(jù)工程師,那么就需要循序漸進(jìn)的掌握整個(gè)大數(shù)據(jù)系統(tǒng)里所包含的知識(shí)川梅,你可以一個(gè)系列一個(gè)系列的學(xué)疯兼。比如說然遏,你先學(xué)了數(shù)據(jù)分析挖掘所需掌握的技能MATLAB、SPSS和SAS后吧彪,找到數(shù)據(jù)分析師的工作待侵,然后繼續(xù)學(xué)其他的技能,最后成為大數(shù)據(jù)工程師姨裸。
我們想要告訴大家的是成為大數(shù)據(jù)工程師需要掌握的知識(shí)體系秧倾,而作為初學(xué)者,你可以先從簡單的入手傀缩,慢慢在學(xué)更深的知識(shí)那先,拿出高考的恒心和堅(jiān)持來,肯定能行赡艰。
值得一提的是胃榕,目前大數(shù)據(jù)工程師的月薪都是20K起,月收入兩萬的薪資是不是很誘人瞄摊?而且大數(shù)據(jù)工程師是非常容易找到工作的,所以……Why not?
不扯犢子了苦掘,繼續(xù)說要成為大數(shù)據(jù)工程師需要掌握的技能第二部分知識(shí)點(diǎn)换帜,這一部分內(nèi)容主要包括數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)和算法三個(gè)分支鹤啡。讓我們開始吧惯驼。
數(shù)據(jù)可視化
1、R
R不僅是編程語言递瑰,同時(shí)也R具有強(qiáng)大的統(tǒng)計(jì)計(jì)算功能和便捷的數(shù)據(jù)可視化系統(tǒng)祟牲。在此,推薦大家看一本書抖部,這本書叫做《R數(shù)據(jù)可視化手冊(cè)》说贝。
《R數(shù)據(jù)可視化手冊(cè)》重點(diǎn)講解R的繪圖系統(tǒng),指導(dǎo)讀者通過繪圖系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)可視化慎颗。書中提供了快速繪制高質(zhì)量圖形的150多種技巧乡恕,每個(gè)技巧用來解決一個(gè)特定的繪圖需求。讀者可以通過目錄快速定位到自己遇到的問題俯萎,查閱相應(yīng)的解決方案傲宜。同時(shí),作者在大部分的技巧之后會(huì)進(jìn)行一些討論和延伸夫啊,介紹一些總結(jié)出的繪圖技巧函卒。 《R數(shù)據(jù)可視化手冊(cè)》側(cè)重于解決具體問題,是R數(shù)據(jù)可視化的實(shí)戰(zhàn)秘籍撇眯”ㄇ叮《R數(shù)據(jù)可視化手冊(cè)》中絕大多數(shù)的繪圖案例都是以強(qiáng)大虱咧、靈活制圖而著稱的R包ggplot2實(shí)現(xiàn)的,充分展現(xiàn)了ggplot2生動(dòng)沪蓬、翔實(shí)的一面彤钟。從如何畫點(diǎn)圖、線圖跷叉、柱狀圖逸雹,到如何添加注解、修改坐標(biāo)軸和圖例云挟,再到分面的使用和顏色的選取等梆砸,本書都有清晰的講解。
此書在網(wǎng)上就可以購買得到园欣,當(dāng)然也有電子版帖世。在此,我們放出一張用R做出來的可視化作品沸枯。
D3.js
D3 (Data-Driven Documents)是基于數(shù)據(jù)的文檔操作javascript庫日矫,D3能夠把數(shù)據(jù)和HTML、SVG绑榴、CSS結(jié)合起來哪轿,創(chuàng)造出可交互的數(shù)據(jù)圖表。
ECharts
ECharts是一款數(shù)據(jù)可視化的純JavaScript圖標(biāo)庫翔怎,其擁有混搭圖表窃诉、拖拽重計(jì)算、制作數(shù)據(jù)視圖赤套、動(dòng)態(tài)類型切換飘痛、圖例開關(guān)、數(shù)據(jù)區(qū)域選擇容握、值域漫游宣脉、多維度堆積等非常豐富的功能。
ECharts (Enterprise Charts 商業(yè)產(chǎn)品圖表庫)是基于HTML5 Canvas的一個(gè)純Javascript圖表庫唯沮,提供直觀脖旱,生動(dòng),可交互介蛉,可個(gè)性化定制的數(shù)據(jù)可視化圖表萌庆。創(chuàng)新的拖拽重計(jì)算、數(shù)據(jù)視圖币旧、值域漫游等特性大大增強(qiáng)了用戶體驗(yàn)践险,賦予了用戶對(duì)數(shù)據(jù)進(jìn)行挖掘、整合的能力。
ECharts提供商業(yè)產(chǎn)品常用圖表庫巍虫,底層基于ZRender彭则,創(chuàng)建了坐標(biāo)系,圖例占遥,提示俯抖,工具箱等基礎(chǔ)組件,并在此上構(gòu)建出折線圖(區(qū)域圖)瓦胎、柱狀圖(條狀圖)芬萍、散點(diǎn)圖(氣泡圖)、K線圖搔啊、餅圖(環(huán)形圖)柬祠、地圖、力導(dǎo)向布局圖负芋,同時(shí)支持任意維度的堆積和多圖表混合展現(xiàn)漫蛔。
Excel
Excel中大量的公式函數(shù)可以應(yīng)用選擇,使用Microsoft Excel可以執(zhí)行計(jì)算旧蛾,分析信息并管理電子表格或網(wǎng)頁中的數(shù)據(jù)信息列表與數(shù)據(jù)資料圖表制作莽龟,可以實(shí)現(xiàn)許多方便的功能,帶給使用者方便锨天。與其配套組合的有:Word轧房、PowerPoint、Access绍绘、InfoPath及Outlook,Publisher
事實(shí)上,Excel完全可以滿足大家日常工作中圖表制作和數(shù)據(jù)可視化的需求迟赃,所以陪拘,想要進(jìn)入大數(shù)據(jù)行業(yè),學(xué)好Excel是基礎(chǔ)纤壁。
Python
Python 的科學(xué)棧相當(dāng)成熟左刽,各種應(yīng)用場(chǎng)景都有相關(guān)的模塊,包括機(jī)器學(xué)習(xí)和數(shù)據(jù)分析酌媒。數(shù)據(jù)可視化是發(fā)現(xiàn)數(shù)據(jù)和展示結(jié)果的重要一環(huán)欠痴,只不過過去以來,相對(duì)于 R 這樣的工具秒咨,發(fā)展還是落后一些喇辽。
幸運(yùn)的是,過去幾年出現(xiàn)了很多新的Python數(shù)據(jù)可視化庫雨席,彌補(bǔ)了一些這方面的差距菩咨。matplotlib 已經(jīng)成為事實(shí)上的數(shù)據(jù)可視化方面最主要的庫,此外還有很多其他庫,例如vispy抽米,bokeh特占, seaborn, pyga云茸, folium 和 networkx是目,這些庫有些是構(gòu)建在 matplotlib 之上,還有些有其他一些功能标捺。
機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)基礎(chǔ)
聚類
將物理或抽象對(duì)象的集合分成由類似的對(duì)象組成的多個(gè)類的過程被稱為聚類懊纳。由聚類所生成的簇是一組數(shù)據(jù)對(duì)象的集合,這些對(duì)象與同一個(gè)簇中的對(duì)象彼此相似宜岛,與其他簇中的對(duì)象相異长踊。“物以類聚萍倡,人以群分”身弊,在自然科學(xué)和社會(huì)科學(xué)中,存在著大量的分類問題列敲。聚類分析又稱群分析阱佛,它是研究(樣品或指標(biāo))分類問題的一種統(tǒng)計(jì)分析方法。聚類分析起源于分類學(xué)戴而,但是聚類不等于分類凑术。聚類與分類的不同在于,聚類所要求劃分的類是未知的所意。聚類分析內(nèi)容非常豐富淮逊,有系統(tǒng)聚類法、有序樣品聚類法扶踊、動(dòng)態(tài)聚類法泄鹏、模糊聚類法、圖論聚類法秧耗、聚類預(yù)報(bào)法等备籽。
在數(shù)據(jù)挖掘中,聚類也是很重要的一個(gè)概念分井。
傳統(tǒng)的聚類分析計(jì)算方法主要有如下幾種:
1车猬、劃分方法(partitioning methods)
2、層次方法(hierarchical methods)
3尺锚、基于密度的方法(density-based methods)
4珠闰、基于網(wǎng)格的方法(grid-based methods)
5、基于模型的方法(model-based methods)
當(dāng)然聚類方法還有:傳遞閉包法瘫辩,布爾矩陣法铸磅,直接聚類法赡矢,相關(guān)性分析聚類,基于統(tǒng)計(jì)的聚類方法等阅仔。
時(shí)間序列
時(shí)間序列(或稱動(dòng)態(tài)數(shù)列)是指將同一統(tǒng)計(jì)指標(biāo)的數(shù)值按其發(fā)生的時(shí)間先后順序排列而成的數(shù)列吹散。時(shí)間序列分析的主要目的是根據(jù)已有的歷史數(shù)據(jù)對(duì)未來進(jìn)行預(yù)測(cè)。構(gòu)成要素:長期趨勢(shì)八酒,季節(jié)變動(dòng)空民,循環(huán)變動(dòng),不規(guī)則變動(dòng)羞迷。
種類:
絕對(duì)數(shù)時(shí)間序列
時(shí)期序列:由時(shí)期總量指標(biāo)排列而成的時(shí)間序列 界轩。
相對(duì)數(shù)時(shí)間序列
把一系列同種相對(duì)數(shù)指標(biāo)按時(shí)間先后順序排列而成的時(shí)間序列叫做相對(duì)數(shù)時(shí)間序列。
平均數(shù)時(shí)間序列
平均數(shù)時(shí)間序列是指由一系列同類平均指標(biāo)按時(shí)間先后順序排列的時(shí)間序列衔瓮。
保證序列中各期指標(biāo)數(shù)值的可比性
(一)時(shí)期長短最好一致(二)總體范圍應(yīng)該一致(三)指標(biāo)的經(jīng)濟(jì)內(nèi)容應(yīng)該統(tǒng)一(四)計(jì)算方法應(yīng)該統(tǒng)一(五)計(jì)算價(jià)格和計(jì)量單位可比
推薦系統(tǒng)
定義:它是利用電子商務(wù)網(wǎng)站向客戶提供商品信息和建議浊猾,幫助用戶決定應(yīng)該購買什么產(chǎn)品,模擬銷售人員幫助客戶完成購買過程”热鞍。
推薦系統(tǒng)有3個(gè)重要的模塊:用戶建模模塊葫慎、推薦對(duì)象建模模塊、推薦算法模塊薇宠。通用的推薦系統(tǒng)模型流程如圖偷办。推薦系統(tǒng)把用戶模型中興趣需求信息和推薦對(duì)象模型中的特征信息匹配,同時(shí)使用相應(yīng)的推薦算法進(jìn)行計(jì)算篩選澄港,找到用戶可能感興趣的推薦對(duì)象椒涯,然后推薦給用戶。
回歸分析
回歸分析(regression analysis)是確定兩種或兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計(jì)分析方法回梧。運(yùn)用十分廣泛废岂,回歸分析按照涉及的變量的多少,分為一元回歸和多元回歸分析狱意;在線性回歸中泪喊,按照因變量的多少,可分為簡單回歸分析和多重回歸分析髓涯;按照自變量和因變量之間的關(guān)系類型,可分為線性回歸分析和非線性回歸分析哈扮。如果在回歸分析中纬纪,只包括一個(gè)自變量和一個(gè)因變量,且二者的關(guān)系可用一條直線近似表示滑肉,這種回歸分析稱為一元線性回歸分析包各。如果回歸分析中包括兩個(gè)或兩個(gè)以上的自變量,且自變量之間存在線性相關(guān)靶庙,則稱為多元線性回歸分析问畅。
文本挖掘
文本挖掘有時(shí)也被稱為文字探勘、文本數(shù)據(jù)挖掘等,大致相當(dāng)于文字分析护姆,一般指文本處理過程中產(chǎn)生高質(zhì)量的信息矾端。高質(zhì)量的信息通常通過分類和預(yù)測(cè)來產(chǎn)生,如模式識(shí)別卵皂。文本挖掘通常涉及輸入文本的處理過程(通常進(jìn)行分析秩铆,同時(shí)加上一些衍生語言特征以及消除雜音,隨后插入到數(shù)據(jù)庫中) 灯变,產(chǎn)生結(jié)構(gòu)化數(shù)據(jù)殴玛,并最終評(píng)價(jià)和解釋輸出√砘觯’高品質(zhì)’的文本挖掘通常是指某種組合的相關(guān)性滚粟,新穎性和趣味性。典型的文本挖掘方法包括文本分類刃泌,文本聚類凡壤,概念/實(shí)體挖掘,生產(chǎn)精確分類蔬咬,觀點(diǎn)分析鲤遥,文檔摘要和實(shí)體關(guān)系模型(即,學(xué)習(xí)已命名實(shí)體之間的關(guān)系) 林艘。
決策樹
決策樹(Decision Tree)是在已知各種情況發(fā)生概率的基礎(chǔ)上盖奈,通過構(gòu)成決策樹來求取凈現(xiàn)值的期望值大于等于零的概率,評(píng)價(jià)項(xiàng)目風(fēng)險(xiǎn)狐援,判斷其可行性的決策分析方法钢坦,是直觀運(yùn)用概率分析的一種圖解法。由于這種決策分支畫成圖形很像一棵樹的枝干啥酱,故稱決策樹爹凹。在機(jī)器學(xué)習(xí)中,決策樹是一個(gè)預(yù)測(cè)模型镶殷,他代表的是對(duì)象屬性與對(duì)象值之間的一種映射關(guān)系禾酱。Entropy = 系統(tǒng)的凌亂程度,使用算法ID3, C4.5和C5.0生成樹算法使用熵绘趋。這一度量是基于信息學(xué)理論中熵的概念颤陶。
決策樹是一種樹形結(jié)構(gòu),其中每個(gè)內(nèi)部節(jié)點(diǎn)表示一個(gè)屬性上的測(cè)試陷遮,每個(gè)分支代表一個(gè)測(cè)試輸出滓走,每個(gè)葉節(jié)點(diǎn)代表一種類別。
分類樹(決策樹)是一種十分常用的分類方法帽馋。他是一種監(jiān)管學(xué)習(xí)搅方,所謂監(jiān)管學(xué)習(xí)就是給定一堆樣本比吭,每個(gè)樣本都有一組屬性和一個(gè)類別,這些類別是事先確定的姨涡,那么通過學(xué)習(xí)得到一個(gè)分類器衩藤,這個(gè)分類器能夠?qū)π鲁霈F(xiàn)的對(duì)象給出正確的分類。這樣的機(jī)器學(xué)習(xí)就被稱之為監(jiān)督學(xué)習(xí)绣溜。
支持向量機(jī)
支持向量機(jī)(Support Vector Machine慷彤,SVM)是Corinna Cortes和Vapnik等于1995年首先提出的,它在解決小樣本怖喻、非線性及高維模式識(shí)別中表現(xiàn)出許多特有的優(yōu)勢(shì)底哗,并能夠推廣應(yīng)用到函數(shù)擬合等其他機(jī)器學(xué)習(xí)問題中。
在機(jī)器學(xué)習(xí)中锚沸,支持向量機(jī)(SVM跋选,還支持矢量網(wǎng)絡(luò))是與相關(guān)的學(xué)習(xí)算法有關(guān)的監(jiān)督學(xué)習(xí)模型,可以分析數(shù)據(jù)哗蜈,識(shí)別模式前标,用于分類和回歸分析。
貝葉斯分類
貝葉斯分類是一類分類算法的總稱距潘,這類算法均以貝葉斯定理為基礎(chǔ)炼列,故統(tǒng)稱為貝葉斯分類。貝葉斯分類是統(tǒng)計(jì)學(xué)的分類方法音比,其分析方法的特點(diǎn)是使用概率來表示所有形式的不確定性俭尖,學(xué)習(xí)或推理都要用概率規(guī)則來實(shí)現(xiàn)。
神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)可以指向兩種洞翩,一個(gè)是生物神經(jīng)網(wǎng)絡(luò)稽犁,一個(gè)是人工神經(jīng)網(wǎng)絡(luò)。人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks骚亿,簡寫為ANNs)也簡稱為神經(jīng)網(wǎng)絡(luò)(NNs)或稱作連接模型(Connection Model)已亥,它是一種模仿動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,進(jìn)行分布式并行信息處理的算法數(shù)學(xué)模型来屠。這種網(wǎng)絡(luò)依靠系統(tǒng)的復(fù)雜程度虑椎,通過調(diào)整內(nèi)部大量節(jié)點(diǎn)之間相互連接的關(guān)系,從而達(dá)到處理信息的目的俱笛。
人工神經(jīng)網(wǎng)絡(luò):是一種應(yīng)用類似于大腦神經(jīng)突觸聯(lián)接的結(jié)構(gòu)進(jìn)行信息處理的數(shù)學(xué)模型捆姜。在工程與學(xué)術(shù)界也常直接簡稱為“神經(jīng)網(wǎng)絡(luò)”或類神經(jīng)網(wǎng)絡(luò)。
機(jī)器學(xué)習(xí)工具
**Mahout **
Mahout 是 Apache Software Foundation(ASF) 旗下的一個(gè)開源項(xiàng)目嫂粟,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序墨缘。Mahout包含許多實(shí)現(xiàn)星虹,包括聚類零抬、分類、推薦過濾宽涌、頻繁子項(xiàng)挖掘平夜。此外,通過使用 Apache Hadoop 庫卸亮,Mahout 可以有效地?cái)U(kuò)展到云中忽妒。
Spark Mlib
MLlib是一個(gè)機(jī)器學(xué)習(xí)庫,它提供了各種各樣的算法兼贸,這些算法用來在集群上針對(duì)分類段直、回歸、聚類溶诞、協(xié)同過濾等(可以在 Machine learning 上查看Toptal的文章鸯檬,來獲取更過的信息)。其中一些算法也可以應(yīng)用到流數(shù)據(jù)上螺垢,例如使用普通最小二乘法或者K均值聚類(還有更多)來計(jì)算線性回歸喧务。Apache Mahout(一個(gè)針對(duì)Hadoop的機(jī)器學(xué)習(xí)庫)已經(jīng)脫離MapReduce,轉(zhuǎn)而加入Spark MLlib枉圃。
TensorFlow (Google 系)
TensorFlow是谷歌基于DistBelief進(jìn)行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng)功茴,其命名來源于本身的運(yùn)行原理。Tensor(張量)意味著N維數(shù)組孽亲,F(xiàn)low(流)意味著基于數(shù)據(jù)流圖的計(jì)算坎穿,TensorFlow為張量從圖象的一端流動(dòng)到另一端計(jì)算過程。TensorFlow是將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)傳輸至人工智能神經(jīng)網(wǎng)中進(jìn)行分析和處理過程的系統(tǒng)墨林。
TensorFlow可被用于語音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域赁酝,對(duì)2011年開發(fā)的深度學(xué)習(xí)基礎(chǔ)架構(gòu)DistBelief進(jìn)行了各方面的改進(jìn),它可在小到一部智能手機(jī)旭等、大到數(shù)千臺(tái)數(shù)據(jù)中心服務(wù)器的各種設(shè)備上運(yùn)行酌呆。TensorFlow將完全開源,任何人都可以用搔耕。
Amazon Machine Learning
Amazon Machine Learning 是一項(xiàng)面向各個(gè)水平階層開發(fā)人員的服務(wù)拗馒,可以幫助他們利用機(jī)器學(xué)習(xí)技術(shù)物赶。Amazon Machine Learning 提供可視化的工具和向?qū)В笇?dǎo)您按部就班地創(chuàng)建機(jī)器學(xué)習(xí)模型,而無需學(xué)習(xí)復(fù)雜的機(jī)器學(xué)習(xí)算法和技術(shù)船惨。當(dāng)您的模型準(zhǔn)備好以后,Amazon Machine Learning 只要使用簡單的 API 即可讓您的應(yīng)用程序輕松獲得預(yù)測(cè)能力昨寞,而無需實(shí)現(xiàn)自定義預(yù)測(cè)生成碼或管理任何基礎(chǔ)設(shè)施关划。
Amazon Machine Learning 采用與 Amazon 內(nèi)部數(shù)據(jù)科學(xué)家社區(qū)多年來一直使用的機(jī)器學(xué)習(xí)技術(shù)相同的技術(shù),具有穩(wěn)定可靠官辈、容易擴(kuò)展的特點(diǎn)箱舞。此服務(wù)使用強(qiáng)大的算法通過發(fā)現(xiàn)已有數(shù)據(jù)中的規(guī)律來創(chuàng)建機(jī)器學(xué)習(xí)模型遍坟。然后,Amazon Machine Learning 會(huì)使用這些模型來處理新數(shù)據(jù)并為應(yīng)用程序生成預(yù)測(cè)結(jié)果晴股。
Amazon Machine Learning 具有極強(qiáng)的可擴(kuò)展性愿伴,每天可以生成數(shù)十億條預(yù)測(cè)結(jié)果,并以高吞吐量實(shí)時(shí)地將其送出电湘。使用 Amazon Machine Learning 不需要對(duì)硬件或軟件事先投入資金隔节,只需要根據(jù)使用量付費(fèi),所以不妨先從小規(guī)模做起寂呛,然后根據(jù)應(yīng)用程序的發(fā)展情況再酌情進(jìn)行擴(kuò)展怎诫。
DMTK (微軟分布式機(jī)器學(xué)習(xí)工具)
DMTK 是微軟分布式機(jī)器學(xué)習(xí)工具包。
DMTK 包括以下幾個(gè)項(xiàng)目:
DMTK framework(Multiverso): 參數(shù)服務(wù)器架構(gòu)的機(jī)器學(xué)習(xí)
LightLDA: 用于大規(guī)模主題模型的可擴(kuò)展昧谊、快速刽虹、輕量級(jí)系統(tǒng).
Distributed word embedding:文字嵌入分布式算法.
Distributed skipgram mixture: 多義文字嵌入分布式算法
算法
一致性
數(shù)據(jù)一致性通常指關(guān)聯(lián)數(shù)據(jù)之間的邏輯關(guān)系是否正確和完整。而數(shù)據(jù)存儲(chǔ)的一致性模型則可以認(rèn)為是存儲(chǔ)系統(tǒng)和數(shù)據(jù)使用者之間的一種約定呢诬。如果使用者遵循這種約定涌哲,則可以得到系統(tǒng)所承諾的訪問結(jié)果常用的一致性模型有:
a、嚴(yán)格一致性(linearizability, strict/atomic Consistency):讀出的數(shù)據(jù)始終為最近寫入的數(shù)據(jù)尚镰。這種一致性只有全局時(shí)鐘存在時(shí)才有可能阀圾,在分布式網(wǎng)絡(luò)環(huán)境不可能實(shí)現(xiàn)。
b狗唉、順序一致性(sequential consistency):所有使用者以同樣的順序看到對(duì)同一數(shù)據(jù)的操作初烘,但是該順序不一定是實(shí)時(shí)的。
c分俯、因果一致性(causal consistency):只有存在因果關(guān)系的寫操作才要求所有使用者以相同的次序看到肾筐,對(duì)于無因果關(guān)系的寫入則并行進(jìn)行,無次序保證缸剪。因果一致性可以看做對(duì)順序一致性性能的一種優(yōu)化吗铐,但在實(shí)現(xiàn)時(shí)必須建立與維護(hù)因果依賴圖,是相當(dāng)困難的杏节。
d唬渗、管道一致性(PRAM/FIFO consistency):在因果一致性模型上的進(jìn)一步弱化,要求由某一個(gè)使用者完成的寫操作可以被其他所有的使用者按照順序的感知到奋渔,而從不同使用者中來的寫操作則無需保證順序镊逝,就像一個(gè)一個(gè)的管道一樣。 相對(duì)來說比較容易實(shí)現(xiàn)嫉鲸。
e撑蒜、弱一致性(weak consistency):只要求對(duì)共享數(shù)據(jù)結(jié)構(gòu)的訪問保證順序一致性。對(duì)于同步變量的操作具有順序一致性,是全局可見的座菠,且只有當(dāng)沒有寫操作等待處理時(shí)才可進(jìn)行染突,以保證對(duì)于臨界區(qū)域的訪問順序進(jìn)行。在同步時(shí)點(diǎn)辈灼,所有使用者可以看到相同的數(shù)據(jù)。
f也榄、 釋放一致性(release consistency):弱一致性無法區(qū)分使用者是要進(jìn)入臨界區(qū)還是要出臨界區(qū)巡莹, 釋放一致性使用兩個(gè)不同的操作語句進(jìn)行了區(qū)分。需要寫入時(shí)使用者acquire該對(duì)象甜紫,寫完后release降宅,acquire-release之間形成了一個(gè)臨界區(qū),提供 釋放一致性也就意味著當(dāng)release操作發(fā)生后囚霸,所有使用者應(yīng)該可以看到該操作腰根。
g、最終一致性(eventual consistency):當(dāng)沒有新更新的情況下拓型,更新最終會(huì)通過網(wǎng)絡(luò)傳播到所有副本點(diǎn)额嘿,所有副本點(diǎn)最終會(huì)一致,也就是說使用者在最終某個(gè)時(shí)間點(diǎn)前的中間過程中無法保證看到的是新寫入的數(shù)據(jù)劣挫〔嵫可以采用最終一致性模型有一個(gè)關(guān)鍵要求:讀出陳舊數(shù)據(jù)是可以接受的。
h压固、delta consistency:系統(tǒng)會(huì)在delta時(shí)間內(nèi)達(dá)到一致球拦。這段時(shí)間內(nèi)會(huì)存在一個(gè)不一致的窗口,該窗口可能是因?yàn)閘og shipping的過程導(dǎo)致帐我。這是書上的原話坎炼。。我也搞不很清楚拦键。谣光。 數(shù)據(jù)庫完整性(Database Integrity)是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性。數(shù)據(jù)庫完整性由各種各樣的完整性約束來保證矿咕,因此可以說數(shù)據(jù)庫完整性設(shè)計(jì)就是數(shù)據(jù)庫完整性約束的設(shè)計(jì)抢肛。包括實(shí)體完整性。域完整性碳柱。參照完整性捡絮。用戶定義完整性×停可以主鍵福稳。check約束。外鍵來一一實(shí)現(xiàn)瑞侮。這個(gè)使用較多
paxos
Paxos算法是萊斯利·蘭伯特(Leslie Lamport的圆,就是 LaTeX 中的”La”鼓拧,此人現(xiàn)在在微軟研究院)于1990年提出的一種基于消息傳遞的一致性算法。這個(gè)算法被認(rèn)為是類似算法中最有效的越妈。
Paxos 算法解決的問題是一個(gè)分布式系統(tǒng)如何就某個(gè)值(決議)達(dá)成一致季俩。一個(gè)典型的場(chǎng)景是,在一個(gè)分布式數(shù)據(jù)庫系統(tǒng)中梅掠,如果各節(jié)點(diǎn)的初始狀態(tài)一致酌住,每個(gè)節(jié)點(diǎn)執(zhí)行相同的操作序列,那么他們最后能得到一個(gè)一致的狀態(tài)阎抒。為保證每個(gè)節(jié)點(diǎn)執(zhí)行相同的命令序列酪我,需要在每一條指令上執(zhí)行一個(gè)“一致性算法”以保證每個(gè)節(jié)點(diǎn)看到的指令一致。一個(gè)通用的一致性算法可以應(yīng)用在許多場(chǎng)景中且叁,是分布式計(jì)算中的重要問題都哭。因此從20世紀(jì)80年代起對(duì)于一致性算法的研究就沒有停止過。節(jié)點(diǎn)通信存在兩種模型:共享內(nèi)存(Shared memory)和消息傳遞(Messages passing)逞带。Paxos 算法就是一種基于消息傳遞模型的一致性算法欺矫。
raft
Raft是由Stanford提出的一種更易理解的一致性算法,意在取代目前廣為使用的Paxos算法展氓。目前汇陆,在各種主流語言中都有了一些開源實(shí)現(xiàn),比如本文中將使用的基于JGroups的Raft協(xié)議實(shí)現(xiàn)带饱。
在Raft中毡代,每個(gè)結(jié)點(diǎn)會(huì)處于下面三種狀態(tài)中的一種:
follower:所有結(jié)點(diǎn)都以follower的狀態(tài)開始。如果沒收到leader消息則會(huì)變成candidate狀態(tài)
candidate:會(huì)向其他結(jié)點(diǎn)“拉選票”勺疼,如果得到大部分的票則成為leader教寂。這個(gè)過程就叫做Leader選舉(Leader Election)
leader:所有對(duì)系統(tǒng)的修改都會(huì)先經(jīng)過leader。每個(gè)修改都會(huì)寫一條日志(log entry)执庐。leader收到修改請(qǐng)求后的過程如下酪耕,這個(gè)過程叫做日志復(fù)制(Log Replication):
復(fù)制日志到所有follower結(jié)點(diǎn)(replicate entry)
大部分結(jié)點(diǎn)響應(yīng)時(shí)才提交日志
通知所有follower結(jié)點(diǎn)日志已提交
所有follower也提交日志
現(xiàn)在整個(gè)系統(tǒng)處于一致的狀態(tài)
gossip
Gossip算法如其名,靈感來自辦公室八卦轨淌,只要一個(gè)人八卦一下迂烁,在有限的時(shí)間內(nèi)所有的人都會(huì)知道該八卦的信息,這種方式也與病毒傳播類似递鹉,因此Gossip有眾多的別名“閑話算法”盟步、“疫情傳播算法”、“病毒感染算法”躏结、“謠言傳播算法”却盘。
但Gossip并不是一個(gè)新東西,之前的泛洪查找、路由算法都?xì)w屬于這個(gè)范疇黄橘,不同的是Gossip給這類算法提供了明確的語義兆览、具體實(shí)施方法及收斂性證明。
Gossip算法又被稱為反熵(Anti-Entropy)塞关,熵是物理學(xué)上的一個(gè)概念抬探,代表雜亂無章,而反熵就是在雜亂無章中尋求一致帆赢,這充分說明了Gossip的特點(diǎn):在一個(gè)有界網(wǎng)絡(luò)中驶睦,每個(gè)節(jié)點(diǎn)都隨機(jī)地與其他節(jié)點(diǎn)通信,經(jīng)過一番雜亂無章的通信匿醒,最終所有節(jié)點(diǎn)的狀態(tài)都會(huì)達(dá)成一致。每個(gè)節(jié)點(diǎn)可能知道所有其他節(jié)點(diǎn)缠导,也可能僅知道幾個(gè)鄰居節(jié)點(diǎn)廉羔,只要這些節(jié)可以通過網(wǎng)絡(luò)連通,最終他們的狀態(tài)都是一致的僻造,當(dāng)然這也是疫情傳播的特點(diǎn)憋他。
要注意到的一點(diǎn)是,即使有的節(jié)點(diǎn)因宕機(jī)而重啟髓削,有新節(jié)點(diǎn)加入竹挡,但經(jīng)過一段時(shí)間后,這些節(jié)點(diǎn)的狀態(tài)也會(huì)與其他節(jié)點(diǎn)達(dá)成一致立膛,也就是說揪罕,Gossip天然具有分布式容錯(cuò)的優(yōu)點(diǎn)。
數(shù)據(jù)結(jié)構(gòu)
棧宝泵,隊(duì)列好啰,鏈表
棧作為一種數(shù)據(jù)結(jié)構(gòu),是一種只能在一端進(jìn)行插入和刪除操作的特殊線性表儿奶。它按照先進(jìn)后出的原則存儲(chǔ)數(shù)據(jù)框往,先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂闯捎,需要讀數(shù)據(jù)的時(shí)候從棧頂開始彈出數(shù)據(jù)(最后一個(gè)數(shù)據(jù)被第一個(gè)讀出來)椰弊。棧具有記憶作用,對(duì)棧的插入與刪除操作中瓤鼻,不需要改變棧底指針秉版。
棧是允許在同一端進(jìn)行插入和刪除操作的特殊線性表。允許進(jìn)行插入和刪除操作的一端稱為棧頂(top)茬祷,另一端為棧底(bottom)沐飘;棧底固定,而棧頂浮動(dòng);棧中元素個(gè)數(shù)為零時(shí)稱為空棧耐朴。插入一般稱為進(jìn)棧(PUSH)借卧,刪除則稱為退棧(POP)。棧也稱為后進(jìn)先出表筛峭。
隊(duì)列是一種特殊的線性表铐刘,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作影晓,和棧一樣镰吵,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱為隊(duì)尾挂签,進(jìn)行刪除操作的端稱為隊(duì)頭疤祭。
鏈表是一種物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu)饵婆,數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的勺馆。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成侨核。每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域草穆,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域。 相比于線性表順序結(jié)構(gòu)搓译,操作復(fù)雜悲柱。由于不必須按順序存儲(chǔ),鏈表在插入的時(shí)候可以達(dá)到O(1)的復(fù)雜度些己,比另一種線性表順序表快得多豌鸡,但是查找一個(gè)節(jié)點(diǎn)或者訪問特定編號(hào)的節(jié)點(diǎn)則需要O(n)的時(shí)間,而線性表和順序表相應(yīng)的時(shí)間復(fù)雜度分別是O(logn)和O(1)段标。
散列表
散列表(Hash table直颅,也叫哈希表),是根據(jù)關(guān)鍵碼值(Key value)而直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu)怀樟。也就是說功偿,它通過把關(guān)鍵碼值映射到表中一個(gè)位置來訪問記錄,以加快查找的速度往堡。這個(gè)映射函數(shù)叫做散列函數(shù)械荷,存放記錄的數(shù)組叫做散列表。
給定表M虑灰,存在函數(shù)f(key)吨瞎,對(duì)任意給定的關(guān)鍵字值key,代入函數(shù)后若能得到包含該關(guān)鍵字的記錄在表中的地址穆咐,則稱表M為哈希(Hash)表颤诀,函數(shù)f(key)為哈希(Hash) 函數(shù)字旭。
二叉樹,紅黑樹崖叫,B樹
二叉樹
在計(jì)算機(jī)科學(xué)中遗淳,二叉樹是每個(gè)節(jié)點(diǎn)最多有兩個(gè)子樹的樹結(jié)構(gòu)。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)心傀。二叉樹常被用于實(shí)現(xiàn)二叉查找樹和二叉堆屈暗。
二叉樹的每個(gè)結(jié)點(diǎn)至多只有二棵子樹(不存在度大于2的結(jié)點(diǎn)),二叉樹的子樹有左右之分脂男,次序不能顛倒养叛。二叉樹的第i層至多有2{i-1}個(gè)結(jié)點(diǎn);深度為k的二叉樹至多有2k-1個(gè)結(jié)點(diǎn)宰翅;對(duì)任何一棵二叉樹T弃甥,如果其終端結(jié)點(diǎn)數(shù)為n_0,度為2的結(jié)點(diǎn)數(shù)為n_2汁讼,則n_0=n_2+1淆攻。
一棵深度為k,且有2^k-1個(gè)節(jié)點(diǎn)稱之為滿二叉樹掉缺;深度為k,有n個(gè)節(jié)點(diǎn)的二叉樹戈擒,當(dāng)且僅當(dāng)其每一個(gè)節(jié)點(diǎn)都與深度為k的滿二叉樹中眶明,序號(hào)為1至n的節(jié)點(diǎn)對(duì)應(yīng)時(shí),稱之為完全二叉樹筐高。
紅黑樹
紅黑樹(Red Black Tree) 是一種自平衡二叉查找樹搜囱,是在計(jì)算機(jī)科學(xué)中用到的一種數(shù)據(jù)結(jié)構(gòu),典型的用途是實(shí)現(xiàn)關(guān)聯(lián)數(shù)組柑土。
它是在1972年由Rudolf Bayer發(fā)明的蜀肘,當(dāng)時(shí)被稱為平衡二叉B樹(symmetric binary B-trees)。后來稽屏,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改為如今的“紅黑樹”扮宠。紅黑樹和AVL樹類似,都是在進(jìn)行插入和刪除操作時(shí)通過特定操作保持二叉查找樹的平衡狐榔,從而獲得較高的查找性能坛增。
它雖然是復(fù)雜的,但它的最壞情況運(yùn)行時(shí)間也是非常良好的薄腻,并且在實(shí)踐中是高效的: 它可以在O(log n)時(shí)間內(nèi)做查找收捣,插入和刪除,這里的n 是樹中元素的數(shù)目庵楷。
B樹
在B-樹中查找給定關(guān)鍵字的方法是罢艾,首先把根結(jié)點(diǎn)取來楣颠,在根結(jié)點(diǎn)所包含的關(guān)鍵字K1,…,Kn查找給定的關(guān)鍵字(可用順序查找或二分查找法),若找到等于給定值的關(guān)鍵字咐蚯,則查找成功童漩;否則,一定可以確定要查找的關(guān)鍵字在Ki與Ki+1之間仓蛆,Pi為指向子樹根節(jié)點(diǎn)的指針睁冬,此時(shí)取指針Pi所指的結(jié)點(diǎn)繼續(xù)查找,直至找到看疙,或指針Pi為空時(shí)查找失敗豆拨。
圖
在數(shù)學(xué)中,一個(gè)圖(Graph)是表示物件與物件之間的關(guān)系的數(shù)學(xué)對(duì)象能庆,是圖論的基本研究對(duì)象施禾。
常用算法
1.排序
將雜亂無章的數(shù)據(jù)元素,通過一定的方法按關(guān)鍵字順序排列的過程叫做排序搁胆。假定在待排序的記錄序列中弥搞,存在多個(gè)具有相同的關(guān)鍵字的記錄,若經(jīng)過排序渠旁,這些記錄的相對(duì)次序保持不變攀例,即在原序列中,ri=rj顾腊,且ri在rj之前粤铭,而在排序后的序列中,ri仍在rj之前杂靶,則稱這種排序算法是穩(wěn)定的梆惯;否則稱為不穩(wěn)定的。
插入排序
有一個(gè)已經(jīng)有序的數(shù)據(jù)序列吗垮,要求在這個(gè)已經(jīng)排好的數(shù)據(jù)序列中插入一個(gè)數(shù)垛吗,但要求插入后此數(shù)據(jù)序列仍然有序,這個(gè)時(shí)候就要用到一種新的排序方法——插入排序法,插入排序的基本操作就是將一個(gè)數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中烁登,從而得到一個(gè)新的怯屉、個(gè)數(shù)加一的有序數(shù)據(jù),算法適用于少量數(shù)據(jù)的排序饵沧,時(shí)間復(fù)雜度為O(n^2)蚀之。是穩(wěn)定的排序方法。插入算法把要排序的數(shù)組分成兩部分:第一部分包含了這個(gè)數(shù)組的所有元素捷泞,但將最后一個(gè)元素除外(讓數(shù)組多一個(gè)空間才有插入的位置)足删,而第二部分就只包含這一個(gè)元素(即待插入元素)。在第一部分排序完成后锁右,再將這個(gè)最后元素插入到已排好序的第一部分中失受。
插入排序的基本思想是:每步將一個(gè)待排序的紀(jì)錄讶泰,按其關(guān)鍵碼值的大小插入前面已經(jīng)排序的文件中適當(dāng)位置上,直到全部插入完為止拂到。
桶排序
桶排序 (Bucket sort)或所謂的箱排序痪署,是一個(gè)排序算法,工作的原理是將數(shù)組分到有限數(shù)量的桶子里兄旬。每個(gè)桶子再個(gè)別排序(有可能再使用別的排序算法或是以遞歸方式繼續(xù)使用桶排序進(jìn)行排序)狼犯。桶排序是鴿巢排序的一種歸納結(jié)果。當(dāng)要被排序的數(shù)組內(nèi)的數(shù)值是均勻分配的時(shí)候领铐,桶排序使用線性時(shí)間(Θ(n))悯森。但桶排序并不是 比較排序,他不受到 O(n log n) 下限的影響绪撵。
堆排序
堆排序(Heapsort)是指利用堆積樹(堆)這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法瓢姻,它是選擇排序的一種∫粽可以利用數(shù)組的特點(diǎn)快速定位指定索引的元素幻碱。堆分為大根堆和小根堆,是完全二叉樹细溅。大根堆的要求是每個(gè)節(jié)點(diǎn)的值都不大于其父節(jié)點(diǎn)的值褥傍,即A[PARENT[i]] >= A[i]。在數(shù)組的非降序排序中喇聊,需要使用的就是大根堆恍风,因?yàn)楦鶕?jù)大根堆的要求可知,最大的值一定在堆頂承疲。
2.快速排序
快速排序(Quicksort)是對(duì)冒泡排序的一種改進(jìn)邻耕。
快速排序由C. A. R. Hoare在1962年提出鸥咖。它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分燕鸽,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序啼辣,整個(gè)排序過程可以遞歸進(jìn)行啊研,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。
3,最大子數(shù)組
最大和子數(shù)組是數(shù)組中和最大的子數(shù)組鸥拧,又名最大和子序列党远。子數(shù)組是數(shù)組中連續(xù)的n個(gè)元素,比如a2,a3,a4就是一個(gè)長度為3的子數(shù)組富弦。顧名思義求最大和子數(shù)組就是要求取和最大的子數(shù)組沟娱。
n個(gè)元素的數(shù)組包含n個(gè)長度為1的子數(shù)組:{a0},{a1}腕柜,…{an-1}济似;
n個(gè)元素的數(shù)組包含n-1個(gè)長度為2的子數(shù)組:{a0,a1}矫废,{a1,a2},{an-2,an-1}砰蠢;
………………………………………………………………………………………………
n個(gè)元素的數(shù)組包含1個(gè)長度為n的子數(shù)組:{a0,a1,…,an-1}蓖扑;
所以,一個(gè)長度為n的數(shù)組包含的子數(shù)組個(gè)數(shù)為n+(n-1)+…+1=n*(n-1)/2台舱。
4.最長公共子序列
一個(gè)數(shù)列 律杠,如果分別是兩個(gè)或多個(gè)已知數(shù)列的子序列,且是所有符合此條件序列中最長的竞惋,則 稱為已知序列的最長公共子序列柜去。
最長公共子序列,英文縮寫為LCS(Longest Common Subsequence)碰声。其定義是诡蜓,一個(gè)序列 S ,如果分別是兩個(gè)或多個(gè)已知序列的子序列胰挑,且是所有符合此條件序列中最長的蔓罚,則 S 稱為已知序列的最長公共子序列。而最長公共子串(要求連續(xù))和最長公共子序列是不同的瞻颂。
最長公共子序列是一個(gè)十分實(shí)用的問題豺谈,它可以描述兩段文字之間的“相似度”,即它們的雷同程度贡这,從而能夠用來辨別抄襲茬末。對(duì)一段文字進(jìn)行修改之后,計(jì)算改動(dòng)前后文字的最長公共子序列盖矫,將除此子序列外的部分提取出來丽惭,這種方法判斷修改的部分,往往十分準(zhǔn)確辈双。簡而言之责掏,百度知道、百度百科都用得上湃望。
5.最小生成樹
一個(gè)有 n 個(gè)結(jié)點(diǎn)的連通圖的生成樹是原圖的極小連通子圖换衬,且包含原圖中的所有 n 個(gè)結(jié)點(diǎn),并且有保持圖連通的最少的邊证芭。最小生成樹可以用kruskal(克魯斯卡爾)算法或prim(普里姆)算法求出瞳浦。
最短路徑
用于計(jì)算一個(gè)節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展废士,直到擴(kuò)展到終點(diǎn)為止叫潦。Dijkstra算法能得出最短路徑的最優(yōu)解,但由于它遍歷計(jì)算的節(jié)點(diǎn)很多官硝,所以效率低矗蕊。
6.矩陣的存儲(chǔ)和運(yùn)算
列矩陣(column major)和行矩陣(row major)是數(shù)學(xué)上的概念四敞,和電腦無關(guān),它只是一套約定(convention)拔妥,按照矢量和矩陣的乘法運(yùn)算時(shí)忿危,矢量是列矢還是行矢命名,這里只說4×4矩陣没龙。齊次矢量可以看成是一個(gè)1×4的矩陣铺厨,就是行矢;或者4×1的矩陣硬纤,就是列矢解滓。
云計(jì)算
云計(jì)算(Cloud Computing)是分布式計(jì)算(Distributed Computing)、并行計(jì)算(Parallel Computing)筝家、效用計(jì)算(Utility Computing)洼裤、[5] 網(wǎng)絡(luò)存儲(chǔ)(Network Storage Technologies)、虛擬化(Virtualization)溪王、負(fù)載均衡(Load Balance)腮鞍、熱備份冗余(High Available)等傳統(tǒng)計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。
云計(jì)算(cloudcomputing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加莹菱、使用和交付模式移国,通常涉及通過互聯(lián)網(wǎng)來提供動(dòng)態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。
云服務(wù)
SaaS
SaaS是Software-as-a-Service(軟件即服務(wù))的簡稱道伟,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和應(yīng)用軟件的成熟迹缀, 在21世紀(jì)開始興起的一種完全創(chuàng)新的軟件應(yīng)用模式。它與“on-demand software”(按需軟件)蜜徽,the application service provider(ASP祝懂,應(yīng)用服務(wù)提供商),hosted software(托管軟件)所具有相似的含義拘鞋。它是一種通過Internet提供軟件的模式砚蓬,廠商將應(yīng)用軟件統(tǒng)一部署在自己的服務(wù)器上,客戶可以根據(jù)自己實(shí)際需求掐禁,通過互聯(lián)網(wǎng)向廠商定購所需的應(yīng)用軟件服務(wù)怜械,按定購的服務(wù)多少和時(shí)間長短向廠商支付費(fèi)用颅和,并通過互聯(lián)網(wǎng)獲得廠商提供的服務(wù)傅事。
SaaS 應(yīng)用軟件的價(jià)格通常為“全包”費(fèi)用,囊括了通常的應(yīng)用軟件許可證費(fèi)峡扩、軟件維護(hù)費(fèi)以及技術(shù)支持費(fèi)蹭越,將其統(tǒng)一為每個(gè)用戶的月度租用費(fèi)。
PaaS
PaaS是Platform-as-a-Service的縮寫教届,意思是平臺(tái)即服務(wù)响鹃。 把服務(wù)器平臺(tái)作為一種服務(wù)提供的商業(yè)模式驾霜。通過網(wǎng)絡(luò)進(jìn)行程序提供的服務(wù)稱之為SaaS(Software as a Service),而云計(jì)算時(shí)代相應(yīng)的服務(wù)器平臺(tái)或者開發(fā)環(huán)境作為服務(wù)進(jìn)行提供就成為了PaaS(Platform as a Service)买置。
所謂PaaS實(shí)際上是指將軟件研發(fā)的平臺(tái)(計(jì)世資訊定義為業(yè)務(wù)基礎(chǔ)平臺(tái))作為一種服務(wù)粪糙,以SaaS的模式提交給用戶。因此忿项,PaaS也是SaaS模式的一種應(yīng)用蓉冈。但是轩触,PaaS的出現(xiàn)可以加快SaaS的發(fā)展,尤其是加快SaaS應(yīng)用的開發(fā)速度伐弹。在2007年國內(nèi)外SaaS廠商先后推出自己的PAAS平臺(tái)榨为。
IaaS
IaaS(Infrastructure as a Service),即基礎(chǔ)設(shè)施即服務(wù)随闺。
消費(fèi)者通過Internet 可以從完善的計(jì)算機(jī)基礎(chǔ)設(shè)施獲得服務(wù)。這類服務(wù)稱為基礎(chǔ)設(shè)施即服務(wù)板壮《好基于 Internet 的服務(wù)(如存儲(chǔ)和數(shù)據(jù)庫)是 IaaS的一部分。Internet上其他類型的服務(wù)包括平臺(tái)即服務(wù)(Platform as a Service绰精,PaaS)和軟件即服務(wù)(Software as a Service撒璧,SaaS)。PaaS提供了用戶可以訪問的完整或部分的應(yīng)用程序開發(fā)笨使,SaaS則提供了完整的可直接使用的應(yīng)用程序卿樱,比如通過 Internet管理企業(yè)資源。
Openstack
OpenStack是一個(gè)開源的云計(jì)算管理平臺(tái)項(xiàng)目硫椰,由幾個(gè)主要的組件組合起來完成具體工作繁调。OpenStack支持幾乎所有類型的云環(huán)境,項(xiàng)目目標(biāo)是提供實(shí)施簡單靶草、可大規(guī)模擴(kuò)展蹄胰、豐富、標(biāo)準(zhǔn)統(tǒng)一的云計(jì)算管理平臺(tái)奕翔。OpenStack通過各種互補(bǔ)的服務(wù)提供了基礎(chǔ)設(shè)施即服務(wù)(IaaS)的解決方案裕寨,每個(gè)服務(wù)提供API以進(jìn)行集成。
OpenStack是IaaS(基礎(chǔ)設(shè)施即服務(wù))組件,讓任何人都可以自行建立和提供云端運(yùn)算服務(wù)宾袜。
此外捻艳,OpenStack也用作建立防火墻內(nèi)的“私有云”(Private Cloud),提供機(jī)構(gòu)或企業(yè)內(nèi)各部門共享資源庆猫。
Docker
Docker 是一個(gè)開源的應(yīng)用容器引擎认轨,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上月培,也可以實(shí)現(xiàn)虛擬化好渠。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口节视。
Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式拳锚,使用遠(yuǎn)程API來管理和創(chuàng)建Docker容器。Docker 容器通過 Docker 鏡像來創(chuàng)建霍掺。容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶?duì)象與類杆烁。
————————————————————————————
整理到此兔魂,關(guān)于大數(shù)據(jù)工程師所需技能簡介和相關(guān)文章就整合完成了析校。36大數(shù)據(jù)網(wǎng)站上有超多關(guān)于成為大數(shù)據(jù)工程師需要掌握的各個(gè)技能的詳細(xì)介紹智玻,歡迎小伙伴們常來查閱吊奢。
今后,我們也將多多從技能知識(shí)方面進(jìn)行介紹铺呵,讓大數(shù)據(jù)行業(yè)從業(yè)人員可以多多獲益陪蜻,大家一起抱團(tuán)宴卖,一起成長吧症昏!
End.