大數(shù)據(jù)相關(guān)開發(fā)筆記(1)

近期實踐及完成了一些比較針對性的大數(shù)據(jù)相關(guān)的設(shè)計和開發(fā),為了備忘晴埂,特匯總記錄如下:

1) 大數(shù)據(jù)平臺的選擇

不管使用HDP或CDH漩怎,再或者使用基礎(chǔ)的Hadoop方式的HDFS及HBase等的手工部署糊秆,但是對于一個企業(yè)級開發(fā)或規(guī)模較大的項目鹏往,最好選用穩(wěn)定及成熟的平臺套裝脚粟。

例如Ambari的HDP覆旱,再或Cloudera的CDH。

在全部開源的前提限制條件下核无,應(yīng)該盡量考慮版本的穩(wěn)定性扣唱。免費的不一定不穩(wěn)定,但是除了問題要自己Google。付費的不一定貴噪沙,關(guān)鍵是服務(wù)質(zhì)量和支持炼彪。

另外關(guān)鍵選擇因素是DevOps的涉及深度。任何大規(guī)模的大數(shù)據(jù)開發(fā)正歼,肯定不能單純到手工Shell方式添加DataNode和部署服務(wù)辐马,大量的配置文件及網(wǎng)絡(luò)設(shè)置,如沒有全面和有經(jīng)驗的專家支持下局义,將是夢魘喜爷。

可是單純追逐最新版本的部署和使用,往往也會適得其反萄唇。由于測試和使用力度的原因檩帐,最新版本在實際生產(chǎn)環(huán)境部署和使用過程中,往往會出現(xiàn)一些exception和unexpected的事情另萤。很多情況下不得已要降版本重新部署湃密。

所以考慮Ambari為依托的HDP的2.5/2.6全免費版本還是相對可行的。

2)操作系統(tǒng)的選擇

由于大數(shù)據(jù)還是要跑在以Linux為內(nèi)核的操作系統(tǒng)上四敞,所以合適合規(guī)合要求的Linux版本事關(guān)重要泛源。如生產(chǎn)發(fā)布環(huán)境使用RHEL,則盡量在設(shè)計/開發(fā)/測試環(huán)境選用CentOS對應(yīng)版本目养。從而避免不同Linux版本對于內(nèi)核及Shell和服務(wù)的定制化俩由。

之前和現(xiàn)在的一些開發(fā)毒嫡,均使用CentOS 6.5為主的操作系統(tǒng)癌蚁。其也沒有完全使用CentOS 7.x的最新版本。

因為大量組件兜畸,服務(wù)努释,以及一些特殊要求,往往對于最新版本的操作系統(tǒng)缺乏測試和相應(yīng)支持咬摇,同時部分需要Python的特定版本伐蒂。

3)實體機/虛擬化/容器化

我現(xiàn)在依然認為低配或適配的實體機是最好的方式,但是經(jīng)過實踐和之前1/2年一些同事的反饋肛鹏,可考慮以VM為主的虛擬化技術(shù)也是比較成熟的逸邦。

然后雖然容器化Docker成熟并火熱到一定程度,個人認為還不適合全部容器化方式部署Hadoop的全套環(huán)境和支持日常開發(fā)在扰。

雖然已經(jīng)整理并全部安裝調(diào)試成功全Docker容器化的Hadoop平臺缕减,并有全套的安裝部署腳本,但是其中的安裝困難確實很大芒珠。緊緊是Bridged Network和Port桥狡,以及FQDN的配置,就很繁瑣了。而且由于選擇的大數(shù)據(jù)平臺的支持框架不同裹芝,大量的“坑”就不一一羅列了部逮。

4)數(shù)據(jù)流

在給建好的大數(shù)據(jù)平臺注入血液(數(shù)據(jù))的時候,Apache的Nifi還是比較靈活和方便的可視化工具嫂易。同時如果有一定Python和Java開發(fā)能力兄朋,可以很好的通過開源模式,編寫自定義的Processor怜械,高效處理更多的更精準的個性化數(shù)據(jù)處理流程蜈漓。

但是其對于內(nèi)存和日志的管理,需要針對性的調(diào)優(yōu)宫盔,否則單獨Queue的Bucket的阻塞融虽,無條理的日志輸出,是非常危險的灼芭。

我之前和現(xiàn)在的一些場景有额,Nifi都是通過Docker容器化的方式部署和使用。同時自行開發(fā)客制化的Processor和Python腳本提高處理和維護的高效彼绷。

