SPARK全栈 全流程 大数据实战 之 技术选型篇
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
###一、技術(shù)選型,環(huán)境搭建安裝及生產(chǎn)部署
####1.大數(shù)據(jù)研發(fā)調(diào)研和需求分析
如果 你已經(jīng)或正在嘗試搭建一套大數(shù)據(jù)環(huán)境或生產(chǎn)環(huán)境做研發(fā)和測(cè)試部署的話(huà),如APACHE原生包或CDH和其它三方集成包,建議你先讀讀我的一次kylin安裝測(cè)試經(jīng)歷《渣外有渣大數(shù)據(jù)OLAP平臺(tái)之KYLIN起死回生篇》,可以幫助你了解HADOOP序列的安裝使用的各種復(fù)雜煩鎖配置和版本兼容問(wèn)題以及各種坑,而且全在LINUX下操作,這無(wú)疑是你走進(jìn)大數(shù)據(jù)領(lǐng)域的一個(gè)最大拌腳石和攔路虎;或是在一些所謂的云計(jì)算平臺(tái)上操作,目前來(lái)說(shuō)大多數(shù)都還處在比較基礎(chǔ)功能集成和簡(jiǎn)單的工具封裝,還需要太多的手動(dòng)配置和其它模塊集成等操作,才能完成和實(shí)現(xiàn)你的一個(gè)完整數(shù)據(jù)開(kāi)發(fā)需求,要不就像databricks和IBM的bluemix一樣需要付費(fèi)。而你不想重復(fù)這個(gè)痛苦的過(guò)程,需要先了解一下大數(shù)據(jù)研發(fā)環(huán)境需要如下幾方面需求:
數(shù)據(jù)支撐平臺(tái):大數(shù)據(jù)的基礎(chǔ)存儲(chǔ)(HDFS,S3,或是其它分步式存儲(chǔ)平臺(tái)或?qū)ο蟠鎯?chǔ)產(chǎn)品等),計(jì)算框架(MAPREDUCE,SPARK)集成平臺(tái),加基本的監(jiān)控運(yùn)維安全支持(如CDH或其它三方平臺(tái)集成的監(jiān)控管理平臺(tái),或是云平臺(tái))
研發(fā)測(cè)試工具鏈:一套數(shù)據(jù)開(kāi)發(fā)測(cè)試各階段的工具鏈的集成整合(ETL采集中間件及輔助處理工具:sqoop,flume,fluent,kafka,kettle,infomatica等;倉(cāng)庫(kù)工具:HIVE,SPARK SQL;實(shí)時(shí)流計(jì)算框架:storm,spark streaming,structured streaming;OLAP 平臺(tái)cube技術(shù): kylin等;BI工具:sas,spas,mahout,spark mlib,r,python,tableaue),還不包括研發(fā)過(guò)程管理和到生產(chǎn)發(fā)布環(huán)境的自動(dòng)化部署管理
應(yīng)用層輸出整合:一序列數(shù)據(jù)輸出(如數(shù)據(jù)集市:hbase,cassandra,parquet,mogodb;),報(bào)表生成(如smartBI,cravel),應(yīng)用展現(xiàn)可視化等(如R,Python,還有html5的各種js框架)應(yīng)用層工具框架
####2.技術(shù)選型及測(cè)試
** docker鏡像+云計(jì)算存儲(chǔ)平臺(tái)+sparkNotebook,使你直面需求和業(yè)務(wù)邏輯,迅速進(jìn)入正式開(kāi)發(fā)測(cè)試和生產(chǎn)部署階段**
-
「目前現(xiàn)狀」多數(shù)大數(shù)據(jù)生產(chǎn)環(huán)境部署使用三方的像CDH這樣的集成平臺(tái),一是提供穩(wěn)定的版本集成,定制和功能擴(kuò)展及加強(qiáng)外,甚至是多計(jì)算框架集成,在線(xiàn)配置統(tǒng)一管理等 ,還提供簡(jiǎn)單安裝過(guò)程,集群技術(shù)部署監(jiān)控管理,還有好用的web輔助操作平臺(tái)HUE。基本上是基礎(chǔ)輸入出存儲(chǔ)平臺(tái),集群監(jiān)控管理,到開(kāi)發(fā)測(cè)試工具集成,甚至包含一些簡(jiǎn)單展現(xiàn)工具方便分析調(diào)試處理結(jié)果,多數(shù)需求都 有了。唯一的缺點(diǎn)是只是對(duì)現(xiàn)有各種技術(shù) 的集成封裝,如要據(jù)線(xiàn)上需求調(diào)整參數(shù)或架構(gòu)那這一套還是要做大量的管理,hadoop序列產(chǎn)品的特點(diǎn)就是不是一家的,數(shù)據(jù)格式不兼容統(tǒng)一不說(shuō),版本兼容復(fù)雜配置還是逃不了,而且因?yàn)檫@點(diǎn)一些新版本和技術(shù)優(yōu)化特性沒(méi)發(fā)使用,版本往往靠后,瓶頸很容易出現(xiàn),而hadoop本身的發(fā)展就不快,這也是阻礙它發(fā)展的主要拌腳石。
-
而這里提供的「方案思路」是存儲(chǔ)系統(tǒng)包含輸入出系統(tǒng)如dw dm ods cube加速等與計(jì)算系統(tǒng)或其它系統(tǒng)如web應(yīng)用,可視化,爬蟲(chóng)等分別隔離,獨(dú)立出來(lái)。好處依次是系統(tǒng)和服務(wù)分解,基本的拆分思路解決大而難的復(fù)雜問(wèn)題,其次分治,方便管理擴(kuò)充維護(hù),再次是專(zhuān)業(yè)的需求專(zhuān)業(yè)問(wèn)題教給專(zhuān)業(yè)的技術(shù)和人資源來(lái)解決回答到更優(yōu)的方案,也體現(xiàn)了現(xiàn)在流行的微服務(wù)理念。
-
而「存儲(chǔ)系統(tǒng)」建議直接使用線(xiàn)上成熟產(chǎn)品,如S3,云存儲(chǔ),db等,主要監(jiān)控運(yùn)維工作都交給云平臺(tái)處理,而且自搭數(shù)據(jù)平臺(tái)資源限制,要真實(shí)環(huán)境使用往往也需要線(xiàn)上平臺(tái)做為擴(kuò)充,而且真實(shí)環(huán)境這些基本運(yùn)維管理可能根本達(dá)不到要求,安全,容錯(cuò),備份,容災(zāi),恢復(fù),升遷不是一件簡(jiǎn)單的事;存儲(chǔ)平臺(tái)的自搭需求只有在自有敏感數(shù)據(jù)做預(yù)處理或脫敏時(shí)有必要,而且這塊完全是一個(gè)內(nèi)部研發(fā)級(jí)系統(tǒng)就可以了,要求不需要太高
-
其次是「計(jì)算系統(tǒng)」直接用spark平臺(tái),數(shù)據(jù)采集預(yù)處理(各種數(shù)據(jù)結(jié)構(gòu)api,dataframe,dataset,spark sql都可以做為數(shù)據(jù)處理工具) 實(shí)時(shí)(spark streaming可以處理各種高級(jí)或低級(jí)數(shù)據(jù)源)離線(xiàn)(可以對(duì)接各種數(shù)據(jù)庫(kù),日志,文件或不同格式的數(shù)據(jù)進(jìn)行直接對(duì)接操作)計(jì)算 分析 統(tǒng)計(jì)(spark sql mlib graph x還有擴(kuò)展的r python) 研發(fā)(scala python node.js)一站式解決,而且的他的集群管理,運(yùn)維監(jiān)控都有好的方案,管理相對(duì)容易。而這一切正是在受了一代數(shù)據(jù)平臺(tái)多年發(fā)展的苦后,人們急切呼吁,市場(chǎng)急需變革而產(chǎn)生的新一代產(chǎn)物,重點(diǎn)是spark據(jù)于自身的優(yōu)點(diǎn)和社區(qū)版本不斷跌代和互聯(lián)網(wǎng)計(jì)算機(jī)信息行業(yè)發(fā)展特點(diǎn)技術(shù)創(chuàng)新技術(shù)引導(dǎo)18月理論等漸漸偶合,它的性能吞吐量易用性易實(shí)施管理和多樣需求至多技術(shù)棧隔合,數(shù)據(jù)格式統(tǒng)一等也越來(lái)越完善和被肯定。而有一些大公司現(xiàn)在開(kāi)始加入和推進(jìn)HADOOP體序的升級(jí),也正是印證了在這個(gè)行業(yè)不發(fā)展不改變面對(duì)結(jié)果將是直接被人們忽略掉的特點(diǎn),且再不發(fā)展推進(jìn)可能現(xiàn)有平臺(tái)的維護(hù)都可能后繼無(wú)人了,而如今還有人一在用hadoop體序的惟一原因是一些大公司有些數(shù)據(jù)積累,一直沿用這套平臺(tái)(有的還在沿用1.x的版本),而且大規(guī)模部署甚至在此基礎(chǔ) 上建云平臺(tái)和上層設(shè)施,而這一切變革意味著不僅是全套技術(shù)積累的廢棄而且有利益的隔舍。而你擋不住歷史的齒輪,這一切終將會(huì)到來(lái)!而還有些人說(shuō)是因?yàn)镴AVA語(yǔ)言的特點(diǎn)在使用hadoop,人員好找,這句話(huà)根本站不腳,真正用起hadoop系統(tǒng)的都 是用腳本做業(yè)務(wù)處理,沒(méi)人會(huì)為做一步etl寫(xiě)一大堆java程序,而java對(duì)分步式數(shù)據(jù)集的處理并不善長(zhǎng),其次,從學(xué)習(xí)難度上來(lái)說(shuō),學(xué)java+hadoop一序列的框架,還有發(fā)展缺點(diǎn)和天花板,而學(xué)同樣一門(mén)JVM語(yǔ)言scala,一個(gè)spark框架 就能解決一序列的問(wèn)題,且發(fā)展前境無(wú)限,結(jié)果顯然若見(jiàn):1+n>1+1
-
「其它子系統(tǒng)」如如web應(yīng)用,可視化,爬蟲(chóng)等常見(jiàn)數(shù)據(jù)開(kāi)發(fā)輔助平臺(tái)這里就略了,據(jù)自己的實(shí)際場(chǎng)境如業(yè)務(wù)相關(guān)性,服務(wù)相關(guān)性和具體集群環(huán)境做選擇和架構(gòu)調(diào)整
-
這里值得一提的是「自動(dòng)化管理」使用docker技術(shù)做研發(fā)測(cè)試生產(chǎn)部署的隔離,跌代,集成管理,研發(fā)過(guò)程管理或線(xiàn)上服務(wù)治理 ,自動(dòng)化管理 ,和架構(gòu)演進(jìn),加云平臺(tái)的一站式支持,這也是新一代CI,CD,DEVOS,微服務(wù)理念的趨勢(shì),說(shuō)到云平臺(tái)除國(guó)際知名AWS ALIYUN對(duì)容器不斷支持外,還有databricks,bluemix等知名數(shù)據(jù)服務(wù)商,國(guó)內(nèi)容器云優(yōu)秀的也有不少,像時(shí)速云等產(chǎn)品做的就不錯(cuò),思路和本地化方面做的非常好,是個(gè)不錯(cuò)的選擇
-
還有今天的主角兒新一代「大數(shù)據(jù)開(kāi)發(fā)環(huán)境」spark notebook,與其它在線(xiàn)平臺(tái)比如databricks,bluemix等開(kāi)源免費(fèi)不說(shuō),和hue及python notebook開(kāi)源產(chǎn)品比,除支持在線(xiàn)編輯sql,腳本執(zhí)行,調(diào)試和日志收集回顯,markdown集成,各種頁(yè)面快捷等(這已經(jīng)是傳統(tǒng)開(kāi)發(fā)工具無(wú)法做到的,在線(xiàn)集群上調(diào)試運(yùn)行代碼,免去分步式程序和算法模型,需打包發(fā)布提交集群,測(cè)試參數(shù)優(yōu)化和算法改進(jìn)后再打包發(fā)布等常見(jiàn)過(guò)程),而且直接集成SBT包管理,cell里命令管理linux系統(tǒng),這還是輔助的,重點(diǎn)各種數(shù)據(jù)可視化組件直接調(diào)用還可以cell里自定義,(不僅不用回linux界面,連可視化都不需要學(xué)r,python,html5框架整合了),還有spark各個(gè)模塊的用例直接操作運(yùn)行查看效果,還有多種內(nèi)核版本集成,可在一平臺(tái)管理不同版本下的代碼和數(shù)據(jù)測(cè)試,而且有scala腳本md pdf等導(dǎo)出和運(yùn)行進(jìn)程及集群簡(jiǎn)單狀況管理,還有運(yùn)行job狀態(tài),errlog,和chat room(這個(gè)偶然發(fā)現(xiàn)還沒(méi)試用過(guò)),惟一發(fā)現(xiàn)好像代碼提示不是太好用,不知是不是我的離線(xiàn)操作原因,還有如果再加腦圖,建模,制圖工具在集成的話(huà)這個(gè)就是一個(gè)簡(jiǎn)潔版的dmp平臺(tái)了,呵呵
-
關(guān)于部署和安裝請(qǐng)參照官網(wǎng)spark-notebook.io,提供多種集成版本選擇和tar,zip,gz和docker下載。如果你和我一樣是使用docker直接在官網(wǎng)里直接選好版本,一條docker run 命令bulild運(yùn)行的話(huà)(官網(wǎng)說(shuō)的是docker pull ,docker run 兩條命令5秒鐘搞定,you known 使用一條即可,實(shí)際情況可能?chē)?guó)內(nèi)網(wǎng)絡(luò)環(huán)境問(wèn)題我下了三四次),后通過(guò)自帶各模塊的例子按幾下shift+enter,直接看到結(jié)果,文檔都無(wú)需查看直接上手,上面都是一時(shí)間試用總結(jié)。文檔也許在源碼包里吧,官網(wǎng)也沒(méi)有看到,只有版本選擇下載和提示他們?cè)谡腥思尤?#xff0c;好像還是個(gè)國(guó)內(nèi)人主持開(kāi)發(fā)或發(fā)啟參與 的,非常 不錯(cuò)。在我的使用和體驗(yàn)中非常流暢,相比其它產(chǎn)品有過(guò)之而無(wú)不極。至此如果說(shuō)HUE和它集成監(jiān)控還是你覺(jué)得在hadoop體序下值得留念和贊賞的話(huà),此刻你可以說(shuō)spark已經(jīng)在各方面全面超越,好了,為了不讓多數(shù)人灰心和失望和引發(fā)無(wú)謂口水戰(zhàn),加一句「?jìng)€(gè)人觀點(diǎn),僅供參考」!此博文的編寫(xiě)及后續(xù)實(shí)戰(zhàn)都直接在spark notebook上實(shí)現(xiàn),運(yùn)行調(diào)試結(jié)果,日志輸出和展現(xiàn)效果都將借助他一目了然全然成顯,然 后在makedown導(dǎo)出原樣轉(zhuǎn)貼至blog。
如果 在這里使你感覺(jué)所幫助 或表示贊同的話(huà),歡迎打賞,也歡迎留言回貼收藏轉(zhuǎn)載支持和指正,3Q。
轉(zhuǎn)載于:https://my.oschina.net/hblt147/blog/817324
總結(jié)
以上是生活随笔為你收集整理的SPARK全栈 全流程 大数据实战 之 技术选型篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 阿里云的羊毛如何薅?创业者看过来!
- 下一篇: 双语切换