1. 程式人生 > >大資料之路

大資料之路

大資料

大資料專家是怎樣煉成的?

由於很少看到學習大資料的知識圖譜,所以這裡斗膽分享一家之言。同時,大資料有很多細分領域,這裡特指通過分散式技術在海量資料中瞭解並分析過去發生了什麼(what happened)、為什麼會發生(why did it happen)、正在發生什麼(what is happening),而預測將來會發生什麼(what will happen)的高階分析往往基於機器學習和資料探勘,值得將來獨立成章深入討論,這裡暫且不表。

在成為大資料專家的道路上,往往要經歷六個坎坷,讓我們以六個年級來標明他們。只有戰勝眼前的坎坷,才能升入下一個年級。當然,有些如Doug Cutting或者Jeff Dean等天才同學,無師自通可以連跳好幾級偶爾也是有的。

一年級

第一個年級要學習的是理論。所有想成為大資料專家的人,必須先要閱讀一些經典的大資料理論知識,包括Schönberger的《大資料時代》和塗子沛的《大資料》等,只有在積累了大量的理論知識後,你才能跨入下一個年級。但這個年級有一個很特殊的規定,因為有些同學動手能力超強,所以他們可以跳過這個年級直接進入實戰去感悟這些理論。

  • 大資料,塗子沛分享了資料在美國崛起中起到的關鍵作用。
  • 大資料時代,Viktor Mayer-Schönberger通過真實案例分享了大資料的商業變革和管理變革。
  • 大資料思維與決策,Ian Ayres解釋了數字化思考如何讓企業變得更聰明。
  • 大資料才是好資料,Kenneth Cukier精彩的TED演講,大資料科學家也需要作秀的能力。
  • 深入淺出資料分析,Michael Milton編寫的雖然是關於概率統計的入門教程,但是延續了Head First一如既往的寓教於樂且用到的R或Excel如今都有大資料實現,推薦初學者一讀。

二年級

第二個年級學習的內容是實踐,也就是用大資料產品完成一些簡單目標。費爾巴哈說過,理論所不能解決的那些疑難,實踐會給你解決:

紙上得來終覺淺,絕知此事要躬行。

三年級

第三個年級學習的內容是實戰,這是極為重要的。那些理論學習中的優秀學生如果不能過這一關,他們就將獲得一個光榮的成就——紙上談兵。

我們來解釋一下為什麼實戰如此重要。雖然大資料理論都是高年級的學長們經驗總結,但他們寫這些東西的時候情況和現狀是不完全一樣的,在實戰中如果照搬是要吃大虧的。作為一個想成為大資料專家的學員,一般都是從專案幹起,因為只有專案才能讓一個人成為真正的專家,必須親密與客戶交流澄清需求細節,親手敲打鍵盤架構大資料平臺,親身經歷運維不知白晝與黑夜,明白無法交付專案是要餓肚子的,瞭解不能運維是要挨客戶罵的,他們才會明白什麼是實戰。

大多數學員會在這一關被淘汰,他們會改行,一生當一個大資料票友,這對他們來說並不見得是一件壞事。而留存下來的那些學員,在殘酷的專案實戰中逐漸瞭解了大資料的規律,開始真正走上專家之路。

四年級

好了,我們帶領剩下的學員來到四年級,四年級需要學習的是結合大資料與雲端計算。

雲端計算為大資料提供無盡的資源,大資料為雲端計算帶來資料服務。大資料與雲端計算的關係好比倚天與屠龍,單獨使用已然是神兵利器,結合起來更能得到《九陰真經》、《降龍十八掌》和《武穆遺書》。

雲端計算平臺上的大資料服務大致分兩種:

  • 在雲主機上部署Apache基金會提供的開源大資料軟體,軟體授權費用很低但是需要自行運維。
  • 使用雲端計算平臺提供的託管大資料服務,用起來省心不過遷移相對困難。

下面是部分雲端計算平臺提供的大資料服務與Apache基金會提供的開源大資料軟體的對比:

Microsoft Amazon Apache
儲存 Blob Storage S3 HDFS
計算 HDInsight Data Lake EMR Hadoop Spark Flink
資料庫 SQL Database RDS Aurora
NoSQL Table Storage Doc DB Dynamo DB HBase Cassandra
資料倉儲 SQL DW RedShift Hive Pig Drill HAWK Druid Impala
商務智慧 Power BI Quick Sight
訊息系統 Event Hub Kinesis Streams Kafka
流處理 Stream Analytics Kinesis Analytics Kinesis Firehose Storm Samza
資料流 Data Factory Data Pipeline Beam Ozzie Ni-Fi

當然,有的雲端計算平臺提供了開源大資料軟體的託管服務,即降低了授權費用又不用操心運維。百度雲天算大資料平臺就是一個例子。