5)數(shù)據(jù)清理

即使有好的數(shù)據(jù)可視化處理的Nifi數(shù)據(jù)流工具巍佑,乃至Kettle等傳統(tǒng)SQL的數(shù)據(jù)ETL。但是大量的數(shù)據(jù)寄悯,尤其是非結(jié)構(gòu)化的數(shù)據(jù)文件萤衰,例如Excel/CSV等,必須需要預(yù)先處理猜旬,清洗脆栋,規(guī)整等操作后再進入大數(shù)據(jù)平臺,或者數(shù)據(jù)流處理平臺洒擦。否則一些數(shù)據(jù)精度椿争,空值等等數(shù)據(jù)項的問題,將造成數(shù)據(jù)處理的異常和錯誤熟嫩,同時很難在數(shù)萬數(shù)億的原始數(shù)據(jù)中排查和修正秦踪。

因為絕大部分這些數(shù)據(jù)都是來自手工和半手工的非結(jié)構(gòu)化或半機構(gòu)化的源頭,并且即使很規(guī)整的數(shù)據(jù)掸茅,總有異常情況椅邓。

所以個人認為原始數(shù)據(jù)的清理和Preprocess事關(guān)重要。

例如使用Spring Batch進行數(shù)據(jù)的預(yù)處理昧狮,充分使用其對于Tokenizer等配置化定義景馁,集合自動化作業(yè)工具(譬如專業(yè)的UC4,或簡單的Jenkins)陵且,同時相應(yīng)的一些代碼支持裁僧,構(gòu)建一個文件預(yù)處理的小平臺个束。

將預(yù)處理的原始數(shù)據(jù),進入到Stage數(shù)據(jù)庫(關(guān)系型)聊疲,后續(xù)讓Nifi等數(shù)據(jù)流工具介入茬底。

6)數(shù)據(jù)關(guān)聯(lián)

處理完畢的數(shù)據(jù)必然進入大數(shù)據(jù)平臺,譬如HBase获洲,或ElasticSearch/Solr等阱表,合理的規(guī)劃數(shù)據(jù)存儲邏輯將對于后續(xù)的數(shù)據(jù)使用和應(yīng)用需求起到很重要的作用。

譬如HBase的Row Key的定義贡珊,尤其是關(guān)聯(lián)數(shù)據(jù)的Row Key模式最爬。盡量通過合理的設(shè)計Row Key,提高未來查詢時通過RowPrefixFilter進行HashTable的主鍵過濾门岔,提高查詢速度和命中率爱致。

另外關(guān)聯(lián)數(shù)據(jù)集合/Table間,對于Column Family的定義必須有清洗的數(shù)據(jù)字典和依存關(guān)系寒随,方便對于Column較多的大數(shù)據(jù)集合進行維護糠悯。

7)直接數(shù)據(jù)服務(wù)暴露

特殊情況可以適當開發(fā)一些基于HBase Thrift和HappyBase的數(shù)據(jù)訪問API,乃至通過Flask等暴露成API妻往。是集團型企業(yè)應(yīng)用的一個微服務(wù)的概念和實現(xiàn)互艾。

8)編程開發(fā)

一般可采用Aanconda或Jupyter Notebook等支持的文檔編輯及開發(fā)和管理工具平臺或工具集,這樣將會減少日后開發(fā)平臺和開發(fā)包維護的力度讯泣。同時某些場景可以被復(fù)用管理工具纫普。

但是單純編程,開始要考慮一些專門的Python的開發(fā)工具好渠。

譬如我現(xiàn)在使用的是Eclipse和PyDev昨稼。

另外一定要維護好PIP的安裝包信息。由于大量開源package的存在晦墙,和Python版本的變化悦昵,需要認真將第三方Package的安裝和部署與Python的開發(fā)及上線環(huán)境記錄好。

9)應(yīng)用隔離

通過Docker的容器化方式晌畅,將大數(shù)據(jù)平臺上及開發(fā)平臺的應(yīng)用工具單一隔離部署,是個很好的習(xí)慣和能夠提升DevOps能力的關(guān)鍵寡痰。

譬如即使使用Ambari部署HDP抗楔,其管理配置節(jié)點,可以統(tǒng)一考慮使用MySQL的Docker容器拦坠,將Ambari/Hive等關(guān)鍵服務(wù)的配置全部集中到MySQL的Container上连躏。

或者其它相關(guān)開發(fā)工具。

