前言
都說【同化】是一種很神奇的力量,看著大家都發(fā)新年感悟,大致就是回顧2016展望2017,我也沒把持住自己的【清高】,發(fā)了一段話:
2016年工作上還是有不少進步的 開始在簡書上寫文章了 玩了微信公眾號 還做了幾個大數(shù)據(jù)相關(guān)的開源項目 學(xué)習(xí),使用,布道了Spark 和 ElasticSearch 技術(shù)。當然也玩了不少地方 ,去了西安,走了沙漠,到了海邊,漫步了東北,吃了重慶的火鍋,來了上海迪斯尼,馬上要去杭州和深圳溜達。年底這兩個月竟然少有的擁有很多時間成體系的學(xué)習(xí)了一直想深入研究的機器學(xué)習(xí)領(lǐng)域,有了新的理解和感悟。當然遺憾的事也是有的 六月說要寫的書 拖了半年還沒寫完
今天打算進一步俗下去,把上面的話展開了寫。
技術(shù)元年
應(yīng)該說2016年是自己的技術(shù)元年,當然在2016之前,我其實已經(jīng)工作了七年左右了。
由批處理進入流式時代
2015年年底,進入L公司,讓我進入了流式計算時代。因為當時部門的主要業(yè)務(wù)就是計費,所以當時入職后就開始對原有的系統(tǒng)做設(shè)計和改造,這篇文章可見端倪:基于HBase做Storm 實時計算指標存儲
因為之前了解過Spark,它一個比較好的地方是能夠同時實現(xiàn)流式和批處理,而且用起來還簡單,所以我計劃統(tǒng)一平臺,不過我打算先深入學(xué)習(xí)Spark Streaming之后再使用,2015年12月9號 寫了第一篇Spark的源碼分析文章Spark Streaming 數(shù)據(jù)產(chǎn)生與導(dǎo)入相關(guān)的內(nèi)存分析,之后就已發(fā)不可收拾。
16年成功實現(xiàn)了對Spark Streaming的推廣,部門大部分流式任務(wù)都已經(jīng)采用了Spark Streaming。目前有個百臺以上規(guī)模的Hadoop集群里面大部分任務(wù)都是Spark Streaming。
我也充分的享受到了流式計算的好處,所以開始不斷鼓吹流式數(shù)據(jù)天生就是流式的,而且也對流式的質(zhì)量控制有一定的心得流式數(shù)據(jù)Pipeline質(zhì)量控制淺談
那個時候分析源碼分析High了,還順帶研究了幾天Kakfa Kafka Zero-Copy 使用分析,熟悉了其代碼體系結(jié)構(gòu)。
分析源碼有點打游戲的感覺,打通關(guān),解決了一團疑惑后會很有成就感,但是很快會有新的疑惑。
海量數(shù)據(jù)查詢
大約2016年2月到3月之間,我們開始面對海量數(shù)據(jù)的即席查詢的需求,其實就是明細數(shù)據(jù)的各種聚合查詢。我之前除了參與改造流式計算平臺以外,其實本職工作大致是檢索引擎,還有未來的推薦,機器學(xué)習(xí)等研究。檢索采用了ElasticSearch,所以對ElasticSearch開始有一定的了解,并且于 2月寫了第一篇ES的研究文章ElasticSearch Rest/RPC 接口解析,然后這一整年不斷的有ElasticSearch相關(guān)的文章輸出。
這個過程我們開始想如何使用ES來解決明細數(shù)據(jù)聚合查詢的問題,調(diào)研后做了如下的架構(gòu)SparkES 多維分析引擎設(shè)計,從4月份開始,基本就是圍繞這個開始做。
當時我們小組包括我是三個人,其中有一個人只負責對外需求,畢竟需要有業(yè)務(wù)產(chǎn)出,否則小組很容易掛掉。另外一個則配合我一起弄這套架構(gòu)。雖然人少,但很高效,因為工作經(jīng)驗都比較豐富。整個數(shù)據(jù)部門平均工作經(jīng)驗7年+,我們小組則更高。
四月份我們準備簡化Spark的使用,所以有了 StreamingPro項目。四月初開始規(guī)劃,四月中旬開始開發(fā),四月底就完成了第一個版本,并且很快開源。之后這個項目成為了我們所有項目使用Spark的標準工具。
SparkES 多維分析引擎設(shè)計實際對應(yīng)的架構(gòu)如下:

當然這個架構(gòu)最后的形成其實是在下半年了。規(guī)模最大時,ES集群服務(wù)器超過150+左右,配套的Spark服務(wù)占用的資源應(yīng)該100+左右服務(wù)器,包括數(shù)據(jù)處理和查詢。應(yīng)該是一個非常大的規(guī)模了。
架構(gòu)里面的QueryProxy 集成了ElasticSearch-SQL,可以查詢多個ES集群,同時也可以對接Spark SQL或者ES,也就是你可以通過QueryProxy直接查詢ES或者透過Spark SQL查詢ES。 Spark SQL的好處是可以解決跨索引查詢以及完備的SQL支持,而直接使用ES-SQL的好處是速度夠快。
當然我們這個期間也花了一些時間對ES-SQL進行Enhance,增加了一些新的語法,并且提供JDBC的支持,并且回饋給了開源社區(qū)。
我們小組不僅僅承擔開發(fā)任務(wù),同時還有自己服務(wù)的業(yè)務(wù)運維任務(wù),手頭管理和維護的服務(wù)器也接近200臺,而且我們也對外提供StreamingPro,QueryProxy的使用培訓(xùn)等,方便平臺組和分析團隊更好的使用。為了保證我們自己的服務(wù)運行穩(wěn)定,我們重新搭建了一套小型的SparkES集群專門收集和存儲ES/Storm/Spark日志等系統(tǒng)的日志,大致思路如用大數(shù)據(jù)思維做運維監(jiān)控。很多系統(tǒng)提供了Rest API 方便你監(jiān)控它的狀態(tài),比如ES就提供了大量的http接口供你分析ES的系統(tǒng)狀態(tài),反而是日志輸出的比較少,為了方便采集API接口,所以我的另外一個同事又開發(fā)了一套API采集系統(tǒng) RestHunter,可以通過界面和配置定時采集ES API獲得結(jié)果并且解析進行存儲。
釋放以前的工作成果
在文章這些年,我工作上走過的路,我提到:
經(jīng)過八個月業(yè)余時間(周末加上工作日夜晚)的努力,我想要的產(chǎn)品原型終于做成了
我將這里提及的【產(chǎn)品】中的一些小模塊剝離出來成了兩個開源項目,yarn-client,他可以是你非常容易開發(fā)一個基于Yarn的分布式應(yīng)用?;诖?,還有一個基于Yarn調(diào)度Docker的應(yīng)用yarn-docker-scheduler。
年底的最后一戰(zhàn)
大約12月份,我開始開發(fā)我工作生涯的第二個推薦系統(tǒng),這個時候我們組包括我已經(jīng)有四個人了,額外還引入了三個人,參與該項目的人大約總共七個人不到,每個研發(fā)一天不超過兩小時,還有兩個人總共只花了一個下午的時間,在這種情況下兩個禮拜就完成了這個系統(tǒng)的原型開發(fā),包括基于用戶畫像的實時異步化視頻推薦系統(tǒng)提及的所有功能點,以及部分推薦系統(tǒng)之眼提及的功能點。
對北京說再見
給一位好朋友投了一篇稿子,叫我和北京的7年之癢-天才工程師的自白,標題那個,標題黨了,大家就忽略吧,看看內(nèi)容。這篇文章正式宣告我離開北京了。雖然離開北京來到杭州,結(jié)果杭州也連著四天都是霧霾天(全國性霧霾),然而想著退而求其次,好歹還是比北京好些的,也不如北京的醇厚。
與你同在
2016年2月份參加好朋友的婚禮,然后順帶去西安玩了幾天,回來到四月寫了篇我的兄弟結(jié)婚啦,新娘不是我,不過沒想到竟然遇到了人生很重要的人,也算是無意的收獲。
那一天,我腦袋剛探進門縫里,然后有人發(fā)起關(guān)門動作,然后我的腦袋就被夾了,接著就莫名其妙的對她說:我想去沙漠,大家都去看??瓷?,我們?nèi)コ酝涟伞?/p>
你想去么?
恩,想去。
那去吧。
就這樣去了沙漠,先汽車嘟嘟嘟,地鐵當當當,然后火車框框框,接著滴滴滴滴滴,最后終于到達目的地。旅途艱辛。但是能和她一起在旅途,就猶如一起出來看看太陽,是一種簡單但幸福的感覺。
景區(qū)是個很偏僻的地,玩完出來的時候,到公交站要走很遠的一段距離,這段距離都是土路,樹葉才剛發(fā)出嫩芽,但看起來和冬天光禿禿的并無二致。大卡車一過,整個路就塵土飛揚,當量相當于北京半年的霾吧。然后私家車一輛接著一輛給我們加餐。整個路途中只有我們兩是在走路的。但是她一直很開心,雖然也吃了巨多的灰和土,中途還要不斷給車讓路。
我覺得她追尋的幸福很簡單,而我也應(yīng)該更加努力讓她擁有那些簡單的幸福。她沒有因為現(xiàn)在的條件而責備或者不滿于我,而我也相信自己能夠不再讓她走在充滿塵土的路上。
都是愛情是神奇的,那個時候我突然感覺自己就像個詩人,總有好的句子冒在我的腦海里。
當我看著她的臉龐時,我喃喃道:
你溫柔時就像
那慵懶的太陽
暖暖的 溫和的
甜甜的 鋪在了我的臉上
你熱情時就像
那慵懶的太陽
暖暖的 溫和的
卻時不時灼燒下 我手上的皮膚
你喃喃囈語,聽著就像海浪拍打海灘的節(jié)奏
你天使般的微笑,帶來了清涼的海風(fēng)
身上的每塊 骨頭 每塊肉 每個感觸 由外而內(nèi)
都是放松的
看著你的背影 宇宙的每一刻粒子 都浸染了我的幸福
當她坐著火車準備回家時,我有點不舍:
火車
聽說你要離開幾天
心里的小人被撕裂成了兩個小人
一個小人很不情愿,很不舍
一個小人則理性的說
不能用不舍去綁架人
我慌了,不知道該聽誰的
午后悶熱無風(fēng),好似心中的兩個小人不再擾動,反倒焦躁了
我和你,坐在小區(qū)小廣場的一棵大樹下的石板凳上
天氣竟然涼爽了
風(fēng)吹動樹葉玩轉(zhuǎn)點滴陽關(guān)恰似波光嶙峋
一起的兩小時,沒怎么講話
好似千年
又如一瞬
似乎我們有了千年的情
但似乎只呆呆的看了你一秒
今天我們看到了很多的火車
有綠皮的
有白皮的
他們都是風(fēng)景
我們一起,開心的看著
然而
當你坐的那輛火車開動的時候
有一顆繩索
拉著我的心
車開的越遠
繩索蹦的越緊
想必這就是牽掛的來源吧
當車開的足夠遠,我的靈魂
也被拉出
我是一個無主的人了
當她好幾天不在我身邊的時候,我竟然有點了無生趣:
我有一塊新大陸
占據(jù)了總面積的一半
然而新大陸是被迷霧籠罩的
你來了
就像那太陽一樣
撥開云霧
整個新大陸在和煦的陽光中
鳥語花香
你不在的這幾天
我發(fā)現(xiàn)新大陸的鳥兒不再歌唱
樹葉不再長青
我以為我失去了整個新大陸
后來我才發(fā)現(xiàn)
我失去了整個世界
和她發(fā)訊息,有一種甜蜜的感覺:
她:
裹在被子里看書
忽然想和你說說話
又不知道說些什么
叫了叫你的名字
有點開心
只因喊你的時候你總在那
我:
正經(jīng)危坐著
敲著鍵盤
看著跳動的字符 時不時無意識瞅著手機
仿佛你就在手機里
看到有我名字的簡訊點亮了屏幕 也點亮了我的心??
看著計算機書,我想到的也是對她的情話:
據(jù)說,人類最有前途的計算機技術(shù)
是量子計算機
量子計算機的理論基礎(chǔ)是
無論兩個粒子離的有多遠,
當一個變化了,另一個也必然發(fā)生變化
你和我的心 便是量子幻化而成
無論我們有多遠
我們都能感受到對方的變化
你的心頭一想到了我
我的心頭便是一顫
溫馨的 暖暖的
愛情 不是占有 而是一種
牽掛
我們相遇在馬路的那一刻,也是一種美:
你在過馬路
撐著小傘 陽光BlingBling的
走到馬路中間
綠燈調(diào)皮的把自己變成了紅燈
前后的車在你身邊疾馳
小傘下有顆不知所措的心兒
我在迎面處 遠遠的就看到你的輪廓
越走近越確認就是你
心中的欣喜也難以掩飾
我闖著紅燈走到你跟前
然后在綠燈的陪護下
和你一起走到馬路邊
我愿消失在你的傘下
我睡覺的時候,我自言自語道:
我要去睡了
因為我怕
我只要醒著
我的眼眸里
我的腦海里
我的思緒里
都是你美麗的身影
然而,進入了夢鄉(xiāng)
你我依然不期而遇
從夢中甜醒
我睜開眼 想到的依然是你
你便是我的夢 我的現(xiàn)實
當她在看著窗外的雨時,我也在看著窗外的雨:
下雨天 屋子里的人總是禁不住犯懶
刷手機 看電視 睡覺
外邊的人們走的比誰都快
沒人愿意好好看看這雨
只想他早點停吧
我早上 好好的看了這雨
雨滴滴落在路旁汽車的后備箱上
以一個中心點迅速的向四周擴散 ,消失 。
路邊的淺淺的積水 在風(fēng)的作用下
卻也似乎有了海浪的形,
但終究是沒有海浪的氣勢。
走在夾路是兩排樹下的小道上
雨水拍打著樹葉
拍打著傘
這自然的聲音
終究是比耳機里的音樂來的更讓人舒暢
她在微博說:
你說喜歡雨 但是下雨時卻撐開了傘
你說喜歡陽光 但是陽光播撒時卻躲在陰涼
你說喜歡風(fēng) 但是清風(fēng)撲面時卻關(guān)上了窗
我在微博回答她:
我打開傘 緩緩的看著雨水從傘尖流下
是因為不忍雨水好似淚水 從我的臉頰流下
我躲在陰涼處 是因為這樣才能好好感受
我不想讓陽光因為過度的熱情傷害我而懊悔和傷心
我關(guān)上了窗子
是因為我馬上要出門 擁抱你
我相信:
如果說十指連心
那么
當我的手牽著你的手的時候
便是
我們心心相印的時候
我們的心通過手來連接
當我牽著你的時候
我便可以拉過你來
互相擁抱
擁抱的感覺
就像淋了漂泊大雨
回到了溫暖的家里
喝著熱氣騰騰的湯
看慣了世間的喜怒哀樂
無論多么努力 總有無可奈何的時候
一牽著你的手
我便有了前行的動力