Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)

18,792
-1

Published on

兩年前我們為大家簡單介紹過 Hadoop。兩年之後,Hadoop 不只本身有著蠻大的改變,整個 Hadoop Ecosystem也不斷開枝散葉,衍生出許多新的子計畫,與現有的 IT 系統整合的更為密切,同時也激發出大家的創意,透過其他不同的想法與作法,共同面對 Big Data 這個議題。演講內容涵蓋:

0. 前情提要 - Hadoop 簡介
1. 進擊的 Hadoop - Hadoop 2.x 的改進
2. Hadoop 家族 - Hadoop 家庭裡的大咖
3. Hadoop 戰隊 - 出名的 Hadoop Distribution
4. Hadoop 富二代 - 新一代的 Hadoop 相關技術
5. Hadoop 小圈圈 - Hadoop 的派系之爭
6. 喝咖啡騎大象的行前建議

Published in: Software
16 Comments
248 Likes
Statistics
Notes
No Downloads
Views
Total Views
18,792
On Slideshare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
275
Comments
16
Likes
248
Embeds 0
No embeds

No notes for slide

Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)

  1. 1. 這些年,我們一起追的 Hadoop Hadoop, the Apple of Our Eyes 蘇國鈞 monster.supreme@gmail.com 資訊工業策進會 數位教育研究所 資訊技術訓練中心 1 / 74
  2. 2. 在 Java SE 與 Java EE 領域有十多 年的講師教學經驗,熟悉 SOAP/RESTful Services、Design Patterns、EJB/JPA 等 Java EE 規 格,Struts/Spring/Hibernate 等 Open Source Framework,與 JBoss AS、 GlassFish 等 Application Server。 自認為會的技術不多,但是學不會的 也不多,最擅長把老闆交代的工作, 以及找不到老師教的技術,想辦法變 成自己的專長。 目前負責 Java 與 .NET 雲端運算相 關技術的推廣,主要包括 Hadoop Platform 與 NoSQL 等 Big Data 相關 應用,Google App Engine、Microsoft Azure 與 CloudBees 等雲端平台的運 用,以及 Android、Windows Phone 等 Smart Phone 的應用程式開發。 PS. 除了我的照片之外,投影片裡頭 所有的圖片都來自於 Google Search,版權歸原來各網站與企業所 有,謝謝。 Bio 2 / 74
  3. 3. Agenda 0. 前情提要 1. 進擊的 Hadoop 2. Hadoop 家族 3. Hadoop 戰隊 4. Hadoop 富二代 5. Hadoop 小圈圈 6. 喝咖啡騎大象建議 因為這個題目其實包山包海,所以我們今天只把焦點放在 Hadoop 身上。 3 / 74
  4. 4. 前情提要 4 / 74
  5. 5. 由創建 Lucene 與 Nutch 的 Doug Cutting 主導開發 Lucene 是個全文檢索的程式 庫,Nutch 是個搜尋引擎 依循著 Google 2003/2004 年發表的論文來開發 2006 年從 Nutch 獨立出來, 稱為 Hadoop Hadoop 是 Doug 兒子黃色大象 玩偶的名稱 2008-01 Apache 的 Top- Level Project 2009-09 Doug Cutting 加入 Cloudera 擔任 Architect 2011-06 Yahoo! 內部的 Hadoop 團隊 Spin Off 成立 Hortonworks Hadoop 簡史 5 / 74
  6. 6. The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly- available service on top of a cluster of computers, each of which may be prone to failures. Apache Hadoop 網站自我介紹 6 / 74
  7. 7. 對購物網站來說,就是知道使用 者的: 動線 看過的頁面 回應過的留言 ... 再來一下交叉比對: 基本資料 歷史購物記錄 ...   Hadoop 是 Big Data 的好朋友 7 / 74
  8. 8. Hadoop + Big Data 的預測 然後就可以寄更精準的型錄給你(女兒)! 8 / 74
  9. 9. Hadoop + Big Data 的分析 然後一堆書(作者)就被打臉了! 9 / 74
  10. 10. 1.  Submit Job 2.  JT 分派 Task 給 TT 3.  TT 執行 Task 4.  TT 向 JT 回報 Hadoop 1.x 架構 - MapReduce (MRv1) 只有一個 JobTracker (Master),可是要管理多個 TaskTracker (Slave)! 10 / 74
  11. 11. Hadoop 1.x 架構與限制 比較基本的模組: Hadoop HDFS (Storage) Hadoop MapReduce (Computing Engine + Resource Management + Job Scheduling / Monitoring + ...) 比較明顯的限制: 每個 Cluster 大概就是 4,000 - 4,500 個 Node JobTracker 是架構瓶頸,Concurrent Task 大概是 40,000 上下 HDFS 只能有一個 Namespace,沒辦法分開管控 /sales、/accounting、... 只能執行 MapReduce Job ... 弱弱的問一下:台灣有多少企業 Cluster 有這麼大?Task 有這麼 多? 11 / 74
  12. 12. 我們對 Hadoop 的期許: Batch Job Interactive Query Real-Time Processing Graph Processing Iterative Modeling 人心不足蛇吞象 Hadoop 的體質 (Batch Processing) 問題: 每次就是一個 Batch Job,一個接著一個 每個 Batch Job 做的事就是讀入所有資料、處理、寫出結果 Job 與 Job 之間的 I/O Overhead 太高,但是彼此之間又沒有交集 Hadoop 掌握所有資料 (HDFS),但是只有一種玩法 (MapReduce)? 12 / 74
  13. 13. 改造好呢?還是放棄好呢? 13 / 74
  14. 14. 進擊的 Hadoop 14 / 74
  15. 15. 改造 MapReduce Hadoop 掌握所有資料 (HDFS),但是提供多種玩法 (YARN)! 希望把 Hadoop 從 Batch 應用變成 Data Operating System: 透過 MapReduce 進行 Batch Processing 透過 Hive 與 Tez 進行 Interactive SQL Query ... 15 / 74
  16. 16. MapReduce 改造前 Hadoop 原來的架構,MapReduce 是一切應用的基礎 所有 Job 都得轉換成 MapReduce 16 / 74
  17. 17. MapReduce 改造 Phase 1 先把 Resource Management 從 MapReduce 拉出來,變成 YARN Other YARN Frameworks 就有存在的可能了 17 / 74
  18. 18. MapReduce 改造 Phase 2 讓 MapReduce 變成一個單純跑在 YARN 上頭的 Batch Job Computing Framework 在 YARN 上頭另外發展 Tez、Storm、Giraph、Spark、 OpenMPI、... 18 / 74
  19. 19. MapReduce 改造 Phase 3 把原先跑在 MapReduce 上的應用 (Hive、Pig),搬到更適合的 Computing Framework (比方說 Tez) 19 / 74
  20. 20. HDFS 也變強了: High Availability 可以有多個 Namespace 可以做 Snapshot I/O 速度快 2.5-5 倍 ... 改造 HDFS -> HDFS2 20 / 74
  21. 21. Hadoop 2.x 架構 比較基本的模組: Hadoop Common (Core Libraries) Hadoop HDFS (Storage) Hadoop MapReduce (Computing Engine) Hadoop YARN (Resource Management + Job Scheduling / Monitoring) 比較沒人知道的事: Hadoop 2.x 也默默地做了四五年了 ... 雖然是大修,但是 Backward Compatibility 做的很棒 Yahoo! 去年就已經把 Hadoop 2.x 部署在 35,000+ Node 跑了六 個月以上 ... 21 / 74
  22. 22. 1.  Submit Job 2.  建構特定 AM 3.  向 RM 註冊 AM 4.  送 Request 給 RM 5.  配置啟動 Container 6.  AM/Container 溝通 7.  Client/AM 溝通 8.  回收 AM Hadoop 2.x 架構 - MapReduce (MRv2) ResourceManager 與 NodeManager - 負責協調 Resource 調度 ApplicationMaster - Framework-Specific,負責跟 ResourceManager 協調 Resource,跟 NodeManager 合作執行 Container,監督 Container 以及 Resource 消耗的狀況,也負責 Schedule 各個 Task 22 / 74
  23. 23. MapReduce (MRv2) 分工優點 ResourceManager 其實是 Resource Arbitrator,要考量到 Capacity、Fairness、 SLA 等問題,也提供 Pluggable Interface 實作不同想法。 ApplicationMaster 其實是 MRv1 與 MRv2 最大的不同,負責與中央的 ResourceManager 與各地的 NodeManager 協調溝通,執行與監督各個 Container 的運作狀況,容錯也歸它管。 因為 ApplicationMaster 分擔了 MRv1 時代 ResourceManager 該做的絕大多數工 作,所以 MRv2 的 ResourceManager 就變得非常地 Scalable,撐到 10,000+ Node 也不是問題。又因為 ApplicationMaster 是 Per-Application 配置,所以也不會 變成新的瓶頸。 因為 ApplicationMaster 是 Framework-Specific,所以 ResourceManager 就可以變 成是一個中立的機制,方便支援各種不同 Framework。 23 / 74
  24. 24. YARN - Yet Another Resource Negotiator A General-Purpose Distributed Application Management Framework Data Operating System for Enterprise Hadoop 24 / 74
  25. 25. Resource vs. Container Resource Model 可以考量到以下的細節: Rack、Host 等 Resource 名稱 CPU 幾個 Core 記憶體 硬碟大小 網路頻寬 Container 就是根據 Resource Model 核可的 Resource。 因為 YARN 可以執行的 Application 種類變多,所以 ApplicationMaster 還必須提供要啟動 Container 的 Command- Line 執行檔案、環境變數、3rd-Party JAR 檔案、資料檔案,甚 至是 Security Token 等相關資料,才能夠跟 NodeManager 一起 啟動 Container。 其實,目前的 Container,直接對應到 OS 的 Process。 25 / 74
  26. 26. Hadoop 不再只是能跑 Batch 的小象了! 26 / 74
  27. 27. Hadoop 家族 27 / 74
  28. 28. Windows 家族 28 / 74
  29. 29. Hadoop 動物園 29 / 74
  30. 30. HDFS:Distributed File System MapReduce:Distributed Data Analysis Engine Avro:Language-Neutral Data Serialization System (2010-05 成為 Top-Level Project) Mahout:Scalable Library for Machine Learning HBase:Distributed Data Storage (2010-05 成為 Top-Level Project) Pig:High Level Language for Data Analysis (2010-09 成為 Top-Level Project) Hive:Data Warehousing and SQL-Like Query (2010-09 成為 Top-Level Project) Sqoop:Data Migration Tool Between HDFS and RDBMS Hadoop Ecosystem 30 / 74
  31. 31. HCatalog Hadoop 裡頭的 Naming Service 讓各種不同技術,不需要知道資料真實存放的位置,也能夠很方便 地存取資料 31 / 74
  32. 32. Yahoo! 做出了 Pig,把 PigLatin 翻成一堆 MapReduce Job Facebook 做出了 Hive,把 HiveQL 翻成一堆 MapReduce Job Hive 與 Pig 大家都想用 Hadoop 處理 Big Data,但不是每個人都會寫 MapReduce / Java,於是: 32 / 74
  33. 33. Stinger Initiative 緣由: Hortonworks 主導 希望在 Hadoop 從 MapReduce 演化成 Data Processing Platform 之後,改善 Hive 的效能 滿足 Interactive Query 與 PB-Scale Processing 的需求 三大目標: Speed:比 Hive 10 快 100 倍 Scale:撐的下 TB 到 PB 等級的資料 SQL Compatibility:最廣泛的 SQL 語法支援 13 個月內一共有來自 44 家公司 145 位 Developer 貢獻了 39 萬行程式碼給 Hive,產出 3 個 Release! 33 / 74
  34. 34. Stinger Initiative 三階段 Hive 改造計畫 34 / 74
  35. 35. Hive 改造成果 - Speed 35 / 74
  36. 36. Hive 改造成果 - Scale 支援 ORCFile (Optimized Row Columnar File),提供優異的壓縮比) 以 ORCFile 存放的資料一樣可以透過 HCatalog 存取,所以 Pig 或 MapReduce 都可以無縫接軌 36 / 74
  37. 37. Hive 改造成果 - SQL Compatibility 現在也支援 Role、Privilege 與 Grant、Revoke 37 / 74
  38. 38. Sqoop Cloudera 主導 整合 Hadoop 裡頭的資料跟 RDBMS 裡頭的資料 透過 JDBC 與 MapReduce 進行彼此的資料轉換 38 / 74
  39. 39. 不論是人數或顏色,實在都很難分辨。 Hadoop 戰隊 39 / 74
  40. 40. Hadoop Distribution Doug Cutting 先生在 2011 年 Hadoop World 的 Keynote 說: The similarity between Hadoop and Linux kernel, and the corresponding similarity between the big stack of Hadoop ( Hive, Hbase, Pig, Avro, etc.) and the fully operational operating systems with its distributions (RedHat, Ubuntu, Fedora, Debian etc.) 所以,市面上就有了一堆大同小異的 Hadoop Distribution: Cloudera 有 Cloudera Distribution for Hadoop (CDH) Oracle 有 Oracle Big Data Appliance Intel 以前有 Intel Distribution for Hadoop (IDH),現在是直接與 Cloudera 合作 Hortonworks 有 Hortonworks Data Platform (HDP) Microsoft 有 Microsoft HDInsight MapR 有 MapR Distribution for Apache Hadoop (M3, M5, M7) ... 喜歡 Make (自造者運動) 的人還是可以去 Apache BigTop 網站自行下載組裝。 40 / 74
  41. 41. Cloudera Distribution for Hadoop 2014 年獲得 900M 的資金挹注,其中 740M 來自 Intel。 41 / 74
  42. 42. Oracle Big Data Appliance Oracle Big Data Platform 的底層是 Cloudera Distribution for Hadoop (CDH)。 42 / 74
  43. 43. Hortonworks Data Platform Hortonworks 是主導 Hadoop Windows 版 Porting 與 YARN 開發的重要廠商。 2013 年拿到 50M 的 Funding,2014 年又拿到 100M。 43 / 74
  44. 44. Microsoft HDInsight HDInsight 的底層是 Hortonworks Data Platform (HDP)。 44 / 74
  45. 45. MapR Distribution for Apache Hadoop 2013 年拿到 35M 的 Funding,2014 年又從 Google 跟 Qualcomm 拿到 110M。 45 / 74
  46. 46. 難得有不是萬年小學生的日本卡通! Hadoop 富二代 46 / 74
  47. 47. Parallel Processing: Tez Spark ... User Interface: Hue SQL on Hadoop: Impala Presto Drill/Dremel/BigQuery ... Data Collector: Flume Chukwa Scribe ... Machine Learning: Mahout ... 跟 Hadoop 一起解決 Big Data 問題吧! 47 / 74
  48. 48. Tez Hortonworks 主導 A framework for near real-time big data processing Inspired by Microsoft Dryad,是 Stinger Initiative 的一部分 Dataflow model on a directed acyclic graph (DAG) of nodes 能夠 讓 Query Plan 更簡單、更有效率 48 / 74
  49. 49. UC Berkeley AMPLab 2009 年的研究計畫,2010 年 Open Source,由 DataBricks 負責 架在 HDFS 之上的 General- Purpose Cluster Computing System In-Memory 比 Hadoop 快 100 倍 In-Disk 比 Hadoop 快 10 倍 可以直接執行,也可以在 YARN 上執行 MLLib、Mahout、Crunch、 Cascading 已經搬到 Spark Cloudera、DataBricks、IBM、 Intel 與 MapR 正在努力搬 Hive、Pig、Sqoop 與 Oozie   Spark - Lightning-Fast Cluster Computing 49 / 74
  50. 50. Hue - Hadoop User Experience Cloudera 主導 Online Demo:http://demo.gethue.com/ 50 / 74
  51. 51. Hue - Interactive SQL & Dashboard 51 / 74
  52. 52. Impala - Real-Time Queries in Hadoop Cloudera 主導,做了兩年才在 2012 年正式發表 支援 HDFS/HBase 的 Distributed Parallel SQL Query Engine in Real Time 吸收 Google F1 Fault-Tolerant Distributed RDBMS 與 Dremel Ad Hoc Query Tool 精華 SQL on Hadoop,但是跳過 MapReduce,直接透過 In-Memory Process 來處理 Compliant with ANSI-92 SQL Standard,所以透過 Cloudera ODBC Driver for Impala,就可以跟既有的 BI/DW 工具整合 52 / 74
  53. 53. Presto Facebook 主導,2012 年秋天開始發展,2013 年春天開始推 廣,作為 Facebook Data Warehouse 的 Query Execution Engine 把常用資料 Cache 在記憶體,提供 ANSI-SQL Compatible Query CPU Efficiency 比 Hive 好 4-7 倍,回傳結果速度大概是 8-10 倍 酸民說:Most of Facebook is pictures of cats, updates about bodily functions, nihilistic ramblings, and the pingings of Zynga games feeding e-stims to folk, it bears noting that none of this really matters for designing massive data systems. 53 / 74
  54. 54. Google 2010 年發表了 Dremel 研究論文,是一個具有 Interactive Analysis of Web- Scale Datasets 能力的系統 Apache Drill 是 Dremel 的 Open Source 版本,號稱可以 Scale Out 到 10,000+ 的 Node,處 理 PB 等級的資料,秒殺 Trillion 數量級的 Record Google BigQuery 就是提供 Dremel 的 IaaS Dremel、Drill、BigQuery What is BigQuery, Its Features and Some Successful Products Who Got Benefited from It? 54 / 74
  55. 55. 超級(女)英雄們也是有分派系的! Hadoop 小圈圈 55 / 74
  56. 56. Cloudera 派: Intel (金主) DataBricks (Spark 平台) IBM Oracle MapR ... Hortonworks 派: Microsoft (生命共同體) ...   56 / 74
  57. 57. 意見分歧?殊途同歸? Hive vs. Impala Did Cloudera Just Shoot Their Impala? Cloudera 一年多前希望最終能夠取代 Hive 六個月前決定從頭開始,而不是改進現有的 Hive,因為對 Real- Time Distributed SQL Processing 來說,Hive 是錯誤的架構 結果現在又說要把 Hive 架在 Spark 上頭執行 57 / 74
  58. 58. Hive 樓下到底住誰? 做 Impala 又為了誰? Tez/YARN vs. Spark Cloudera, MapR, IBM, and Intel bet on Spark as the new heart of Hadoop Cloudera 提議把 Hive 架在 Spark 上頭,讓 Spark 使用者可以享受 到 SQL on Hadoop 的好處,也可以讓 Hive 執行速度變快 雖然之前已經有 Hive on Spark 的專案 Shark,但是 Cloudera 認為 Shark 抽換掉 Hive 底層太多東西,將來會難以移植 Hive 的新功能 Cloudera 的 Hive on Spark 只打算抽換 Hive 的 Query Planner,將 來 Hive 依然可以輕易地架在 MapReduce 或 Tez 上執行 Hortonworks 的 Hive on Tez 其實也一樣是抽換 Query Planner,從 Hive on MapReduce 變成 Hive on Tez on YARN 58 / 74
  59. 59.   架在 Hadoop 上的 Machine Learning 平台 目前提供 Recommendation Mining、 Clustering、Classification 等 Use Case 2014-04-25 發表了 Goodbye MapReduce 的新聞稿,新的 Codebase 會以 Scala DSL 為基礎,在 Spark 上執行 選邊站的 Mahout 59 / 74
  60. 60. 這年頭,大家相堵會到! 喝咖啡騎大象建議 60 / 74
  61. 61. Python Ruby C/C++ C# Perl Bash ...     Programming Java: 曾經是 MapReduce 心裡頭的唯一 現在是 YARN 裡面眾多語言的之一 Hadoop MapReduce Examples 是最基本的範例 popcorny 提供了一個方便好用的 Gradle 環境組態 因為支援 Hadoop Streaming 的關係,其實要抓蛇的、開珠寶店的也都可以喔: 61 / 74
  62. 62. Dataflow 是 MapReduce 的繼 承者,由數個 Google 內部使用 的技術為基礎,包括資料平行 處理管道技術 Flume 和容錯串 流技術 MillWheel 第一版 Dataflow SDK 採用 Java 來開發 BigQuery 也能與 Dataflow 相輔 相成,開發者可以把 Dataflow 的資料餵給 BigQuery Google 與 Twitter 在世界盃足 球賽的期間合作,透過 Dataflow 讀取數百萬則 Twitter 貼文,做球迷情感分析 號稱下一代的 Dataflow 目前也是寫 Java iThome Google I/O 2014 快報:雲端大資料分析服務 Dataflow 現身 62 / 74
  63. 63. Data 重要議題: SQL on Hadoop NoSQL and Hadoop 資料不落地 資料不出防火牆 ... 所以: 從 Hue 切入:使用介面無障礙 從 Hive 切入:SQL 跟 HiveQL 很接近 從 Impala 切入:Hive 的競爭對手,大家都支援 ANSI-SQL 從 Sqoop 切入:善用 JDBC 的經驗,整合 RDBMS/BI/DW 從 HBase 切入:學習 NoSQL ... 63 / 74
  64. 64. MySQL Hadoop Applier 直接讀取 MySQL 的 Binary Log Event,透過 libhdfs C Library 寫 到 Hadoop Real-Time Integration/Backup Between MySQL and Hadoop 64 / 74
  65. 65. Phoenix 內建的 CLI 工具 - Sqlline Phoenix 建議的 GUI 工具 - SQuirrel Phoenix - We put the SQL back in NoSQL Salesforce 主導 其實就是在 HBase 上頭提供一個 JDBC Wrapper,把 Client 端提 供的 SQL Query,翻譯成一連串的 HBase Scan,再把結果包裝成 JDBC ResultSet 傳回 號稱小的 Query 只要幾個 ms,幾個 Million 的資料筆數也只要幾秒 就可以 65 / 74
  66. 66. 使用熟悉的 JDBC API 存取 HBase public class HelloPhoenix  {     public static void main(String[] args) throws SQLException      {         Connection con = DriverManager.getConnection("jdbc:phoenix:[zookeeper]");         Statement stmt = con.createStatement();                 stmt.executeUpdate(             "create table test (mykey integer not null primary key, mycolumn varchar)");         stmt.executeUpdate("upsert into test values (1,'Hello')");         stmt.executeUpdate("upsert into test values (2,'World!')");         con.commit();         PreparedStatement statement = con.prepareStatement("select * from test");         ResultSet rs = statement.executeQuery();         while (rs.next())              System.out.println(rs.getString("mycolumn"));         statement.close();         con.close();     } } 66 / 74
  67. 67. 離不開 Windows: Windows Azure HDInsight Emulator 可以接受 Linux: Cloudera QuickStart VMs for CDH Hortonworks HDP Sandbox BigSQL QuickStart VM 只想用 Browser 玩: Cloudera Live Hadoop as a Service: Microsoft Azure HDInsight Service Amazon Elastic MapReduce(EMR) Platform 67 / 74
  68. 68. 1 分鐘在線上直接玩 Hadoop 68 / 74
  69. 69. 5 分鐘在本機建置一個 Hadoop VM 69 / 74
  70. 70. 10 分鐘在雲端建置一個 Hadoop Cluster 70 / 74
  71. 71. 總結 71 / 74
  72. 72. 謝謝大家 72 / 74
  73. 73. 73 / 74
  74. 74. The Possibilities of Hadoop for Big Data 0:36 74 / 74

×