但是不推薦將直接作用于大數(shù)據(jù)平臺的應(yīng)用容器化部署贞滨。譬如Hue入热,因為這樣至少HDFS將無法remote訪問DataNode上的HDFS等服務(wù)拍棕。

10)端口

大數(shù)據(jù)平臺和應(yīng)用將有大量的軟硬件及應(yīng)用部署,所以大量的端口需要明確記錄勺良。尤其是某些使用容器化方式部署的應(yīng)用绰播,對于容器與宿主機,和外網(wǎng)的端口映射更要規(guī)劃和記錄好尚困。

最好有一個很清晰的端口/FQDN/網(wǎng)絡(luò)等相關(guān)資源的excel表格記錄蠢箩。

11)FQDN/IP ADDR

大數(shù)據(jù)平臺不一定需要標準的FQDN,譬如TNT-ITS.COM事甜,但是命名還是需要的谬泌,因為這樣會大大減少部署和配置過程中的難度。

另外一點是最好全部采用固定IP地址方式逻谦,甚至容器化的Bridged Network都要固定IP地址掌实。

12)Python

最近使用較多的就是Python下面,Excel/Oracle/Mongo/Redis/Flask RESTful API/Flask Caching/HappyBase等Package邦马。

同時使用Flask為主的uWSGI和Nginx承載HBase上的Direct Data Service API潮峦。

13)IaaS/PaaS

如果條件,尤其是經(jīng)費足夠勇婴,可以考慮以Amazon的AWS為主要資源的云化客制化部署方式忱嘹,不簡單使用其EC2單獨作為VM方式部署,更關(guān)鍵使用其EC2 Container Service耕渴。

但是由于現(xiàn)在資源有限拘悦,AliYun和AWS上的配置手冊和Demo環(huán)境還沒有完全配通。

14)Hue

為了更方便日常運維大數(shù)據(jù)平臺橱脸,Ambari只提供了Dashboard和Service Controller础米,但是對于文件和數(shù)據(jù)運維,管理添诉,及使用屁桑,還是最好有圖形化的工具。HBase Shell還是太原始栏赴。所以Hue是個比較好的選擇蘑斧。但是其部署和大數(shù)據(jù)平臺的集成,需要很多精力须眷。

15)大數(shù)據(jù)/人工智能/深度學(xué)習(xí)

近期期望將在大數(shù)據(jù)的基礎(chǔ)上竖瘾,把特定領(lǐng)域的人工智能(預(yù)測)部分實現(xiàn)幾個微應(yīng)用和成果,設(shè)計圖和AI元素都已經(jīng)規(guī)劃花颗,但是數(shù)據(jù)和模型還未就位捕传,稍后再羅列。

如下附圖(大數(shù)據(jù)的邏輯部署圖)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扩劝,一起剝皮案震驚了整個濱河市庸论,隨后出現(xiàn)的幾起案子职辅,更是在濱河造成了極大的恐慌,老刑警劉巖聂示,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件域携,死亡現(xiàn)場離奇詭異,居然都是意外死亡催什,警方通過查閱死者的電腦和手機涵亏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒲凶,“玉大人气筋,你說我怎么就攤上這事⌒玻” “怎么了宠默?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長灵巧。 經(jīng)常有香客問我搀矫,道長,這世上最難降的妖魔是什么刻肄? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任瓤球,我火速辦了婚禮,結(jié)果婚禮上敏弃,老公的妹妹穿的比我還像新娘卦羡。我一直安慰自己,他們只是感情好麦到,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布绿饵。 她就那樣靜靜地躺著,像睡著了一般瓶颠。 火紅的嫁衣襯著肌膚如雪拟赊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天粹淋,我揣著相機與錄音吸祟,去河邊找鬼。 笑死廓啊,一個胖子當著我的面吹牛欢搜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谴轮,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吹埠!你這毒婦竟也來了第步?” 一聲冷哼從身側(cè)響起疮装,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粘都,沒想到半個月后廓推,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡翩隧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年樊展,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堆生。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡专缠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淑仆,到底是詐尸還是另有隱情涝婉,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布蔗怠,位于F島的核電站墩弯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏寞射。R本人自食惡果不足惜渔工,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桥温。 院中可真熱鬧引矩,春花似錦、人聲如沸策治。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽通惫。三九已至茂翔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間履腋,已是汗流浹背珊燎。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遵湖,地道東北人悔政。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像延旧,于是被迫代替她去往敵國和親谋国。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容