




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Hadoop 大數(shù)據(jù)平臺(tái)體系UAP中心數(shù)據(jù)平臺(tái)產(chǎn)品部馬太航 2013年4月20日math第1頁(yè),共100頁(yè)。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲(chǔ)方式、性能優(yōu)化3Zookeeper處理機(jī)制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計(jì)原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第2頁(yè),共100頁(yè)。Hadoop 簡(jiǎn)介 Hadoop是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)
2、開(kāi)發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開(kāi)發(fā)分布式程序。充分利用集群的威力高速運(yùn)算和存儲(chǔ)。簡(jiǎn)單地說(shuō)來(lái),Hadoop是一個(gè)可以更容易開(kāi)發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái)。Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡(jiǎn)稱HDFS。HDFS有著高容錯(cuò)性(fault-tolerent)的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的(low-cost)硬件上。而且它提供高傳輸率(high throughput)來(lái)訪問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求(require
3、ments)這樣可以流的形式訪問(wèn)(streaming access)文件系統(tǒng)中的數(shù)據(jù)。下面列舉hadoop主要的一些特點(diǎn): 1 擴(kuò)容能力(Scalable):能可靠地(reliably)存儲(chǔ)和處理千兆字節(jié)(PB)數(shù)據(jù)。 2 成本低(Economical):可以通過(guò)普通機(jī)器組成的服務(wù)器群來(lái)分發(fā)以及處理數(shù)據(jù)。這些服務(wù)器群總計(jì)可達(dá)數(shù)千個(gè)節(jié)點(diǎn)。 3 高效率(Efficient):通過(guò)分發(fā)數(shù)據(jù),hadoop可以在數(shù)據(jù)所在的節(jié)點(diǎn)上并行地(parallel)處理它們,這使得處理非常的快速。 4 可靠性(Reliable):hadoop能自動(dòng)地維護(hù)數(shù)據(jù)的多份復(fù)制,并且在任務(wù)失敗后能自動(dòng)地重新部署(redepl
4、oy)計(jì)算任務(wù)。第3頁(yè),共100頁(yè)。流處理框架S4 S4(Simple Scalable Streaming System)是Yahoo最新發(fā)布的一個(gè)開(kāi)源流計(jì)算平臺(tái),它是一個(gè)通用的、分布式的、可擴(kuò)展性良好、具有分區(qū)容錯(cuò)能力、支持插件的分布式流計(jì)算平臺(tái),在該平臺(tái)上程序員可以很方便地開(kāi)發(fā)面向無(wú)界不間斷流數(shù)據(jù)處理的應(yīng)用,開(kāi)發(fā)語(yǔ)言為Java。Storm Storm是Twitter開(kāi)源的分布式實(shí)時(shí)計(jì)算系統(tǒng),Storm通過(guò)簡(jiǎn)單的API使開(kāi)發(fā)者可以可靠地處理無(wú)界持續(xù)的流數(shù)據(jù),進(jìn)行實(shí)時(shí)計(jì)算,開(kāi)發(fā)語(yǔ)言為Clojure和Java,非JVM語(yǔ)言可以通過(guò)stdin/stdout以JSON格式協(xié)議與Storm進(jìn)行通信。
5、Storm的應(yīng)用場(chǎng)景很多:實(shí)時(shí)分析、在線機(jī)器學(xué)習(xí)、持續(xù)計(jì)算、分布式RPC、ETL處理,等等。 StreamBaseStreamBase是一個(gè)關(guān)于復(fù)雜事件處理(CEP)、事件流處理的平臺(tái)。其本身是商業(yè)應(yīng)用軟件,但提供了Developer Edition,開(kāi)發(fā)語(yǔ)言為Java。 HStreamingHStreaming構(gòu)建在Hadoop之上,可以和Hadoop及其生態(tài)系統(tǒng)緊密結(jié)合起來(lái)提供實(shí)時(shí)流計(jì)算服務(wù)。這使得HStreaming的用戶可以在同一個(gè)生態(tài)系統(tǒng)中分析處理大數(shù)據(jù),開(kāi)發(fā)語(yǔ)言為Java。第4頁(yè),共100頁(yè)。流處理框架Esper & NEsper Esper是專門進(jìn)行復(fù)雜事件處理(CEP)的流處理
6、平臺(tái),Java版本為Esper,.Net版本為NEsper。Esper & NEsper可以方便開(kāi)發(fā)者快速開(kāi)發(fā)部署處理大容量消息和事件的應(yīng)用系統(tǒng),不論是歷史的還是實(shí)時(shí)的消息。Kafka Kafka是Linkedin于2010年12月份開(kāi)源的高吞吐、基于Pub-Sub的分布式消息系統(tǒng),主要用于處理活躍的流式數(shù)據(jù),開(kāi)發(fā)語(yǔ)言為Scala。Scribe Scribe是Facebook開(kāi)源的日志收集系統(tǒng),開(kāi)發(fā)語(yǔ)言為C,通過(guò)Thrift可以支持多種常用客戶端語(yǔ)言,在Facebook內(nèi)部已經(jīng)得到大量的應(yīng)用。它能夠從各種日志源上收集日志,存儲(chǔ)到一個(gè)中央存儲(chǔ)系統(tǒng)(可以是NFS,分布式文件系統(tǒng)等)上,以便于進(jìn)行集
7、中統(tǒng)計(jì)分析處理。它為日志的“分布式收集,統(tǒng)一處理”提供了一個(gè)可擴(kuò)展的,高容錯(cuò)的方案。Scribe通常與Hadoop結(jié)合使用,Scribe用于向HDFS中push日志,而Hadoop通過(guò)MapReduce作業(yè)進(jìn)行定期處理。Flume Flume是Cloudera提供的一個(gè)分布式、可靠的、高可用的日志收集系統(tǒng),用于收集、聚合以及移動(dòng)大量日志數(shù)據(jù),開(kāi)發(fā)語(yǔ)言為Java。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫到各種數(shù)據(jù)接收方(可定制)的能力。第5頁(yè),共100頁(yè)。Hadoop 生態(tài)圈第6頁(yè),共100頁(yè)。Hadoop 生態(tài)圈數(shù)據(jù)抓取系統(tǒng) Nu
8、tch海量數(shù)據(jù)怎么存,當(dāng)然是用分布式文件系統(tǒng) HDFS數(shù)據(jù)怎么用呢,分析,處理MapReduce框架,讓你編寫代碼來(lái)實(shí)現(xiàn)對(duì)大數(shù)據(jù)的分析工作非結(jié)構(gòu)化數(shù)據(jù)(日志)收集處理 fuse,webdav,chukwa,flume,Scribe數(shù)據(jù)導(dǎo)入到HDFS中,至此RDBSM也可以加入HDFS的狂歡了 Hiho,sqoopMapReduce太麻煩,好吧,讓你用熟悉的方式來(lái)操作Hadoop里的數(shù)據(jù) Pig,Hive,Jaql讓你的數(shù)據(jù)可見(jiàn) drilldown,Intellicus用高級(jí)語(yǔ)言管理你的任務(wù)流 oozie,CascadingHadoop當(dāng)然也有自己的監(jiān)控管理工具 Hue,karmasphere,
9、eclipse plugin,cacti,ganglia數(shù)據(jù)序列化處理與任務(wù)調(diào)度 Avro,Zookeeper更多構(gòu)建在Hadoop上層的服務(wù) Mahout,Elastic map ReduceOLTP存儲(chǔ)系統(tǒng) Hbase第7頁(yè),共100頁(yè)。Hadoop 體系組件 Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他項(xiàng)目公共內(nèi)容,從0.21開(kāi)始HDFS和MapReduce被分離為獨(dú)立的子項(xiàng)目,其余內(nèi)容為Hadoop Common HDFS: Hadoop 分佈式文件系統(tǒng) (Distributed File System) HDFS (Hadoop Di
10、stributed File System) MapReduce:并行計(jì)算框架,0.20前使用 org.apache.hadoop.mapred 舊接口,0.20版本開(kāi)始引入org.apache.hadoop.mapreduce的新API HBase: 類似Google BigTable的分布式NoSQL列數(shù)據(jù)庫(kù)。(HBase 和 Avro 已經(jīng)于2010年5月成為頂級(jí) Apache 項(xiàng)目1) Hive:數(shù)據(jù)倉(cāng)庫(kù)工具,由Facebook貢獻(xiàn)。 Zookeeper:分布式鎖設(shè)施,提供類似Google Chubby的功能,由Facebook貢獻(xiàn)。 Avro:新的數(shù)據(jù)序列化格式與傳輸工具,將逐步取代
11、Hadoop原有的IPC機(jī)制。第8頁(yè),共100頁(yè)。Hadoop 版本選擇Apache Hadoop 和Hadoop 商用衍生版,UAP這邊使用CDH4版Apache 官方版本:0.20.x0.23.x商用版本:ClouderaHortonWorksAmazon EMRMapRIBM HadoopOracleMicrosoftIntelEMC第9頁(yè),共100頁(yè)。Hadoop 版本信息說(shuō)明(1)Append 支持文件追加功能,如果想使用HBase,需要這個(gè)特性。(2)RAID 在保證數(shù)據(jù)可靠的前提下,通過(guò)引入校驗(yàn)碼較少數(shù)據(jù)塊數(shù)目。詳細(xì)鏈接:/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實(shí)現(xiàn)Corona:FaceBook下一代MapReduce第10頁(yè),共100頁(yè)。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頁(yè),共100頁(yè)。Cloudera HadoopCloudera產(chǎn)品主要為CDH,Cloudera Manager,Cloudera Support。CDH是Cloudera的hadoop發(fā)行版,完全開(kāi)源,比Apache hadoop在兼容性,安全性,穩(wěn)定性上有增強(qiáng)。Cloudera Manager是集群的軟件分發(fā)及管理監(jiān)控平臺(tái),可以在幾個(gè)小時(shí)內(nèi)部署好一個(gè)hadoop集群,并對(duì)集群的節(jié)點(diǎn)及服務(wù)進(jìn)行實(shí)時(shí)監(jiān)控。Cloudera Support即是對(duì)h
14、adoop的技術(shù)支持。cloudera的標(biāo)價(jià)為每年每個(gè)節(jié)點(diǎn)4000美元。PS:PB數(shù)據(jù)需要5002000處理節(jié)點(diǎn),1000為例,每年費(fèi)用為400萬(wàn)美元。CDH共有4個(gè)版本,其中,前兩個(gè)已經(jīng)不再更新,最近的兩個(gè),分別是CDH3(在Apache Hadoop 0.20.2版本基礎(chǔ)上演化而來(lái)的)和CDH4在Apache Hadoop 2.0.0版本基礎(chǔ)上演化而來(lái)的),分別對(duì)應(yīng)Apache的Hadoop 1.0和Hadoop 2.0第12頁(yè),共100頁(yè)。Hadoop 模塊信息NameNode :名字節(jié)點(diǎn)分布式存儲(chǔ) Master/Slave,其中扮演Master的角色,主要存儲(chǔ)DataNode數(shù)據(jù)節(jié)點(diǎn)的
15、元信息,充當(dāng)管理角色。一般NameNode單獨(dú)部署,而且是單點(diǎn)節(jié)點(diǎn),屬于HDFS中的一部分。 Secondary NameNode : 次名字節(jié)點(diǎn)不負(fù)責(zé)與DataNode節(jié)點(diǎn)交互,保存NameNode的快照,NameNode掛了后用它來(lái)修。 DataNode :數(shù)據(jù)節(jié)點(diǎn)HDFS中干活的節(jié)點(diǎn),NameNode和DataNode的守護(hù)進(jìn)程保持通訊,一般一份數(shù)據(jù)會(huì)被切割成多分?jǐn)?shù)據(jù)塊存儲(chǔ)在DataNode中,保證解決單點(diǎn)故障。 JobTracker :工作節(jié)點(diǎn)Master/Slave 中的 Master節(jié)點(diǎn),負(fù)責(zé)給TaskTracker節(jié)點(diǎn)分配任務(wù),通過(guò)心跳確定TaskTracker是否還活著,如果T
16、askTracker宕機(jī)了,會(huì)將任務(wù)分給其他TaskTracker執(zhí)行。JobTracker只能有一個(gè)可以與NameNode放在一起。 TaskTracker :任務(wù)節(jié)點(diǎn)監(jiān)督Map/Reduce干活的節(jié)點(diǎn),由JobTracker分配任務(wù)第13頁(yè),共100頁(yè)。Hadoop 操作流程第14頁(yè),共100頁(yè)。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頁(yè),共100頁(yè)。HDFS 結(jié)構(gòu)體系HDFS同MapReduce部署結(jié)構(gòu)類似,HDFS同樣具備master/slaves主從結(jié)構(gòu) 1,NameNode充當(dāng)master角色,職責(zé)包括:管理文檔系統(tǒng)的命名空間(namespace);調(diào)節(jié)客戶端訪問(wèn)到需要的文件(存儲(chǔ)在DateNo
18、de中的文件)注:namespace映射文件系統(tǒng)的目錄結(jié)構(gòu) 2,DataNodes充當(dāng)slaves角色,通常情況下,一臺(tái)機(jī)器只部署一個(gè)Datenode,用來(lái)存儲(chǔ)MapReduce程序需要的數(shù)據(jù) 3,Namenode會(huì)定期從DataNodes那里收到Heartbeat和Blockreport反饋 4,Heartbeat反饋用來(lái)確保DataNode沒(méi)有出現(xiàn)功能異常; 5,Blockreport包含DataNode所存儲(chǔ)的Block集合第16頁(yè),共100頁(yè)。HDFS 結(jié)構(gòu)體系第17頁(yè),共100頁(yè)。HDFS存儲(chǔ)結(jié)構(gòu)第18頁(yè),共100頁(yè)。HDFS Har 歸檔第19頁(yè),共100頁(yè)。例子:HDFS 操作第
19、20頁(yè),共100頁(yè)。Google Map Reduce 實(shí)現(xiàn)第21頁(yè),共100頁(yè)。MapReduce 執(zhí)行流程第22頁(yè),共100頁(yè)。MapReduce 執(zhí)行流程(用戶層)第23頁(yè),共100頁(yè)。MapReduce 執(zhí)行流程第24頁(yè),共100頁(yè)。MapReduce 工作流程1、運(yùn)行mapred程序;2、本次運(yùn)行將生成一個(gè)Job,于是JobClient向JobTracker申請(qǐng)一個(gè)JobID以標(biāo)識(shí)這個(gè)Job;3、JobClient將Job所需要的資源提交到HDFS中一個(gè)以JobID命名的目錄中。這些資源包括JAR包、配置文件、InputSplit、等;4、JobClient向JobTracker提交
20、這個(gè)Job;5、JobTracker初始化這個(gè)Job;6、JobTracker從HDFS獲取這個(gè)Job的Split等信息;7、JobTracker向TaskTracker分配任務(wù);8、TaskTracker從HDFS獲取這個(gè)Job的相關(guān)資源;9、TaskTracker開(kāi)啟一個(gè)新的JVM;10、TaskTracker用新的JVM來(lái)執(zhí)行Map或Reduce;第25頁(yè),共100頁(yè)。MapReduce 工作流程第26頁(yè),共100頁(yè)。MapReduce 輸入、輸出第27頁(yè),共100頁(yè)。MapReduce 執(zhí)行例子在MapReduce客戶端的代碼需要指明輸入/輸出的位置(文件路徑/DB/NOSQL),客戶
21、端再加上作業(yè)的參數(shù),就構(gòu)成了作業(yè)配置(job configuration),客戶端代碼需要定義map和reduce方法通過(guò)實(shí)現(xiàn)合適的抽象類,并在實(shí)現(xiàn)的方法中編寫你的業(yè)務(wù)邏輯,在客戶端程序中還要定義你的map/reduce輸入和輸出的類型,當(dāng)Hadoop的 job client提交作業(yè)(jar包/class/可執(zhí)行程序等)和配置信息給JobTracker,后者負(fù)責(zé)分發(fā)這些軟件和配置信息給slave、調(diào)度任務(wù)并監(jiān)控它們的執(zhí)行,狀態(tài)和診斷信息給job-client。第28頁(yè),共100頁(yè)。Hadoop 其他組件Chukwa:數(shù)據(jù)采集和分析系統(tǒng),數(shù)據(jù)來(lái)源是Hdfs系統(tǒng)。Pig:建立在Hdfs和MapRe
22、duce之上的數(shù)據(jù)流語(yǔ)言,和Hive很像,區(qū)別在于Pig更像是一門編程,而Hive更像一門SQL語(yǔ)言,Pig語(yǔ)言出現(xiàn)的目的是為了簡(jiǎn)化使用Java API的復(fù)雜度。Oozie:管理調(diào)度MapReduce。HCatalog:數(shù)據(jù)表和存儲(chǔ)管理服務(wù)。Ambari: Hadoop的監(jiān)控工具。Sqoop:Hadoop 數(shù)據(jù)交換工具,這種交換是雙向的,既可以將Hadoop交換給結(jié)構(gòu)化數(shù)據(jù),也可以反過(guò)來(lái)從結(jié)構(gòu)化數(shù)據(jù)庫(kù)導(dǎo)入。Kafka:是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。Flume:Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Mahout:器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn)。
23、第29頁(yè),共100頁(yè)。例子: WordCount 統(tǒng)計(jì)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頁(yè),共100頁(yè)。例子: WordCount 統(tǒng)計(jì)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頁(yè),共100頁(yè)。例子: WordCount 統(tǒng)計(jì)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頁(yè),共100頁(yè)。例子: WordCount 執(zhí)行輸出第33頁(yè),共100頁(yè)。例子: WordCount 執(zhí)行輸出第34頁(yè),共100頁(yè)。例子: WordCount 統(tǒng)計(jì)第35頁(yè),共100頁(yè)。新老API
28、 簡(jiǎn)單對(duì)比第36頁(yè),共100頁(yè)。利用Map Reduce特性第37頁(yè),共100頁(yè)。利用Map Reduce特性第38頁(yè),共100頁(yè)。例子:去除重復(fù)值第39頁(yè),共100頁(yè)。例子:去除重復(fù)值第40頁(yè),共100頁(yè)。例子:全文索引第41頁(yè),共100頁(yè)。例子:全文索引第42頁(yè),共100頁(yè)。例子:全文索引第43頁(yè),共100頁(yè)。Hadoop常見(jiàn)優(yōu)化方案第44頁(yè),共100頁(yè)。Hadoop 壓縮第45頁(yè),共100頁(yè)。Hadoop 壓縮第46頁(yè),共100頁(yè)。Hadoop 壓縮第47頁(yè),共100頁(yè)。Hadoop 文件數(shù)據(jù)類型第48頁(yè),共100頁(yè)。Hadoop SequenceFile第49頁(yè),共100頁(yè)。Hadoo
29、p SequenceFile第50頁(yè),共100頁(yè)。Hadoop MapFile第51頁(yè),共100頁(yè)。Hadoop MapFile第52頁(yè),共100頁(yè)。Hadoop 常用配置文件第53頁(yè),共100頁(yè)。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲(chǔ)方式、性能優(yōu)化3Zookeeper處理機(jī)制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計(jì)原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第54頁(yè)
30、,共100頁(yè)。Apache HiveHive是建立在MapReduce框架之上的,包括: 元數(shù)據(jù)存儲(chǔ)(Metastore) 驅(qū)動(dòng)(Driver) 查詢編譯器(Query Compiler) 執(zhí)行引擎(Execution Engine) 服務(wù)器(HiveServer) 客戶端組件 可擴(kuò)展接口部分。第55頁(yè),共100頁(yè)。Hive 與 Hadoop 工作機(jī)制第56頁(yè),共100頁(yè)。Hive 存儲(chǔ)類型Hive 中的 Table 和數(shù)據(jù)庫(kù)中的 Table 在概念上是類似的,每一個(gè) Table 在 Hive 中都有一個(gè)相應(yīng)的目錄存儲(chǔ)數(shù)據(jù)。例如,一個(gè)表 UAP,它在 HDFS 中的路徑為:/ warehous
31、e /UAP,其中,wh 是在 hive-site.xml 中由 $hive.metastore.warehouse.dir 指定的數(shù)據(jù)倉(cāng)庫(kù)的目錄,所有的 Table 數(shù)據(jù)(不包括 External Table)都保存在這個(gè)目錄中。Partition 對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的 Partition 列的密集索引,但是 Hive 中 Partition 的組織方式和數(shù)據(jù)庫(kù)中的很不相同。在 Hive 中,表中的一個(gè) Partition 對(duì)應(yīng)于表下的一個(gè)目錄,所有的 Partition 的數(shù)據(jù)都存儲(chǔ)在對(duì)應(yīng)的目錄中。例如:UAP 表中包含 dt 和 city 兩個(gè) Partition,則對(duì)應(yīng)于 dt = 201
32、00801, ctry = US 的 HDFS 子目錄為:/ warehouse /UAP/dt=20100801/ctry=US;對(duì)應(yīng)于dt = 20100801, ctry = CA 的 HDFS 子目錄為;/ warehouse /UAP/dt=20100801/ctry=CABuckets 對(duì)指定列計(jì)算 hash,根據(jù) hash 值切分?jǐn)?shù)據(jù),目的是為了并行,每一個(gè) Bucket 對(duì)應(yīng)一個(gè)文件。將 user 列分散至 32 個(gè) bucket,首先對(duì) user 列的值計(jì)算 hash,對(duì)應(yīng) 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í)際數(shù)據(jù)的存儲(chǔ)則有較大的差異。第57頁(yè),共100頁(yè)。Hive HQL 對(duì)比 SQLHadoop和Hive都是用UTF-8編碼的,所以, 所有中文必須是UTF-8編碼, 才能正常使用press.output 這個(gè)參數(shù), 默認(rèn)是 false,但是很多時(shí)候貌似要單獨(dú)顯式設(shè)置一遍當(dāng)前的
34、Hive 不支持在一條查詢語(yǔ)句中有多 Distinct。如果要在 Hive 查詢語(yǔ)句中實(shí)現(xiàn)多Distinct,需要使用至少n+1 條查詢語(yǔ)句(n為distinct的數(shù)目),前n 條查詢分 別對(duì) n 個(gè)列去重,最后一條查詢語(yǔ)句對(duì) n 個(gè)去重之后的列做 Join 操作,得到最終結(jié)果。JOIN只支持等值連接只支持INSERT/LOAD操作,無(wú)UPDATE和DELTE不支持HAVING操作。如果需要這個(gè)功能要嵌套一個(gè)子查詢用where限制Hive不支持where子句中的子查詢第58頁(yè),共100頁(yè)。Hive Cli 端配置文件第59頁(yè),共100頁(yè)。Hive 元數(shù)據(jù)管理第60頁(yè),共100頁(yè)。Hive HQ
35、L操作第61頁(yè),共100頁(yè)。Hive HQL操作第62頁(yè),共100頁(yè)。Hive HQL操作第63頁(yè),共100頁(yè)。Hive HQL操作第64頁(yè),共100頁(yè)。Hive HQL操作第65頁(yè),共100頁(yè)。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲(chǔ)方式、性能優(yōu)化3Zookeeper處理機(jī)制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計(jì)原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第66頁(yè),
36、共100頁(yè)。Hbase 簡(jiǎn)介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的開(kāi)源山
37、寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存儲(chǔ)、可伸縮、實(shí)時(shí)讀寫的數(shù)據(jù)庫(kù)系統(tǒng)。 它介于nosql和RDBMS之間,僅能通過(guò)主鍵(row key)和主鍵的range來(lái)檢索數(shù)據(jù),僅支持單行事務(wù)(可通過(guò)hive支持來(lái)實(shí)現(xiàn)多表join等復(fù)雜操作)。主要用來(lái)存儲(chǔ)非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。 與hadoop一樣,Hbase目標(biāo)主要依靠橫向擴(kuò)展,通過(guò)不斷增加廉價(jià)的商用服務(wù)器,來(lái)增加計(jì)算和存儲(chǔ)能力。 HBase中的表一般有這樣的特點(diǎn):1 大:一個(gè)表可以有上億行,上百萬(wàn)列2 面向列:面向列(族)的存儲(chǔ)和權(quán)限控制,列(族)獨(dú)立檢索。3 稀疏:對(duì)于為空(null)的列,并不占用存儲(chǔ)空間,因此,表可以設(shè)
38、計(jì)的非常稀疏。第67頁(yè),共100頁(yè)。Hbase 模塊組件 Native Java API,最常規(guī)和高效的訪問(wèn)方式,適合Hadoop MapReduce Job并行批處理HBase表數(shù)據(jù) HBase Shell,HBase的命令行工具,最簡(jiǎn)單的接口,適合HBase管理使用 Thrift Gateway,利用Thrift序列化技術(shù),支持C+,PHP,Python等多種語(yǔ)言,適合其他異構(gòu)系統(tǒng)在線訪問(wèn)HBase表數(shù)據(jù) REST Gateway,支持REST 風(fēng)格的Http API訪問(wèn)HBase, 解除了語(yǔ)言限制 Pig,可以使用Pig Latin流式編程語(yǔ)言來(lái)操作HBase中的數(shù)據(jù),和Hive類似,本
39、質(zhì)最終也是編譯成MapReduce Job來(lái)處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計(jì) Hive,當(dāng)前Hive的Release版本尚沒(méi)有加入對(duì)HBase的支持,但在下一個(gè)版本Hive 0.7.0中將會(huì)支持HBase,可以使用類似SQL語(yǔ)言來(lái)訪問(wèn)HBase第68頁(yè),共100頁(yè)。Hbase 數(shù)據(jù)模型第69頁(yè),共100頁(yè)。Hbase 存儲(chǔ)方式第70頁(yè),共100頁(yè)。Hbase 系統(tǒng)架構(gòu)第71頁(yè),共100頁(yè)。Hbase 系統(tǒng)架構(gòu)第72頁(yè),共100頁(yè)。Hbase 文件結(jié)構(gòu)圖第73頁(yè),共100頁(yè)。Hbase 架構(gòu)組件Client 1 包含訪問(wèn)hbase的接口,client維護(hù)著一些cache來(lái)加快對(duì)hbase的訪
40、問(wèn),比如regione的位置信息。Zookeeper 1 保證任何時(shí)候,集群中只有一個(gè)master 2 存貯所有Region的尋址入口。 3 實(shí)時(shí)監(jiān)控Region Server的狀態(tài),將Region server的上線和下線信息實(shí)時(shí)通知給Master 4 存儲(chǔ)Hbase的schema,包括有哪些table,每個(gè)table有哪些column familyMaster 1 為Region server分配region 2 負(fù)責(zé)region server的負(fù)載均衡 3 發(fā)現(xiàn)失效的region server并重新分配其上的region 4 GFS上的垃圾文件回收 5 處理schema更新請(qǐng)求Regio
41、n Server 1 Region server維護(hù)Master分配給它的region,處理對(duì)這些region的IO請(qǐng)求 2 Region server負(fù)責(zé)切分在運(yùn)行過(guò)程中變得過(guò)大的region可以看到,client訪問(wèn)hbase上數(shù)據(jù)的過(guò)程并不需要master參與(尋址訪問(wèn)zookeeper和region server,數(shù)據(jù)讀寫訪問(wèn)regione server),master僅僅維護(hù)者table和region的元數(shù)據(jù)信息,負(fù)載很低。第74頁(yè),共100頁(yè)。Hbase Shell第75頁(yè),共100頁(yè)。Hbase DDL第76頁(yè),共100頁(yè)。Hbase DDL第77頁(yè),共100頁(yè)。Hbase DD
42、L第78頁(yè),共100頁(yè)。Hbase DML第79頁(yè),共100頁(yè)。Hbase DML第80頁(yè),共100頁(yè)。Hbase DML第81頁(yè),共100頁(yè)。Hbase Api操作第82頁(yè),共100頁(yè)。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲(chǔ)方式、性能優(yōu)化3Zookeeper處理機(jī)制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計(jì)原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第83頁(yè),共100
43、頁(yè)。ZooKeeper 簡(jiǎn)介 ZooKeeper是Hadoop的正式子項(xiàng)目,它是一個(gè)針對(duì)大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等。ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯(cuò)的關(guān)鍵服務(wù),將簡(jiǎn)單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。 Zookeeper是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn).是高有效和可靠的協(xié)同工作系統(tǒng).Zookeeper能夠用來(lái)leader選舉,配置信息維護(hù)等.在一個(gè)分布式的環(huán)境中,我們需要一個(gè)Master實(shí)例或存儲(chǔ)一些配置信息,確保文件寫入的一致性等.第84頁(yè),共100頁(yè)。ZooKeeper Shell第85頁(yè),共1
44、00頁(yè)。ZooKeeper Api第86頁(yè),共100頁(yè)。ZooKeeper Api第87頁(yè),共100頁(yè)。HadoopHadoop、版本、流處理、HDFS、MapReduce、文件結(jié)構(gòu)、壓縮存檔、API1Hive工作流程、API、模塊組件、架構(gòu)組件、HQL、元數(shù)據(jù)管理、CLI2Hbase模塊組件、DML、DDL、Client API、存儲(chǔ)方式、性能優(yōu)化3Zookeeper處理機(jī)制、API、Zookeeper Shell、功能模塊4Apache Pig設(shè)計(jì)原理、API、關(guān)鍵字、綜合案例、典型函數(shù)5第88頁(yè),共100頁(yè)。Apache Pig 簡(jiǎn)介 Pig是一個(gè)基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺(tái),它
45、提供的SQL-LIKE語(yǔ)言叫Pig Latin,該語(yǔ)言的編譯器會(huì)把類SQL的數(shù)據(jù)分析請(qǐng)求轉(zhuǎn)換為一系列經(jīng)過(guò)優(yōu)化處理的MapReduce運(yùn)算。Pig為復(fù)雜的海量數(shù)據(jù)并行計(jì)算提供了一個(gè)簡(jiǎn)單的操作和編程接口。 1.Pig自己實(shí)現(xiàn)的一套框架對(duì)輸入、輸出的人機(jī)交互部分的實(shí)現(xiàn),就是Pig Latin 。 2.Zebra是Pig與HDFS/Hadoop的中間層、Zebra是MapReduce作業(yè)編寫的客戶端,Zerbra用結(jié)構(gòu)化的語(yǔ)言實(shí)現(xiàn)了對(duì)hadoop物理存儲(chǔ)元數(shù)據(jù)的管理也是對(duì)Hadoop的數(shù)據(jù)抽象層,在Zebra中有2個(gè)核心的類 TableStore(寫)/TableLoad(讀)對(duì)Hadoop上的數(shù)據(jù)進(jìn)行操作。 3.Pig中的Streaming主要分為4個(gè)組件: 1. Pig Latin 2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度子女全面負(fù)責(zé)父母生活照料及醫(yī)療看護(hù)協(xié)議
- 二零二五年度企業(yè)間營(yíng)業(yè)執(zhí)照借用責(zé)任免除合同
- 二零二五年度商鋪出租租賃合同(含租賃合同解除條件)
- 2025年度網(wǎng)絡(luò)游戲押金協(xié)議模板與各類合同規(guī)范
- 2025年度消防設(shè)備研發(fā)與創(chuàng)新基金合作協(xié)議
- 2025年度私企員工勞動(dòng)合同與培訓(xùn)計(jì)劃
- 2025年度無(wú)房產(chǎn)證土地承包經(jīng)營(yíng)權(quán)租賃后買賣合同
- 二零二五年度供暖管道施工安全管理及應(yīng)急預(yù)案合同
- 2025年度無(wú)社保保障的短期勞務(wù)合同規(guī)范
- 二零二五年度生態(tài)農(nóng)業(yè)門面房屋出售及農(nóng)產(chǎn)品加工合同
- 2025年廣東生態(tài)工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完美版
- 模具轉(zhuǎn)移合同協(xié)議書
- DeepSeek學(xué)習(xí)科普專題
- 2025浙江杭州地鐵運(yùn)營(yíng)分公司校園招聘665人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025四川省小金縣事業(yè)單位招聘362人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025春季學(xué)期少先隊(duì)工作安排表
- 2022泛海三江消防ZX900液晶手動(dòng)控制盤使用手冊(cè)
- 廣西壯族自治區(qū)柳州市2025年中考物理模擬考試卷三套附答案
- 第11課《山地回憶》說(shuō)課稿 2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 羅森運(yùn)營(yíng)部經(jīng)營(yíng)管理手冊(cè)
- 高標(biāo)準(zhǔn)農(nóng)田施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論