大數據開發和java開發有什麼不同?

最近發現有些同學並不太瞭解大數據開發工程師這個職位,所以想簡單介紹一下什麼是大數據開發工程師,當前互聯網公司的數據開發到底是什麼樣子的?和一般的Java或者PHP工程師在工作上有什麼區別?

什麼不是大數據開發?

僅使用數據庫(關係型mysql,sqlserver,oracle等 非關係型 mongo redis等),儘管數據量達到千萬級別,億級別不是大數據開發。

從業務系統的數據庫中查詢數據然後產出報表不是大數據開發。

端上(頁面,h5,手機native)埋點上報數據記錄到數據庫中不是大數據開發。

什麼是大數據開發?

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

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


大數據開發和java開發有什麼不同?


大數據開發和java開發有什麼不同?


所以說,現在互聯網公司所指的大數據開發用到的工具是:hadoop,hive,hbase,spark,kafka等。

2. 大數據開發做的事情

精簡到一個詞語就是:統計

精簡到兩類指標就是:PV和UV

精簡到一句話就是:統計各種指標的PV和UV

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

頁面上某個按鈕或者某個連接有多少人點擊了幾次

某個頁面上的熱力圖(點擊地方越多,圖上顏色越重)

移動互聯網時代,手機應用被用戶打開的次數和人數也是大家關注的重點,但是除此之外還多出了許多其他非常重要的數據,由於手機屏幕的限制,信息流成為了移動時代的主流。

各大門戶網站非常關注自己的新聞客戶端中:在信息流中曝光了多少篇文章,其中有多少篇文章被用戶點擊了。每篇文章閱讀了長時間,因為用戶點擊的文章越多,使用客戶端的時間越長,各公司的廣告收入才越高,所以各公司想方設法推薦用戶喜歡的內容。

3. 如何做這些事情

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

所以大數據是通過日誌來統計這些指標。

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

例如下圖,我的個人網站apache服務的access日誌。


大數據開發和java開發有什麼不同?


日誌的url字段中以 /年份(紅色部分)開頭行數就是這個網站文章頁被訪問的次數,以/category(藍色部分)開頭的行數就是這個網站分類目錄被訪問的次數。

當然我的這份日誌中是統計不了用戶數的,因為用戶數的統計需要在每條日誌上記錄當前用戶的唯一標識,然後再做個去重,去重後的數量就是用戶數,但是這裡沒有上報用戶的唯一標識。

那如何統計人數呢,一般互聯網公司會自己在頁面或者客戶端上生成一個用戶的唯一標識,然後主動上報到自己的日誌服務器上。

大數據主要難點在於:

日誌量太大(一般大點的互聯網公司,一個業務線每天的日誌都有幾個t,再大些的每天幾十t,幾百t也不奇怪),需要掌握大數據相關技術例如前面提到的hadoop,hive等。

數據的及時性

,從離線計算來說,一般每天零點,前一天的日誌都接收完畢,開始計算前一天的數據,幾點能計算完畢?要看各個公司各自的要求。

數據的準確性。(這是重中之重,大數據開發的工作就是統計,統計的數據如果不準....)如果是實時計算,需要掌握實時相關技術。例如:每5分鐘網站的在線人數。

監控監控監控:監控任務是否失敗,數據是否產出,產出的數據是否異常。

容災容災容災:如果任務失敗如何補救。比如實時任務,由於某種原因13:00到14:00的數據沒有,如何把數據補回來。

大數據開發和一般業務開發的對比

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

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

業務系統:

一句話:對數據庫的各種增刪改查操作。

重點難點在於:

對複雜業務的理解上(比如計算工資:基本工資,五險一金,全勤獎,高溫補貼,報銷,獎金,加班費.....等等都需要計算)。

線上服務的穩定,比如facebook,淘寶等網站高併發的壓力下維持網站正常運行。

大數據開發

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

重難點在於:

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

數據的準確性。這個重要性不言而喻

數據的穩定性和容災。

對大數據以及人工智能概念都是模糊不清的,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大數據學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大數據講師給大家免費授課,給大家分享目前國內最完整的大數據高端實戰實用學習流程體系 。從java和linux入手,其後逐步的深入到HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK等相關知識一一分享!


分享到:


相關文章: