開門見山:如果是有志想成為資料科學家或工程師的話,不要花,不值得。
連版上可能推的資策會大數據專班.....都不要去(真的要我寧可選Java EE班)。
恆逸我沒仔細研究,但應該沒差多少。
我是一位對資料處理有興趣的資料工程師,簡單說就是數據領域的黑手,不是帥帥的科學
家XD。但如果想一起當黑手的,我來說說有哪些東西可以先去看看有沒有興趣,再往下走:
(一)資料源:
Apache Flume
Apache Kafka
LogStash
負責接資料的,目前又以streaming為大宗:
Flume比較適合整合Hadoop生態系; Kafka則是偏SMACK架構; logStash則是ELK自成一派。
當然這不是絕對,而且可以互相接來接去,像我前一個案子也有Kafka->Flume->HDFS/HBase/Avro串來串去的。
我用這3套目前可以滿足大部分的streaming收資料的需求。
Flink沒時間碰QQ
阿批次勒?...HDFS API XD~
選一套的話:我選Kafka。搭配語言:Java Client API
(二)資料處理引擎:
MRv2(MapReduce)
Spark
這也是大家,即使是非業界也常常聽到的term,但要講的仔細也是好幾本書的內容了..
例如批次處理該用Spark好還是MapReduce。串流處理的話我聽過Spark Streaming,那跟
Storm又差在哪?什麼是micro-batch?
選一套的話,我選Spark,因為目前的應用還是單位時間點內記憶體能負載的量。還沒玩
過幾個PB的.....不然選擇可能不同了。
但有點尷尬的是,Spark用Java,即便是 Lambda寫起來也是有點憋屈..
所以我會推薦新手用Spark+Python+jupiter。
想讓自己被Funcational Programming玩的,可以選Spark in Scala(大推)
現在在IT鐵人賽有寫一點Spark +Scala的教學,有興趣的可以看看(招手):
http://ithelp.ithome.com.tw/users/20103839/ironman/1210
(三)結構化/半結構化查詢工具(Query Engine):
Hive
Impala (也開源了)
Spark SQL
這幾套我對Impala跟Spark SQL比較有研究而已。這邊就是SQL語言配的上場的地方啦!!
可以用簡單的SQL查詢當然開心啦,但是要注意的是先查哪些語法沒有支援....
不管哪一套都要注意"別幫他當作資料庫來用",他們是查詢工具不是資料庫!
另外注意所謂的Partition的設計,以及選用的檔案格式,例如Parquet/Avro等....
扯遠了....
這幾套與BI也都有良好的介接,Tableau/Qlik View不是問題
選一套的話,我選SparkSQL/Impala 搭配SQL語言以及各種JDBC/ODBC
(四)分散式儲存系統:
HDFS
Kafka
S3
最正宗的Hadoop肯定會用到HDFS,但也可以把資料暫存在Kafka上,處理完後就送進NoSQL
,另外S3也是好物,只是沒機會碰到。
選一套的話,還是從HDFS+Java API開始吧
(五)分散式資料庫:
HBase
MongoDB
ElasticSearch
Cassandra
恩...沒有MySQ, MariaDB, PostgreSQL, MS SQL更沒有Oracle XDDD
這幾套我都很愛,只是MongoDB我是接一個小系統上面有跑,沒有實際開發應用經驗。
資料庫有時候就端看你要走哪種應用了:
Hadoop正宗就是搭配HBase,想用SQL上面可以套一個PhoenixDB,設計就是在玩Primary
Key。
ElasticSearch:全文檢索斷詞那方面的應用,也就是ELK中的E,再搭配一個kibana整個好用。
Cassandra::與Spark整合良好,去正規化的Data modeling與P2P的架構整個是我的愛。
選一套的話,我私心選Cassadnra + Java/Scala Client~XD
(六)周邊:
Zookeeper, Hue, Yarn, Mesos。
還有太多周邊了商品了XDDD,Zookeeper可以要懂一些,HBase跟Kafka都有用