Hadoop大數(shù)據(jù)平臺體系課件_第1頁
Hadoop大數(shù)據(jù)平臺體系課件_第2頁
Hadoop大數(shù)據(jù)平臺體系課件_第3頁
Hadoop大數(shù)據(jù)平臺體系課件_第4頁
Hadoop大數(shù)據(jù)平臺體系課件_第5頁
已閱讀5頁,還剩95頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Hadoop 大數(shù)據(jù)平臺體系UAP中心數(shù)據(jù)平臺產(chǎn)品部馬太航 2013年4月20日math第1頁,共100頁。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲方式、性能優(yōu)化3Zookeeper處理機制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第2頁,共100頁。Hadoop 簡介 Hadoop是一個分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會

2、開發(fā)。用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運算和存儲。簡單地說來,Hadoop是一個可以更容易開發(fā)和運行處理大規(guī)模數(shù)據(jù)的軟件平臺。Hadoop實現(xiàn)了一個分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。HDFS有著高容錯性(fault-tolerent)的特點,并且設(shè)計用來部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(high throughput)來訪問應用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求(require

3、ments)這樣可以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。下面列舉hadoop主要的一些特點: 1 擴容能力(Scalable):能可靠地(reliably)存儲和處理千兆字節(jié)(PB)數(shù)據(jù)。 2 成本低(Economical):可以通過普通機器組成的服務器群來分發(fā)以及處理數(shù)據(jù)。這些服務器群總計可達數(shù)千個節(jié)點。 3 高效率(Efficient):通過分發(fā)數(shù)據(jù),hadoop可以在數(shù)據(jù)所在的節(jié)點上并行地(parallel)處理它們,這使得處理非常的快速。 4 可靠性(Reliable):hadoop能自動地維護數(shù)據(jù)的多份復制,并且在任務失敗后能自動地重新部署(redepl

4、oy)計算任務。第3頁,共100頁。流處理框架S4 S4(Simple Scalable Streaming System)是Yahoo最新發(fā)布的一個開源流計算平臺,它是一個通用的、分布式的、可擴展性良好、具有分區(qū)容錯能力、支持插件的分布式流計算平臺,在該平臺上程序員可以很方便地開發(fā)面向無界不間斷流數(shù)據(jù)處理的應用,開發(fā)語言為Java。Storm Storm是Twitter開源的分布式實時計算系統(tǒng),Storm通過簡單的API使開發(fā)者可以可靠地處理無界持續(xù)的流數(shù)據(jù),進行實時計算,開發(fā)語言為Clojure和Java,非JVM語言可以通過stdin/stdout以JSON格式協(xié)議與Storm進行通信。

5、Storm的應用場景很多:實時分析、在線機器學習、持續(xù)計算、分布式RPC、ETL處理,等等。 StreamBaseStreamBase是一個關(guān)于復雜事件處理(CEP)、事件流處理的平臺。其本身是商業(yè)應用軟件,但提供了Developer Edition,開發(fā)語言為Java。 HStreamingHStreaming構(gòu)建在Hadoop之上,可以和Hadoop及其生態(tài)系統(tǒng)緊密結(jié)合起來提供實時流計算服務。這使得HStreaming的用戶可以在同一個生態(tài)系統(tǒng)中分析處理大數(shù)據(jù),開發(fā)語言為Java。第4頁,共100頁。流處理框架Esper & NEsper Esper是專門進行復雜事件處理(CEP)的流處理

6、平臺,Java版本為Esper,.Net版本為NEsper。Esper & NEsper可以方便開發(fā)者快速開發(fā)部署處理大容量消息和事件的應用系統(tǒng),不論是歷史的還是實時的消息。Kafka Kafka是Linkedin于2010年12月份開源的高吞吐、基于Pub-Sub的分布式消息系統(tǒng),主要用于處理活躍的流式數(shù)據(jù),開發(fā)語言為Scala。Scribe Scribe是Facebook開源的日志收集系統(tǒng),開發(fā)語言為C,通過Thrift可以支持多種常用客戶端語言,在Facebook內(nèi)部已經(jīng)得到大量的應用。它能夠從各種日志源上收集日志,存儲到一個中央存儲系統(tǒng)(可以是NFS,分布式文件系統(tǒng)等)上,以便于進行集

7、中統(tǒng)計分析處理。它為日志的“分布式收集,統(tǒng)一處理”提供了一個可擴展的,高容錯的方案。Scribe通常與Hadoop結(jié)合使用,Scribe用于向HDFS中push日志,而Hadoop通過MapReduce作業(yè)進行定期處理。Flume Flume是Cloudera提供的一個分布式、可靠的、高可用的日志收集系統(tǒng),用于收集、聚合以及移動大量日志數(shù)據(jù),開發(fā)語言為Java。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,F(xiàn)lume提供對數(shù)據(jù)進行簡單處理,并寫到各種數(shù)據(jù)接收方(可定制)的能力。第5頁,共100頁。Hadoop 生態(tài)圈第6頁,共100頁。Hadoop 生態(tài)圈數(shù)據(jù)抓取系統(tǒng) Nu

8、tch海量數(shù)據(jù)怎么存,當然是用分布式文件系統(tǒng) HDFS數(shù)據(jù)怎么用呢,分析,處理MapReduce框架,讓你編寫代碼來實現(xiàn)對大數(shù)據(jù)的分析工作非結(jié)構(gòu)化數(shù)據(jù)(日志)收集處理 fuse,webdav,chukwa,flume,Scribe數(shù)據(jù)導入到HDFS中,至此RDBSM也可以加入HDFS的狂歡了 Hiho,sqoopMapReduce太麻煩,好吧,讓你用熟悉的方式來操作Hadoop里的數(shù)據(jù) Pig,Hive,Jaql讓你的數(shù)據(jù)可見 drilldown,Intellicus用高級語言管理你的任務流 oozie,CascadingHadoop當然也有自己的監(jiān)控管理工具 Hue,karmasphere,

9、eclipse plugin,cacti,ganglia數(shù)據(jù)序列化處理與任務調(diào)度 Avro,Zookeeper更多構(gòu)建在Hadoop上層的服務 Mahout,Elastic map ReduceOLTP存儲系統(tǒng) Hbase第7頁,共100頁。Hadoop 體系組件 Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他項目公共內(nèi)容,從0.21開始HDFS和MapReduce被分離為獨立的子項目,其余內(nèi)容為Hadoop Common HDFS: Hadoop 分佈式文件系統(tǒng) (Distributed File System) HDFS (Hadoop Di

10、stributed File System) MapReduce:并行計算框架,0.20前使用 org.apache.hadoop.mapred 舊接口,0.20版本開始引入org.apache.hadoop.mapreduce的新API HBase: 類似Google BigTable的分布式NoSQL列數(shù)據(jù)庫。(HBase 和 Avro 已經(jīng)于2010年5月成為頂級 Apache 項目1) Hive:數(shù)據(jù)倉庫工具,由Facebook貢獻。 Zookeeper:分布式鎖設(shè)施,提供類似Google Chubby的功能,由Facebook貢獻。 Avro:新的數(shù)據(jù)序列化格式與傳輸工具,將逐步取代

11、Hadoop原有的IPC機制。第8頁,共100頁。Hadoop 版本選擇Apache Hadoop 和Hadoop 商用衍生版,UAP這邊使用CDH4版Apache 官方版本:0.20.x0.23.x商用版本:ClouderaHortonWorksAmazon EMRMapRIBM HadoopOracleMicrosoftIntelEMC第9頁,共100頁。Hadoop 版本信息說明(1)Append 支持文件追加功能,如果想使用HBase,需要這個特性。(2)RAID 在保證數(shù)據(jù)可靠的前提下,通過引入校驗碼較少數(shù)據(jù)塊數(shù)目。詳細鏈接:/jira/browse/HDFS/component/1

12、2313080(3)Symlink 支持HDFS文件鏈接,具體可參考: /jira/browse/HDFS-245(4)Security Hadoop安全,具體可參考:/jira/browse/HADOOP-4487(5) NameNode HA 具體可參考:/jira/browse/HDFS-1064(6) HDFS Federation和YARNMapReduce :傳統(tǒng)的MapReduce模型YARN:下一代MapReduce實現(xiàn)Corona:FaceBook下一代MapReduce第10頁,共100頁。Hadoop 版本分支情況20100.20.2穩(wěn)定0.21.0不穩(wěn)定20110.20

13、.203穩(wěn)定0.20.205(1.0版本,使用中)穩(wěn)定0.22.0不穩(wěn)定0.23.0不穩(wěn)定20120.23.X不穩(wěn)定1.0.X穩(wěn)定2.0.X不穩(wěn)定第11頁,共100頁。Cloudera HadoopCloudera產(chǎn)品主要為CDH,Cloudera Manager,Cloudera Support。CDH是Cloudera的hadoop發(fā)行版,完全開源,比Apache hadoop在兼容性,安全性,穩(wěn)定性上有增強。Cloudera Manager是集群的軟件分發(fā)及管理監(jiān)控平臺,可以在幾個小時內(nèi)部署好一個hadoop集群,并對集群的節(jié)點及服務進行實時監(jiān)控。Cloudera Support即是對h

14、adoop的技術(shù)支持。cloudera的標價為每年每個節(jié)點4000美元。PS:PB數(shù)據(jù)需要5002000處理節(jié)點,1000為例,每年費用為400萬美元。CDH共有4個版本,其中,前兩個已經(jīng)不再更新,最近的兩個,分別是CDH3(在Apache Hadoop 0.20.2版本基礎(chǔ)上演化而來的)和CDH4在Apache Hadoop 2.0.0版本基礎(chǔ)上演化而來的),分別對應Apache的Hadoop 1.0和Hadoop 2.0第12頁,共100頁。Hadoop 模塊信息NameNode :名字節(jié)點分布式存儲 Master/Slave,其中扮演Master的角色,主要存儲DataNode數(shù)據(jù)節(jié)點的

15、元信息,充當管理角色。一般NameNode單獨部署,而且是單點節(jié)點,屬于HDFS中的一部分。 Secondary NameNode : 次名字節(jié)點不負責與DataNode節(jié)點交互,保存NameNode的快照,NameNode掛了后用它來修。 DataNode :數(shù)據(jù)節(jié)點HDFS中干活的節(jié)點,NameNode和DataNode的守護進程保持通訊,一般一份數(shù)據(jù)會被切割成多分數(shù)據(jù)塊存儲在DataNode中,保證解決單點故障。 JobTracker :工作節(jié)點Master/Slave 中的 Master節(jié)點,負責給TaskTracker節(jié)點分配任務,通過心跳確定TaskTracker是否還活著,如果T

16、askTracker宕機了,會將任務分給其他TaskTracker執(zhí)行。JobTracker只能有一個可以與NameNode放在一起。 TaskTracker :任務節(jié)點監(jiān)督Map/Reduce干活的節(jié)點,由JobTracker分配任務第13頁,共100頁。Hadoop 操作流程第14頁,共100頁。Hadoop MongoDB#!/usr/bin/env rubyrequire mongo-hadoopMongoHadoop.map do |document| :_id = documentusertime_zone, :count = 1 end#!/usr/bin/env rubyreq

