我前兩份工作也是用Hadoop。我負責的是data stack tech lead
公司日資料量300TB
「大數據」這名詞真的很模糊
不過這不是台灣的問題,因為美國這邊很多人也都是這麼搞
我自己是這麼觀察啦...
把大數據當做資料科學技術來看的,大都沒有大資料
把大數據當作「大型資料工程」問題來看的,由於問題複雜度太高
所以很難作為資料科學問題來處理
這什麼意思?
大多數的資料科學演算法動輒O(N^2)以上
數據量一大複雜度馬上就飆到上萬台機器都算不動的情況
而一般的「大數據」工程師
就是要解決因應數據量上升而需要重新設計演算法的工程問題
hadoop就是為了解決這樣的工程問題而生
* * *
傳統資料庫提供的是高階的SQL抽象層
你只要處理集合間的連結即可
底層真正的演算法,不論是透過hash table, sort, b-tree
很多人一般根本不需要接觸到
但是當你數據量大到一定程度後
由資料庫引擎自動幫你決定的演算法就再也不適用了
Hadoop 的設計就是讓你可以把資料問題轉換成 sort (map reduce shuffle phase)
sort也是一般資料庫要解決大型資料查詢的最佳演算法
(例如group by, join, or diff)
一些高富雜度的問題,經過使用hadoop來客製演算法,就變得算得動了
我第一份工作就是將一個要算五個小時的PostgreSQL ETL
重寫成map reduce,變得只有二十分鐘
這個效率應該是用hive/pig都做不到的。因為要客製化演算法
這只是在數據量變大後其中一個變困難的問題
資料蒐集、處理(上述的ETL就是問題之一)、儲存、查詢
每件事都變得困難許多
通常資料科學家會拿去作分析的,大都是縮小很多的資料集了
他們的第一步,通常就是怎麼把資料變得更小,不然算不動XD
* * *
我最近試著把一些之前所學知識整理成部落格
不定期更新 :P
https://medium.com/@fchern
其中一篇是
「那些大數據書不會教的資料工程」
http://tinyurl.com/hvrt7s8
主要在講如何進行資料清理
有空可以看看
* * *
最後...不要寄信給我(包含職涯建議之類)
有問題請在版上發問 :)