大資料開發工程師需要掌握什麼技能?
最近發現有些同學並不太瞭解大資料開發工程師這個職位,自己轉大資料開發也已經三年了,所以想 簡單介紹一下什麼是大資料開發工程師 ,當前網際網路公司的資料開發到底是什麼樣子的?和一般的java或者php工程師在工作上有什麼區別?
宣告:本文僅代表個人觀點,有不同意見歡迎提出。另外本文對大資料開發工程師沒什麼參考價值~僅是我各人對這個職位做一個介紹。
1 先說 我認為 什麼不是大資料開發
僅使用資料庫(關係型mysql,sqlserver,oracle等 非關係型 mongo redis等),儘管資料量達到千萬級別,億級別不是大資料開發。
從業務系統的資料庫中查詢資料然後產出報表不是大資料開。
端上(頁面,h5,手機native)埋點上報資料記錄到資料庫中不是大資料開發。
2 我認為什麼是大資料開發
大資料開發需要的技能
到智聯上搜了一下大資料開發工程師 這個職位,隨便點了幾個職位,截圖如下:
所以說首先,現在網際網路公司所指的大資料開發用到的工具是:hadoop,hive,hbase,spark,kafka等.
大資料開發做的事情
精簡到一個詞語就是: 統計
精簡到兩類指標就是: PV和UV
精簡到一句話就是:統計各種指標的PV和UV.
PC網際網路時代,各入口網站(比如:新浪,網易,搜狐)關注的是各自網站今天被開啟了幾次(pv),今天有多少人(uv)訪問了網站.更復雜一點的比如:
頁面上某個按鈕或者某個連線有多少人點選了幾次.
某個頁面上的熱力圖(點選地方越多,圖上顏色越重)
移動網際網路時代,手機應用被使用者開啟的次數和人數也是大家關注的重點,但是除此之外還多出了許多其他非常重要的資料,由於手機螢幕的限制,資訊流成為了移動時代的主流.
各大入口網站非常關注自己的新聞客戶端中: 在資訊流中曝光了多少篇文章, 其中有多少篇文章被使用者點選了.每篇文章閱讀了長時間,因為使用者點選的文章越多,使用客戶端的時間越長,各公司的廣告收入才越高,所以各公司想方設法推薦使用者喜歡的內容~
如何做這些事情
因為網站的瀏覽行為,手機客戶端中文章的曝光或者點選這些資料非常大,基本以億為單位起,
所以傳統的把統計資訊放到資料庫中的方式已經不能完成這項統計工作.(例如,wordpress部落格中,使用者每閱讀一篇文章,mysql中就會更新這篇文章的閱讀次數+1)
所以大資料是透過日誌來統計這些指標.
比如:後臺服務的日誌,例如:apache,tomcat,weblogic,nginx日誌
例如下圖,我的個人網站apache服務的access日誌
日誌的url欄位中 以 /年份(紅色部分)開頭行數就是這個網站文章頁被訪問的次數
以/category(藍色部分)開頭的行數就是這個網站分類目錄被訪問的次數.
當然我的這份日誌中是統計不了使用者數的,因為使用者數的統計需要在每條日誌上記錄當前使用者的唯一標識,然後再做個去重,去重後的數量就是使用者數.但是這裡沒有上報使用者的唯一標識.
那如何統計人數呢, 一般網際網路公司會自己在頁面或者客戶端上生成一個使用者的唯一標識,然後主動上報到自己的日誌伺服器上.
流程如下:
頁面,客戶端埋點(按照指定的欄位格式,在特定的時間把資料傳送出去)
日誌接收伺服器,通常是nginx叢集專門用來接收日誌.
例如我的個人網站中,我用的百度統計來統計網站的使用者數,使用者只要開啟我的網站就會有如下資訊傳送到百度的伺服器上:
其中:hm.gif 是一個大小為0的圖片,只是為了把這條url記錄列印到nginx服務的日誌中.
我猜測BAIDUID這個欄位是百度用來幫我統計人數的.
上面主要說的是日誌的產生(端上產生,服務端接收), 大資料開發工程師的工作就是 從接收到的日誌中計算出來需要的指標,並且展示在頁面上,方便分析師檢視
(因為接收到的日誌格式不整齊還有一些垃圾資料,所以需要對日誌進行清洗(etl操作),再處理成各種資料倉儲表,方便後續統計.)
例如:一行access日誌:
218.69.234.153 - - [23/Sep/2018:21:08:00 +0800] "GET /2018/09/python-scrapy-%e7%99%bb%e5%bd%95%e7%9f%a5%e4%b9%8e%e8%bf%87%e7%a8%8b/ HTTP/1.1" 200 12466
處理之後:為四列(ip, 時間, http狀態, url),更方便統計.
218.69.234.153 2018-09-23 21:08:00 200 /2018/09/python-scrapy-%e7%99%bb%e5%bd%95%e7%9f%a5%e4%b9%8e%e8%bf%87%e7%a8%8b/
然後 按照某種格式計算的行數就是次數.
按照某種規則,取出某個欄位,用這個欄位排重,就是UV(如果這個欄位是使用者唯一標識,就是人數)
主要難點在於:
日誌量太大(一般大點的網際網路公司, 一個業務線 每天的日誌都有幾個t,再大些的每天幾十t,幾百t也不奇怪),需要掌握大資料相關技術例如前問題到的hadoop,hive等
資料的及時性,從離線計算來說,一般每天零點,前一天的日誌都接收完畢,開始計算前一天的資料,幾點能計算完畢? 要看各個公司各自的要求.
資料的準確性.(這是重中之重,大資料開發的工作就是統計,統計的資料如果不準….)
如果是實時計算,需要掌握實時相關技術.例如:每5分鐘網站的線上人數.
監控監控監控:監控任務是否失敗,資料是否產出,產出的資料是否異常.
容災容災容災:如果任務失敗如何補救.比如實時任務,由於某種原因13:00到14:00的資料沒有,如何把資料補回來.
大資料開發和一般業務開發的對比
在轉做大資料開發之前,一直在用java作業務系統: 例如 hr系統(考勤,薪資等).收費系統.
談談我個人對業務系統開發和大資料開發的理解:
業務系統:
一句話:對資料庫的各種增刪改查操作.
重點難點在於:
對複雜業務的理解上(比如計算工資:基本工資,五險一金,全勤獎,高溫補貼,報銷,獎金,加班費…..等等都需要計算).
線上服務的穩定,比如facebook,淘寶等網站高併發的壓力下維持網站正常執行.
大資料開發
一句話:對字串的各種算數.
重難點在於:
資料的及時性.例如實時資料中,想知道 12:00~12:10這10分鐘的使用者數,如果這個資料在晚上20點才計算完成,那就沒什麼意義了.再比如,大家應該都有體驗過:再手機上重新整理聞的時候,你點了某一篇文章,再繼續重新整理聞,後面很快會出來不少和前面點選的那篇文章類似的文章.這就是根據你的點選給你 及時 推薦你有更大可能點的東西.
資料的準確性.這個重要性不言而喻.
資料的穩定性和容災.
僅僅分享個人的一些小看法,雖不全面也不繫統,但是能夠讓未接觸過的同學瞭解一些大資料開發吧~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69903766/viewspace-2637483/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 大資料開發工程師需要具備哪些技能?大資料工程師
- 做大資料工程師需要掌握哪些技能呢?大資料工程師
- 成為一名大資料工程師,需要具備什麼技能?大資料工程師
- Linux運維工程師需要掌握什麼技能?Linux入門教程Linux運維工程師
- 前端工程師要做什麼?前端工程師需要什麼根本技能?前端工程師
- 大資料工程師需要掌握的知識點大資料工程師
- 大資料前景如何?大資料開發工程師是什麼?大資料工程師
- linux網路工程師需要掌握哪些技能?linux網路工程師技能分析Linux工程師
- java和大資料架構師,各需要什麼技能?Java大資料架構
- 搞大資料,Java 工程師需要掌握哪些知識?大資料Java工程師
- Java 開發工程師需要學什麼?Java工程師
- Java開發工程師需要學什麼?Java工程師
- 在公司裡,web前端開發工程師主要是做什麼的?需要掌握什麼Web前端工程師
- 接地氣,到底什麼才是大資料開發工程師?大資料工程師
- 資料分析師要掌握什麼知識和技能?
- UI設計師要求高嗎?需要掌握什麼技能?UI
- 優秀前端開發工程師必須掌握的七大技能前端工程師
- 華瑞IT學校:優秀Java工程師需要掌握八大技能Java工程師
- Python web開發需要掌握什麼技能?基礎很關鍵!PythonWeb
- 高階軟體測試工程師,需要掌握哪些技能工程師
- 新時代的網路工程師需要掌握哪些技能工程師
- 大資料開發需要學習什麼?大資料平臺是什麼?大資料
- 掌握11項技能,你就是優秀的前端開發工程師前端工程師
- 運維工程師需要掌握的7大武器運維工程師
- 學習大資料需要掌握MySQL資料庫的相關技能嗎?大資料MySql資料庫
- 桌面運維工程師需要會哪些技能?主要是做什麼的?運維工程師
- 資料科學家最需要什麼技能?資料科學
- 【就業】大資料開發、Hadoop開發工程師、資料探勘、演算法工程師各路人才薪資怎麼樣?就業大資料Hadoop工程師演算法
- 五分鐘帶你瞭解年薪50W的Web前端開發工程師需要掌握什麼?Web前端工程師
- 個人總結的一箇中高階Java開發工程師或架構師需要掌握的一些技能Java工程師架構
- Java開發需要掌握哪些技術?Java程式設計師必備技能Java程式設計師
- 想要從事運維崗位,需要掌握什麼技能?運維
- 學了Python能做什麼 都需要掌握這些技能Python
- 大資料時代,財經類媒體人需要掌握哪些技能大資料
- Web前端工程師需要會什麼?Web前端工程師
- 一名合格的前端開發工程師應該掌握的8個技能前端工程師
- 大資料工程師需要學習哪些技術?大資料工程師
- .Net WEB 程式設計師需要掌握的技能Web程式設計師