17、uire mongo-hadoopMongoHadoop.reduce do |key, values| count = sum = 0 values.each do |value| count += 1 sum += valuenum end :_id = key, :average = sum / count end第15頁,共100頁。HDFS 結(jié)構(gòu)體系HDFS同MapReduce部署結(jié)構(gòu)類似,HDFS同樣具備master/slaves主從結(jié)構(gòu) 1,NameNode充當master角色,職責包括:管理文檔系統(tǒng)的命名空間(namespace);調(diào)節(jié)客戶端訪問到需要的文件(存儲在DateNo

18、de中的文件)注:namespace映射文件系統(tǒng)的目錄結(jié)構(gòu) 2,DataNodes充當slaves角色,通常情況下,一臺機器只部署一個Datenode,用來存儲MapReduce程序需要的數(shù)據(jù) 3,Namenode會定期從DataNodes那里收到Heartbeat和Blockreport反饋 4,Heartbeat反饋用來確保DataNode沒有出現(xiàn)功能異常; 5,Blockreport包含DataNode所存儲的Block集合第16頁,共100頁。HDFS 結(jié)構(gòu)體系第17頁,共100頁。HDFS存儲結(jié)構(gòu)第18頁,共100頁。HDFS Har 歸檔第19頁,共100頁。例子:HDFS 操作第

19、20頁,共100頁。Google Map Reduce 實現(xiàn)第21頁,共100頁。MapReduce 執(zhí)行流程第22頁,共100頁。MapReduce 執(zhí)行流程(用戶層)第23頁,共100頁。MapReduce 執(zhí)行流程第24頁,共100頁。MapReduce 工作流程1、運行mapred程序;2、本次運行將生成一個Job,于是JobClient向JobTracker申請一個JobID以標識這個Job;3、JobClient將Job所需要的資源提交到HDFS中一個以JobID命名的目錄中。這些資源包括JAR包、配置文件、InputSplit、等;4、JobClient向JobTracker提交

20、這個Job;5、JobTracker初始化這個Job;6、JobTracker從HDFS獲取這個Job的Split等信息;7、JobTracker向TaskTracker分配任務;8、TaskTracker從HDFS獲取這個Job的相關(guān)資源;9、TaskTracker開啟一個新的JVM;10、TaskTracker用新的JVM來執(zhí)行Map或Reduce;第25頁,共100頁。MapReduce 工作流程第26頁,共100頁。MapReduce 輸入、輸出第27頁,共100頁。MapReduce 執(zhí)行例子在MapReduce客戶端的代碼需要指明輸入/輸出的位置(文件路徑/DB/NOSQL),客戶

21、端再加上作業(yè)的參數(shù),就構(gòu)成了作業(yè)配置(job configuration),客戶端代碼需要定義map和reduce方法通過實現(xiàn)合適的抽象類,并在實現(xiàn)的方法中編寫你的業(yè)務邏輯,在客戶端程序中還要定義你的map/reduce輸入和輸出的類型,當Hadoop的 job client提交作業(yè)(jar包/class/可執(zhí)行程序等)和配置信息給JobTracker,后者負責分發(fā)這些軟件和配置信息給slave、調(diào)度任務并監(jiān)控它們的執(zhí)行,狀態(tài)和診斷信息給job-client。第28頁,共100頁。Hadoop 其他組件Chukwa:數(shù)據(jù)采集和分析系統(tǒng),數(shù)據(jù)來源是Hdfs系統(tǒng)。Pig:建立在Hdfs和MapRe

22、duce之上的數(shù)據(jù)流語言,和Hive很像,區(qū)別在于Pig更像是一門編程,而Hive更像一門SQL語言,Pig語言出現(xiàn)的目的是為了簡化使用Java API的復雜度。Oozie:管理調(diào)度MapReduce。HCatalog:數(shù)據(jù)表和存儲管理服務。Ambari: Hadoop的監(jiān)控工具。Sqoop:Hadoop 數(shù)據(jù)交換工具,這種交換是雙向的,既可以將Hadoop交換給結(jié)構(gòu)化數(shù)據(jù),也可以反過來從結(jié)構(gòu)化數(shù)據(jù)庫導入。Kafka:是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。Flume:Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Mahout:器學習領(lǐng)域經(jīng)典算法的實現(xiàn)。

