巨量資料平台: Hadoop的生態系
課程大綱 Hadoop 起源與演進 Hadoop特色與發展現況 Hadoop ecosystem 架構 結語 Pig vs Hive Apache Sqoop幫你把SQL Data導入到Hadoop Hadoop ecosystem 架構 Apache Sqoop 邏輯架構 收集LOG就靠Apache Flume Hadoop運行任務用Apache OOZIE管理 分散式資料庫Apache HBase Apache Hbase別跟關聯式資料搞混 Apache ZooKeeper來管理Hadoop軍火 Apache Hbase 架構 分析工具Apache Mahout和R Connector就綽綽有餘 Apache Pig後Map-Reduce簡單多了 結語 原來Apache Hive 是這樣來的 Hive和SQL 比較
Hadoop 起源與演進 Since 2005~ Apache Hadoop 支援大量數據分散式運算架構 Apache 2.0 License (重要!!) Hadoop是根據Google發表的MapReduce和Google DFS(Data File System)的論文實作而成 MapReduce: 可靠的分散運算框架 HDFS: 提供了分佈式文件系統,存儲所有計算節點的數據 MapReduce和HDFS的設計 容錯:使得整個框架能夠自動處理節點故障。 巨量:應用程式在分散的獨立電腦執行巨量資料(PB)運算 2004年Google發表了兩篇論文來論述Google文件系統(GFS)和MapReduce框架。 Google聲稱使用了這兩項技術來擴展自己的搜索系統。 Doug Cutting立即看到了這些技術可以適用於Nutch,接著他的團隊實現了一個新的框架,將Nutch移植上去。 Hadoop開始時是Nutch的一個子項目,而Nutch又是Apache Lucene的一個子項目。這3個項目都是由Doug Cutting所創立的 名字由來:Doug Cutting似乎總會得到家人的啟發。 Lucene是他妻子的中間名,也是她外祖母的名字。他的兒子在咿呀學語時,總把所有用於吃飯的詞叫成Nutch,後來,他把一個黃色大象毛絨玩具叫做Hadoop 資料來源: http://zh.wikipedia.org/wiki/Hadoop
Hadoop 起源與演進 Hadoop 這頭大象自 2006 年 2 月被 Doug Cutting 送進 Apache Software Foundation 餵養以來,已歷經 8 又 1/2 個年頭 Yarn!! 年度 發行次數 2007 5 2008 14 2009 2010 2 2011 6 2012 13 2013(截至8.24) 11 總計 56 年平均 8 Latest Version Hadoop 2.4.1 Latest Version Hadoop 1.2.1 http://fredbigdata.blogspot.tw/2013/08/hadoop-20-yarn.html 資料來源:http://www.slideshare.net/Hadoop_Summit/evans-june27-230pmroom210c
Hadoop 起源與演進 終於不被單點失效牽絆的Yarn 在 Hadoop 2.0 時代,有了 YARN,讓各種處理與分析的方法或工具可以與 Map/Reduce 平等運作,都能讀取與寫入 HDFS 基於 YARN 的應用類型,可以歸結為四大類: Batch (批次處理):如原來的 Map/Reduce (v1) Interactive (互動處理):如新增的 Tez (ASF Incubator),可整合 Pig 與 Hive 應用 Online (線上查詢):如 HBase Streaming (文字串流):如 Storm
Hadoop特色與發展現況 Yahoo案例 每天約500,000個Map/Reduce工作 超過350 Peta-bytes的儲存量 資料來源:http://www.slideshare.net/ydn/hadoop-yahoo-internet-scale-data-processing
Hadoop特色與發展現況 Yahoo案例 Yahoo曾是Hadoop最大的貢獻者 72%的核心patch(包含:HDFS, Map-reduce, Common)是由Yahoo提供 最大的人力資源提供企業支援Hadoop 然而… ? 2006 2009
Hadoop ecosystem 架構 資料來源: http://www.ahp-numerique.fr/index.php?title=Big_data
收集Log 就靠Apache Flume 即時日誌收集系統 將分佈在不同節點、機器上的日誌收集到hdfs 中 IBM BigInsights 已經將Flume 作為產品的一部分 資料來源: http://www.ibm.com/developerworks/opensource/library/bd-flumews/index.html
分散式資料庫 Hbase Hbase是參考谷歌BigTable建模的NoSQL Apache HBase最初是Powerset公司為了處理自然語言搜索產生的海量數據而開展的項目 Facebook在2010年11月選用了HBase來實作了”訊息平台” 特性: 類似表格的資料結構 (Multi-Dimensional Map) 分散式 高可用性、高效能 很容易擴充容量及效能 Apache Hbase: http://hbase.apache.org/ http://contest.trendmicro.com/2014/cn/material/hbase.pdf 資料來源: http://zh.wikipedia.org/wiki/Apache_HBase 資料來源: http://contest.trendmicro.com/2014/cn/material/hbase.pdf
Hbase可與關聯式資料不同 HBase並不是關聯式資料庫系統 提供Java函式庫, 與 REST與Thrift等介面 表格(Table)只有一個主要索引 (primary index) 即 row key. 不提供 join 不提供 SQL語法 提供Java函式庫, 與 REST與Thrift等介面 提供 getRow(), Scan() 存取資料 getRow()可以取得一筆row range的資料,同時也可以指定版本(timestamp) Scan()可以取得整個表格的資料或是一組row range (設定start key, end key) 有限的單元性(Aatomicity)與交易 (transaction)功能 只有一種資料型態 (bytes)
HBase 架構 Apache Pig: http://pig.apache.org/ Region Row Keys Column Family “Content:” Region 1 00000…….. …….. 09999…….. Region 2 10000…….. 29999…….. 表格是由一或多個 region 所構成 Region 是由其 startKey 與endKey所指定 每個 region 可能會存在於多個不同節點上,而且是由數個HDFS 檔案與區塊所構成,這類 region Apache Pig: http://pig.apache.org/ 資料來源: http://contest.trendmicro.com/2014/cn/material/hbase.pdf
有Pig後Map-Reduce簡單了! Apache Pig 適合於使用Hadoop 和MapReduce 平台來查詢大型半結構化數據集 Pig Shell (Grunt) Pig Language (Latin) Libraries (Piggy Bank) User Defined Functions (UDF):使用者定義操作Pig 2014 2014年8月0.13.0最今版 2011年07月 0.9.0 python UDF $ pig –x local ... - Connecting to ... grunt> A = LOAD ‘file1’ AS (x, y, z); 2011年07月 0.9.0 python UDF 2010年12月 0.8.0 python UDF 2010年成為 Apache的主要項目 2008年 Yahoo將Pig移交給Apache團隊,並release Pig0.1 資料來源:http://www.ithome.com.tw/node/73980 Apache Pig是Yahoo捐獻給Apache的一項目 2008 資料來源:http://www.ithome.com.tw/node/73980
有Pig後Map-Reduce簡單了 Map-Reduce Java Code in Eclipse 李 中 11$ Mo 32$ 1 x y z t u v 王 北 10$ Tel 林 21$ 李 中 11$ Mo 32$ Map-Reduce 李 中 11$ Mo 32$ 1
有Pig後Map-Reduce簡單了 李 中 11$ Mo 32$ 1 Logical Plan Pig Latin LOAD FILTER JOIN GROUP FOREACH STORE (x, y, z) (t, u, v) (x, y, z, t, u, v) (group, {(x, y, z, t, u, v)}) (group, count) Logical Plan Pig Latin A = LOAD ‘file1’ AS (x, y, z); B = LOAD ‘file2’ AS (t, u, v); C = FILTER A by y > 0; D = JOIN C BY x, B BY u; E = GROUP D BY z; F = FOREACH E GENERATE group , COUNT(D); STORE F INTO ‘output’; 資料來源:http://www.slideshare.net/hbshashidhar/apache-pig-v-62?next_slideshow=1 李 中 11$ Mo 32$ 1 資料來源:http://www.slideshare.net/hbshashidhar/apache-pig-v-62?next_slideshow=1
有Pig後Map-Reduce簡單了 Pig無法像SQL DBMS工具,提供導入資料庫功能 功能 指令 讀取 LOAD 儲存 STORE 資料處理 FILTER, FOREACH, GROUP, COGROUP, inner JOIN, outer JOIN, UNION, SPLIT, … 彙總運算 AVG, COUNT, MAX, MIN, SIZE, … 數學運算 ABS, RANDOM, ROUND, … 字串處理 INDEXOF, SUBSTRING, REGEX EXTRACT, … Debug DUMP, DESCRIBE, EXPLAIN, ILLUSTRATE HDFS cat, ls, cp, mkdir, … 資料來源:http://fenriswolf.me/2012/03/22/pig-latin-sql-%E5%B0%8D%E7%85%A7%E8%A1%A8/#more-290 資料來源:http://fenriswolf.me/2012/03/22/apache-pig-%E7%B0%A1%E4%BB%8B/ 資料來源:http://fenriswolf.me/2012/03/22/apache-pig-%E7%B0%A1%E4%BB%8B/
原來Hive 是這樣來的 Hive在Hadoop中扮演數據倉庫的角色 相似SQL操作語法 起源於FaceBook,為了解決March 2008 每天有200GB資料在成長的資料倉儲的問題 缺點: Hive無法有效OLAP 不能操作SQL的INSERT資料方法 不能提共TRANSACTION方法 Apache Hive:http://hive.apache.org/ Hive is not for OLAP processing. Not all ‘standard’ SQL is supported No support for INSERTing single rows Relatively limited number of built-in functions Does not support TRANSACTION 資料來源: http://www.slideshare.net/zshao/hive-data-warehousing-analytics-on-hadoop-presentation
Hive和SQL 比較 Hive RDMS 查詢語法 HQL SQL 儲存體 HDFS Raw Device or Local FS 運算方法 MapReduce Excutor 延遲 高 低 處理數據規模 大 小 索引 0.8版本後加入位圖 複雜健全的索引機制 資料來源:http://sishuok.com/forum/blogPost/list/6220.html
Pig vs Hive Hive更適合於數據倉庫的任務,用於靜態的結構及需要經常分析的工作 Pig賦予開發人員在Big Data中,具備更多的靈活性,並允許開發簡潔腳本 用於轉換資料流,以便嵌入到較大的應用程序 Pig比Hive輕量,Pig可採用Java API串接,,因此,Pig較吸引軟體開發人員 Hive和Pig都可以與HBase組合使用,Hive和Pig還為HBase提供了高階語言支援,在HBase上進行數據統計處理變的非常簡單 Feature Hive Pig Language SQL-LIKE PigLatin Schemas/Types Yes (explicit) (implicit) Partitions No Server Optional(Thrift) Web Interface JDBC/ODBC Yes(limited) 資料來源:http://blog.csdn.net/devtao/article/details/14213481 資料來源:http://blog.csdn.net/devtao/article/details/14213481 資料來源: http://f.dataguru.cn/thread-33553-1-1.html
Sqoop幫你把 SQL Data導入到Hadoop Apache Sqoop = SQL to Hadoop Apache Sqoop允許使用者從關聯式資料庫(RDBMS)中擷取資料到 Hadoop 資料來源: http://hive.3du.me/slide.html 資料來源: https://blogs.apache.org/sqoop/entry/apache_sqoop_graduates_from_incubator http://hive.3du.me/slide.html
Sqoop 邏輯架構 Mysql到HDFS 案例 Sqoop import (generic-args) (import-args) Sqoop import –connect jdbc:mysql://localhost:3306/sqoop_test –direct –table adpv –username root -P Apache Sqoop http://sqoop.apache.org/ 資料來源: http://baiyunl.iteye.com/blog/964254
Hadoop運行任務用 Oozie管理 它讓我們可以把多個Map/Reduce作業組合到一個邏輯工作單元中,從而完成更大型的任務 Oozie是一種Java Web應用程序,它運行在Java servlet容器(即Tomcat)中 Apache Oozie:http://oozie.apache.org/ http://www.infoq.com/cn/articles/introductionOozie 資料來源: http://www.infoq.com/cn/articles/introductionOozie
ZooKeeper管理Hadoop軍火 主要是用來 分布式配置服務 同步服務 命名註冊 解決分佈式應用中經常遇到的一些數據管理問題,例如:統一命名服務、狀態同步服務、集群管理、分佈式應用配置項的管理等 ZooKeeper的公司包括Rackspace、雅虎和eBay,類似Apache Solr這樣的開放原始碼企業級索引系統 Apache ZooKeeper: http://zookeeper.apache.org/ http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ 資料來源:http://zh.wikipedia.org/wiki/Apache_ZooKeeper 資料來源:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
ZooKeeper管理Hadoop軍火 Performance 資料來源:http://tutorialshadoop.com/what-is-apache-zookeeper-and-it-uses/ 資料來源:http://zookeeper.apache.org/doc/trunk/zookeeperOver.html
分析工具 Mahout和 R Connectors就綽綽有餘 Apache Mahout 是Apache Software Foundation (ASF) 開發的一個全新的開源項目,其主要目標是創建一些可伸縮的機器學習算法,供開發人員在Apache 在許可下免費使用 Apache Mahout用MapReduce實現了部分數據挖掘算法,解決了並行挖掘的問題 Apache Mahout: https://mahout.apache.org/
分析工具Mahout和 R Connectors就綽綽有餘 分類 分群 推薦 降維 Regression Recommenders Clustering Classification Freq. Pattern Mining Vector Similarity Non-MR Algorithms Examples Dimension Reduction Evolution
分析工具 Mahout和 R Connectors就綽綽有餘 R 是一種語言,主要用於統計分析、繪圖、資料探勘,有成熟的Function R Connectors 是結合Hadoop的套件 資料來源:http://www.r-project.org/
結語 在巨量資料領域中Hadoop是目前最多人使用的框架 資料量不足夠時很難發揮到Hadoop的效能 現在是最適合切入學習 大數據人才懂資工、統計還不夠,還要會說故事 資料來源:http://www.cc.ntu.edu.tw/chinese/epaper/0011/20091220_1106.htm 資料來源: http://www.inside.com.tw/2014/06/04/big-data-talents-you-have-to-know-how-to-tell-a-story