iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 30
2
Big Data

Spark 2.0 in Scala系列 第 30

[Spark-Day30](完結篇)資料工程師之路

從我的文章就大慨可以看出,我的內容很偏資料工程,而不是所謂的資料科學,更沒有講到半點ML或是DP。因為我是一位熱愛資料處理的(資料工程師)數據領域黑手XD。雖然不是帥帥的資料科學家,但只要想到一個submit,數十甚至是數百台節點便會一起協同運作,處理動則數百TB的資料,就忍不住揚起嘴角。歡迎同好多多交流!先前有人問過現階段資料工程師該往哪些方向準備,或是該去摸哪些技能。這邊有一篇我在論壇討論的回應:
Re: [請益] 值得花十萬到巨匠 學大數據軟體嗎?
在這裡稍微整理一下各種工具跟大家做個分享:


(一)資料源接資料工具:

  • Apache Flume
  • Apache Kafka
  • Logstash

這類負責在前接接資料的工具目前以streaming型式為大宗。Flume比較適合整合Hadoop生態系; Kafka與SMACK整合的很好,但我認為他算是泛用的架構;logstash則是ELK自成一派。當然這不是絕對,而且可以互相接來接去,以前做過一個案子有Kafka->Flume->HDFS/HBase/Avro串來串去。現在的案子logstash也有從kafka取資料。我感覺目前這3套可以滿足大部分的streaming收資料的需求。Flink沒時間碰但是他應該算Streaming Processing

選一套的話:我選Kafka。搭配語言:Java Client


(二)資料處理引擎:

  • Apache MRv2(MapReduce)
  • Apache Spark

這兩個是非圈人內也常常聽到的term,但要講的仔細也是好幾本書的內容了.. 例如批次處理該用Spark好還是MapReduce。串流處理的話我聽過Spark Streaming,那跟Storm又差在哪?什麼是micro-batch?(有看前幾天的Streaming篇的肯定都知道XD)

但有點尷尬的是,Spark用Java(即便是 Lambda)寫起來有點憋屈...所以我會推薦初學者可以用Spark+Python+jupiter。許多MOOC的線上課程都是用Python教授。想讓自己被Functional Programming玩的,可以選Spark in Scala然後跟我一起跳坑(往好處想是看Spark原始碼比較方便?)。

選一套的話,我選Spark。搭配語言:自行找坑跳


(三)結構化/半結構化查詢工具(Query Engine):

  • Apache Hive
  • Apache Impala (也開源了)
  • Spark SQL
  • Amazon Athena
    這幾套我對Impala與Spark SQL比較有使用經驗而已。雖然知道底層都是用Hive的MetaData,但是我還真的沒用Hive幾次...而這邊就是SQL語言配的上場的地方啦!!Amazon去年底(2016)宣佈Amazon Athena這套查詢工具,可以不用資料庫直接對S3上面數種資料直接以SQL查詢(其實底層也是Hive,上面再套一個Presto加速)。可以用簡單的SQL查詢當然開心啦,但是要注意的是先查哪些語法沒有支援.... 不管哪一套都要注意別當作資料庫來用,他們是查詢工具不是資料庫!另外注意所謂的Partition與檔案格式,例如Parquet/Avro等.... 扯遠了.... 這幾套與BI也都有良好的介接,Tableau/Qlik View不是問題

選一套的話,我選SparkSQL/Impala 搭配SQL語言以及各種JDBC/ODBC


(四)分散式儲存系統:

  • Apache HDFS
  • Apache Kafka
  • Amazon S3

Hadoop系統大多會用到HDFS,但也可以把資料暫存在Kafka上,處理完後就直接送進NoSQL(但別忘了Spark Streaming需要檔案系統放checkpoint,而HDFS是常用解),另外S3也是好物,只是沒機會碰到。

選一套的話,還是從HDFS+Java API開始吧


(五)分散式資料庫:

  • Apache HBase
  • MongoDB
  • ElasticSearch
  • Apache Cassandra
  • Redis

恩...沒有MySQL、MariaDB、PostgreSQL、MS SQL也沒有Oracle XDDD。上面這幾套NoSQL我都很愛,該選用哪個資料庫有時候就端看應用了:Hadoop最常見的就是搭配HBase,想下SQL上面可以套一個Phoenix,設計時就是在玩Primary Key;ElasticSearch是全文檢索斷詞那方面的應用(底層是大名鼎鼎的Apache Lucene),搭配一個Kibana整個好用;Cassandra與Spark整合良好,去正規化的Data modeling與P2P的架構是我的愛。

選一套的話,我私心選Cassandra + Java/Scala Client


(六)周邊:

  • Zookeeper
  • Hue
  • Yarn
  • Mesos

有太多周邊了商品了XDDD,Zookeeper可以要懂一些,HBase跟Kafka都有用。YARN是搭配Hadoop的老牌管理器,而Mesos很夯(SMACK中的'M')。

結語

http://ithelp.ithome.com.tw/upload/images/20170114/20103839uLSw2rRxTg.png
第一天從這張賀圖開始,就從這張賀圖結束吧。終於在磕磕碰碰中完成了30天的鐵人賽,但我認為這30天的付出絕對值回票價。從使用者或API caller轉換角色,開始思考為何API該這麼設計,或是必須用清楚的方式講解函式時,可以從中收穫非常多,至少對我來說。過程中也發現了許多原本自以為懂,但真的要講也沒那麼清楚的概念,好好的複習了一把!並且寫了七十幾個大大小小Snippet。謝了,我的第一次鐵人賽!各位鐵人,有空再見。預祝新年愉快。

Joechh
下臺一鞠躬


上一篇
[Spark-Day29](Spark好友篇) Cassandra with Spark長篇
系列文
Spark 2.0 in Scala30

1 則留言

0
SuCode
iT邦新手 5 級 ‧ 2019-03-07 22:34:28

Thanks so much.

我要留言

立即登入留言