這就是四年級學員要做到的。能過這一關的人已經很少了,剩下的精英們,我們繼續前進!

五年級

五年級是最重要的一個年級,在這個年級裡,學員們要學習的是判斷。你要明白的是,你所掌握的是專案的成敗,你就是指揮,而所有的人都等著你拿注意。如果你能從那變化莫測的架構和紛繁蕪雜的技術中發現其中的奧妙,並就此做出正確的決斷,那麼恭喜你,你已經具備了大資料專家最主要的素質。

判斷並非無據可依。德國有種智慧,叫做生活是具體的,也就是提倡不要泛泛地談概念,關鍵是要拿出來比一比。歸類後的大資料文獻羅列於斯,對於不同選擇的優缺點了然於胸便可以進入下一個階段。

資源排程

  • Apache Hadoop YARN – Yet Another Resource Negotiator
  • Mesos – A Platform for Fine-Grained Resource Sharing in the Data Center
  • Fuxi – a Fault-Tolerant Resource Management and Job Scheduling System at Internet Scale
  • Omega – Flexible, Scalable Schedulers for Large Compute clusters
  • Large-scale Cluster Management at Google with Borg
  • Autopilot – Automatic Data Center Management

海量儲存

  • The Google File System
  • The Hadoop Distributed File System
  • Windows Azure Storage – A Highly Available Cloud Storage Service with Strong Consistency
  • Erasure Coding in Windows Azure Storage

NoSQL

  • Dynamo – Amazon’s Highly Available Key-Value Store
  • Bigtable – A Distributed Storage System for Structured Data
  • Cassandra – A Decentralized Structured Storage System

NewSQL

  • Megastore – Providing Scalable, Highly Available Storage for Interactive Services
  • Spanner – Google’s Globally Distributed Database
  • F1 – A Distributed SQL Database that Scales

分佈計算

  • Massively Parallel Databases and MapReduce Systems
  • MapReduce – Simplified Data Processing on Large Clusters
  • Spark – Cluster Computing with Working Sets
  • Resilient Distributed Datasets – A Fault-Tolerant Abstraction for In-Memory Cluster Computing
  • The Stratosphere Platform for Big Data Analytics
  • Spinning Fast Iterative Data Flows
  • Dryad – Distributed Data-parallel Programs from Sequential Building Blocks
  • SCOPE – Easy and Efficient Parallel Processing of Massive Data Sets
  • DryadLINQ – A System for General-Purpose Distributed Data-Parallel Computing Using a High-Level Language

流式處理

  • Storm @ Twitter
  • Twitter Heron – Stream Processing at Scale
  • S4 – Distributed Stream Computing Platform
  • Discretized Streams – Fault-Tolerant Streaming Computation at Scale
  • MillWheel – Fault-Tolerant Stream Processing at Internet Scale
  • Kafka – a Distributed Messaging System for Log Processing
  • Realtime Data Processing at Facebook
  • Building LinkedIn’s Real-time Activity Data Pipeline

資料倉儲

  • Hive – A Petabyte Scale Data Warehouse Using Hadoop
  • Hive – A Warehousing Solution Over a Map-Reduce Framework
  • Major Technical Advancements in Apache Hive
  • RCFile – A Fast and Space-efficient Data Placement Structure in MR-based Warehouse Systems
  • Kudu – Storage for Fast Analytics on Fast Data
  • Data Warehousing and Analytics Infrastructure at Facebook
  • Dremel – Interactive Analysis of Web-Scale Datasets
  • Spark SQL – Relational Data Processing in Spark
  • Impala – A Modern Open-Source SQL Engine for Hadoop
  • HAWQ – A Massively Parallel Processing SQL Engine in Hadoop
  • Star Schema Benchmark
  • Tenzing – A SQL Impelmentation on the MapReduce Framework
  • Druid – A Real-time Analytical Data Store
  • Mesa – Geo-Replicated, Near Real-Time, Scalable Data Warehousing
  • Indexing HDFS Data in PDW – Splitting the Data from the Index
  • Split Query Processing in Polybase
  • The Snowflake Elastic Data Warehouse
  • Amazon Redshift and the Case for Simpler Data Warehouses

資料整合

  • Pig Latin – A Not-So-Foreign Language for Data Processing
  • The Dataflow Model – A Practical Approach to Balancing Correctness, Latency, and Cost
  • FlumeJava – Easy, Efficient Data-parallel Pipelines
  • Summingbird – A Framework for Integrating Batch and Online MapReduce Computations
  • Gobblin – Unifying Data Ingestion for Hadoop

順便說一句,大資料時代是開源軟體引領的時代,其中緣由可以參考為什麼開源開放的大資料平臺才能成功

六年級

但是還有一關是你必須通過的,只有過了這一關,你才是真正的大資料專家。那就是,成為大資料產品經理或者大資料架構師,親手打造一款大資料產品!