23、第29頁,共100頁。例子: WordCount 統(tǒng)計public static void main(String args) throws Exception Configuration conf = new Configuration();if (args.length != 2) System.err.println(Usage: wordcount );System.exit(2);Job job = new Job(conf, word count);job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapp

24、er.class);job.setReducerClass(IntSumReducer.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(args0);FileOutputFormat.setOutputPath(job, new

25、 Path(args1);System.exit(job.waitForCompletion(true) ? 0 : 1);第30頁,共100頁。例子: WordCount 統(tǒng)計public static class TokenizerMapper extends Mapperprivate final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(LongWritable key, Text value, Context context) throws IO

26、Exception, InterruptedException StringTokenizer itr = new StringTokenizer(value.toString();while (itr.hasMoreTokens() word.set(itr.nextToken();context.write(word, one);第31頁,共100頁。例子: WordCount 統(tǒng)計public static class IntSumReducer extends Reducer private IntWritable result = new IntWritable();public v

27、oid reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException int sum = 0;for (IntWritable val : values) sum += val.get();result.set(sum);context.write(key, result);第32頁,共100頁。例子: WordCount 執(zhí)行輸出第33頁,共100頁。例子: WordCount 執(zhí)行輸出第34頁,共100頁。例子: WordCount 統(tǒng)計第35頁,共100頁。新老API

28、 簡單對比第36頁,共100頁。利用Map Reduce特性第37頁,共100頁。利用Map Reduce特性第38頁,共100頁。例子:去除重復值第39頁,共100頁。例子:去除重復值第40頁,共100頁。例子:全文索引第41頁,共100頁。例子:全文索引第42頁,共100頁。例子:全文索引第43頁,共100頁。Hadoop常見優(yōu)化方案第44頁,共100頁。Hadoop 壓縮第45頁,共100頁。Hadoop 壓縮第46頁,共100頁。Hadoop 壓縮第47頁,共100頁。Hadoop 文件數(shù)據(jù)類型第48頁,共100頁。Hadoop SequenceFile第49頁,共100頁。Hadoo

29、p SequenceFile第50頁,共100頁。Hadoop MapFile第51頁,共100頁。Hadoop MapFile第52頁,共100頁。Hadoop 常用配置文件第53頁,共100頁。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲方式、性能優(yōu)化3Zookeeper處理機制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第54頁

30、,共100頁。Apache HiveHive是建立在MapReduce框架之上的,包括: 元數(shù)據(jù)存儲(Metastore) 驅(qū)動(Driver) 查詢編譯器(Query Compiler) 執(zhí)行引擎(Execution Engine) 服務器(HiveServer) 客戶端組件 可擴展接口部分。第55頁,共100頁。Hive 與 Hadoop 工作機制第56頁,共100頁。Hive 存儲類型Hive 中的 Table 和數(shù)據(jù)庫中的 Table 在概念上是類似的,每一個 Table 在 Hive 中都有一個相應的目錄存儲數(shù)據(jù)。例如,一個表 UAP,它在 HDFS 中的路徑為:/ warehous

31、e /UAP,其中,wh 是在 hive-site.xml 中由 $hive.metastore.warehouse.dir 指定的數(shù)據(jù)倉庫的目錄,所有的 Table 數(shù)據(jù)(不包括 External Table)都保存在這個目錄中。Partition 對應于數(shù)據(jù)庫中的 Partition 列的密集索引,但是 Hive 中 Partition 的組織方式和數(shù)據(jù)庫中的很不相同。在 Hive 中,表中的一個 Partition 對應于表下的一個目錄,所有的 Partition 的數(shù)據(jù)都存儲在對應的目錄中。例如:UAP 表中包含 dt 和 city 兩個 Partition,則對應于 dt = 201

32、00801, ctry = US 的 HDFS 子目錄為:/ warehouse /UAP/dt=20100801/ctry=US;對應于dt = 20100801, ctry = CA 的 HDFS 子目錄為;/ warehouse /UAP/dt=20100801/ctry=CABuckets 對指定列計算 hash,根據(jù) hash 值切分數(shù)據(jù),目的是為了并行,每一個 Bucket 對應一個文件。將 user 列分散至 32 個 bucket,首先對 user 列的值計算 hash,對應 hash 值為 0 的 HDFS 目錄為:/ warehouse /UAP/dt =20100801/

33、ctry=US/part-00000;hash 值為 20 的 HDFS 目錄為:/ warehouse /UAP/dt =20100801/ctry=US/part-00020External Table 指向已經(jīng)在 HDFS 中存在的數(shù)據(jù),可以創(chuàng)建 Partition。它和 Table 在元數(shù)據(jù)的組織上是相同的,而實際數(shù)據(jù)的存儲則有較大的差異。第57頁,共100頁。Hive HQL 對比 SQLHadoop和Hive都是用UTF-8編碼的,所以, 所有中文必須是UTF-8編碼, 才能正常使用press.output 這個參數(shù), 默認是 false,但是很多時候貌似要單獨顯式設(shè)置一遍當前的

34、Hive 不支持在一條查詢語句中有多 Distinct。如果要在 Hive 查詢語句中實現(xiàn)多Distinct,需要使用至少n+1 條查詢語句(n為distinct的數(shù)目),前n 條查詢分 別對 n 個列去重,最后一條查詢語句對 n 個去重之后的列做 Join 操作,得到最終結(jié)果。JOIN只支持等值連接只支持INSERT/LOAD操作,無UPDATE和DELTE不支持HAVING操作。如果需要這個功能要嵌套一個子查詢用where限制Hive不支持where子句中的子查詢第58頁,共100頁。Hive Cli 端配置文件第59頁,共100頁。Hive 元數(shù)據(jù)管理第60頁,共100頁。Hive HQ

35、L操作第61頁,共100頁。Hive HQL操作第62頁,共100頁。Hive HQL操作第63頁,共100頁。Hive HQL操作第64頁,共100頁。Hive HQL操作第65頁,共100頁。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲方式、性能優(yōu)化3Zookeeper處理機制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第66頁,

36、共100頁。Hbase 簡介history started by chad walters and jim 2006.11 G release paper on BigTable 2007.2 inital HBase prototype created as Hadoop contrib 2007.10 First useable Hbase 2008.1 Hadoop become Apache top-level project and Hbase becomes subproject 2008.10 Hbase 0.18,0.19 released hbase是bigtable的開源山

37、寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的數(shù)據(jù)庫系統(tǒng)。 它介于nosql和RDBMS之間,僅能通過主鍵(row key)和主鍵的range來檢索數(shù)據(jù),僅支持單行事務(可通過hive支持來實現(xiàn)多表join等復雜操作)。主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。 與hadoop一樣,Hbase目標主要依靠橫向擴展,通過不斷增加廉價的商用服務器,來增加計算和存儲能力。 HBase中的表一般有這樣的特點:1 大:一個表可以有上億行,上百萬列2 面向列:面向列(族)的存儲和權(quán)限控制,列(族)獨立檢索。3 稀疏:對于為空(null)的列,并不占用存儲空間,因此,表可以設(shè)

38、計的非常稀疏。第67頁,共100頁。Hbase 模塊組件 Native Java API,最常規(guī)和高效的訪問方式,適合Hadoop MapReduce Job并行批處理HBase表數(shù)據(jù) HBase Shell,HBase的命令行工具,最簡單的接口,適合HBase管理使用 Thrift Gateway,利用Thrift序列化技術(shù),支持C+,PHP,Python等多種語言,適合其他異構(gòu)系統(tǒng)在線訪問HBase表數(shù)據(jù) REST Gateway,支持REST 風格的Http API訪問HBase, 解除了語言限制 Pig,可以使用Pig Latin流式編程語言來操作HBase中的數(shù)據(jù),和Hive類似,本

39、質(zhì)最終也是編譯成MapReduce Job來處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計 Hive,當前Hive的Release版本尚沒有加入對HBase的支持,但在下一個版本Hive 0.7.0中將會支持HBase,可以使用類似SQL語言來訪問HBase第68頁,共100頁。Hbase 數(shù)據(jù)模型第69頁,共100頁。Hbase 存儲方式第70頁,共100頁。Hbase 系統(tǒng)架構(gòu)第71頁,共100頁。Hbase 系統(tǒng)架構(gòu)第72頁,共100頁。Hbase 文件結(jié)構(gòu)圖第73頁,共100頁。Hbase 架構(gòu)組件Client 1 包含訪問hbase的接口,client維護著一些cache來加快對hbase的訪

40、問,比如regione的位置信息。Zookeeper 1 保證任何時候,集群中只有一個master 2 存貯所有Region的尋址入口。 3 實時監(jiān)控Region Server的狀態(tài),將Region server的上線和下線信息實時通知給Master 4 存儲Hbase的schema,包括有哪些table,每個table有哪些column familyMaster 1 為Region server分配region 2 負責region server的負載均衡 3 發(fā)現(xiàn)失效的region server并重新分配其上的region 4 GFS上的垃圾文件回收 5 處理schema更新請求Regio

41、n Server 1 Region server維護Master分配給它的region,處理對這些region的IO請求 2 Region server負責切分在運行過程中變得過大的region可以看到,client訪問hbase上數(shù)據(jù)的過程并不需要master參與(尋址訪問zookeeper和region server,數(shù)據(jù)讀寫訪問regione server),master僅僅維護者table和region的元數(shù)據(jù)信息,負載很低。第74頁,共100頁。Hbase Shell第75頁,共100頁。Hbase DDL第76頁,共100頁。Hbase DDL第77頁,共100頁。Hbase DD

42、L第78頁,共100頁。Hbase DML第79頁,共100頁。Hbase DML第80頁,共100頁。Hbase DML第81頁,共100頁。Hbase Api操作第82頁,共100頁。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲方式、性能優(yōu)化3Zookeeper處理機制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第83頁,共100

43、頁。ZooKeeper 簡介 ZooKeeper是Hadoop的正式子項目,它是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護、名字服務、分布式同步、組服務等。ZooKeeper的目標就是封裝好復雜易出錯的關(guān)鍵服務,將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。 Zookeeper是Google的Chubby一個開源的實現(xiàn).是高有效和可靠的協(xié)同工作系統(tǒng).Zookeeper能夠用來leader選舉,配置信息維護等.在一個分布式的環(huán)境中,我們需要一個Master實例或存儲一些配置信息,確保文件寫入的一致性等.第84頁,共100頁。ZooKeeper Shell第85頁,共1

44、00頁。ZooKeeper Api第86頁,共100頁。ZooKeeper Api第87頁,共100頁。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲方式、性能優(yōu)化3Zookeeper處理機制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第88頁,共100頁。Apache Pig 簡介 Pig是一個基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺,它

45、提供的SQL-LIKE語言叫Pig Latin,該語言的編譯器會把類SQL的數(shù)據(jù)分析請求轉(zhuǎn)換為一系列經(jīng)過優(yōu)化處理的MapReduce運算。Pig為復雜的海量數(shù)據(jù)并行計算提供了一個簡單的操作和編程接口。 1.Pig自己實現(xiàn)的一套框架對輸入、輸出的人機交互部分的實現(xiàn),就是Pig Latin 。 2.Zebra是Pig與HDFS/Hadoop的中間層、Zebra是MapReduce作業(yè)編寫的客戶端,Zerbra用結(jié)構(gòu)化的語言實現(xiàn)了對hadoop物理存儲元數(shù)據(jù)的管理也是對Hadoop的數(shù)據(jù)抽象層,在Zebra中有2個核心的類 TableStore(寫)/TableLoad(讀)對Hadoop上的數(shù)據(jù)進行操作。 3.Pig中的Streaming主要分為4個組件: 1. Pig Latin 2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論