Java開發工程師與大數據開發工程師有何區別?

最近發現有些同窗並不太瞭解大數據開發工程師這個職位,因此想簡單介紹一下什麼是大數據開發工程師,當前互聯網公司的數據開發究竟是什麼樣子的?和通常的Java或者PHP工程師在工做上有什麼區別?mysql

什麼不是大數據開發?nginx

僅使用數據庫(關係型mysql,sqlserver,oracle等 非關係型 mongo redis等),儘管數據量達到千萬級別,億級別不是大數據開發。
從業務系統的數據庫中查詢數據而後產出報表不是大數據開。
端上(頁面,h5,手機native)埋點上報數據記錄到數據庫中不是大數據開發。web

什麼是大數據開發redis

  1. 大數據開發須要的技能

到智聯上搜了一下大數據開發工程師這個職位,隨便點了幾個職位,截圖以下:sql

因此說,如今互聯網公司所指的大數據開發用到的工具是:hadoop,hive,hbase,spark,kafka等。數據庫

  1. 大數據開發作的事情

精簡到一個詞語就是:統計
精簡到兩類指標就是:PV和UV
精簡到一句話就是:統計各類指標的PV和UVapache

PC互聯網時代,各門戶網站(好比:新浪,網易,搜狐)關注的是各自網站今天被打開了幾回(pv),今天有多少人(uv)訪問了網站。更復雜一點的好比:tomcat

頁面上某個按鈕或者某個鏈接有多少人點擊了幾回
某個頁面上的熱力圖(點擊地方越多,圖上顏色越重)併發

移動互聯網時代,手機應用被用戶打開的次數和人數也是你們關注的重點,可是除此以外還多出了許多其餘很是重要的數據,因爲手機屏幕的限制,信息流成爲了移動時代的主流。oracle

各大門戶網站很是關注本身的新聞客戶端中:在信息流中曝光了多少篇文章,其中有多少篇文章被用戶點擊了。每篇文章閱讀了長時間,由於用戶點擊的文章越多,使用客戶端的時間越長,各公司的廣告收入才越高,因此各公司千方百計推薦用戶喜歡的內容。

  1. 如何作這些事情

由於網站的瀏覽行爲,手機客戶端中文章的曝光或者點擊這些數據很是大,基本以億爲單位起。因此傳統的把統計信息放到數據庫中的方式已經不能完成這項統計工做。(例如:wordpress博客中,用戶每閱讀一篇文章,mysql中就會更新這篇文章的閱讀次數+1)

因此大數據是經過日誌來統計這些指標。

好比:後臺服務的日誌(apache,tomcat,weblogic,nginx日誌)

主要難點在於:

日誌量太大(通常大點的互聯網公司,一個業務線天天的日誌都有幾個t,再大些的天天幾十t,幾百t也不奇怪),須要掌握大數據相關技術例如前面提到的hadoop,hive等。
數據的及時性,從離線計算來講,通常天天零點,前一天的日誌都接收完畢,開始計算前一天的數據,幾點能計算完畢?要看各個公司各自的要求。
數據的準確性。(這是重中之重,大數據開發的工做就是統計,統計的數據若是不許....)
若是是實時計算,須要掌握實時相關技術。例如:每5分鐘網站的在線人數。
監控監控監控:監控任務是否失敗,數據是否產出,產出的數據是否異常。
容災容災容災:若是任務失敗如何補救。好比實時任務,因爲某種緣由13:00到14:00的數據沒有,如何把數據補回來。

大數據開發和通常開發對比

在轉作大數據開發以前,一直在用Java做業務系統:例如hr系統(考勤,薪資等),收費系統。

談談我我的對業務系統開發和大數據開發的理解:

業務系統:
一句話:對數據庫的各類增刪改查操做。

重點難點在於:

對複雜業務的理解上(好比計算工資:基本工資,五險一金,全勤獎,高溫補貼,報銷,獎金,加班費.....等等都須要計算)。
線上服務的穩定,好比facebook,淘寶等網站高併發的壓力下維持網站正常運行。

大數據開發

一句話:對字符串的各類算數。

重難點在於:

數據的及時性。例如實時數據中,想知道 12:00~12:10這10分鐘的用戶數,若是這個數據在晚上20點才計算完成,那就沒什麼意義了。再好比,你們應該都有體驗過:再手機上刷新聞的時候,你點了某一篇文章,再繼續刷新聞,後面很快會出來很多和前面點擊的那篇文章相似的文章,這就是根據你的點擊給你及時推薦你有更大可能點的東西。
數據的準確性。這個重要性不言而喻
數據的穩定性和容災。

學互聯網技術不能猶豫,不然你就和高薪擦肩而過了。

相關文章
相關標籤/搜索