版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、分布式數(shù)據(jù)庫選型論證第一章主流數(shù)據(jù)庫技術介紹一、關系型數(shù)據(jù)庫系統(tǒng)是一種基于關系模型的數(shù)據(jù)庫管理系統(tǒng)。這種關系模型最初是由埃德加?科德在舊M的實驗室提出的。目前很多主流的數(shù)據(jù)庫都是遵循這種關系模型。這種關系型的數(shù)據(jù)庫管理系統(tǒng)從上世紀 80年代開始被廣泛應用于存儲財務數(shù)據(jù)、制 造業(yè)數(shù)據(jù)、個人信息數(shù)據(jù),互聯(lián)網(wǎng)各類應用的數(shù)據(jù)。目前主流的RDBMS Oracle Database Microsoft SQL Server 、MySQL PostgreSQL 等。關系型數(shù)據(jù)庫的特點主要有一個數(shù)據(jù)庫由多張表構成、每張表都有用戶定義的表結構信息(schema)來描述表格的結構。每張表由行構成,每行包含若干列,
2、 列的屬性由表格的schema定義。關系型數(shù)據(jù)庫可以解釋為面向行的數(shù)據(jù)庫,每 張表具有橫向的擴展性,數(shù)據(jù)表是面向行增長的,而列的模式是相對固定的。其 功能主要包括以下幾點。數(shù)據(jù)的檢索功能:SQL語言的檢索功能主要包括基于主鍵、二級字段的查詢、 聚合查詢、表連接查詢等功能。事實上數(shù)據(jù)庫的查詢功能是SQL言里被使用最 多的功能。.數(shù)據(jù)的操作功能:包括數(shù)據(jù)的插入、刪除、修改。數(shù)據(jù)的操作以行為單 位,可以修改某具體行的特定列的值,也可以批量的對一組符合條件的行數(shù)據(jù)進 行操作。.事務處理的功能:數(shù)據(jù)庫事務是數(shù)據(jù)庫管理系統(tǒng)中執(zhí)行時一個獨立的單 位,一般事務由一組數(shù)據(jù)庫管理系統(tǒng)中的指令組成。事務之間相互獨立
3、,事務具有ACID四個重要的特性:原子性(Atomicity)、一致性(Consistency)、隔離性 (isolation) 和持久性(durability)。事務也是區(qū)分很多NoSQUf SQL數(shù)據(jù)庫的 重要特性之一。.表結構的定義功能:數(shù)據(jù)庫定義語言(DDL)是用于創(chuàng)建表,修改以及刪除表結構(schema)的。DDL中也包括了對某個字段建立索引的功能二、NoSQI#術1、Key. Value數(shù)據(jù)庫(鍵值數(shù)據(jù)庫)Key. Value數(shù)據(jù)庫中對value(數(shù)據(jù))基本上沒有做什么限制,可以在 value 上存儲任何格式的數(shù)據(jù)。Key. Value數(shù)據(jù)庫的數(shù)據(jù)模型最為簡單,因此其一般 具有很好
4、的性能、可擴展性、靈活性。典型的代表有亞馬遜的DynamoEll數(shù)據(jù)庫、RedisGoogle的LevalDB等。Key Value只支持對數(shù)據(jù)的一些簡單的操作: Key-Value對的插入、刪除、更新。根據(jù)實現(xiàn)的不同Key可以有序也可以無序, key有序意味著可以進行key的范圍查找。Dynam必用的是最終一致性的模型、 亞馬遜公司將它用在對數(shù)據(jù)一致性要求不高的購物車的應用中。2、面向列的數(shù)據(jù)庫這類數(shù)據(jù)庫不僅具有傳統(tǒng)關系型數(shù)據(jù)庫所具有橫向(面向行)的可擴展性也支持面向列的動態(tài)可擴展性,它不需要像傳統(tǒng)的關系型數(shù)據(jù)庫需要使用DDU能修改表結構以及要遵循每行的列屬性要一致的規(guī)范。這類數(shù)據(jù)庫從GoG
5、gle的BigTablet開始,之后出現(xiàn)了幾種開源的數(shù)據(jù)庫如 HBase Cassandra。HBaseH BigTable的開源實現(xiàn),兩者有很多相同的設計理念,兩者的表結構里面都有一 個列簇(Column family)的概念,每個列簇對列的個數(shù)和格式基本沒有限制,同 時每列數(shù)據(jù)都附上了時間戳的概念,這使得數(shù)據(jù)列值可以擁有多個版本。BigTable和HBase從底層實現(xiàn)來看,本質(zhì)上也是一個分布式的 Key Value系統(tǒng), 只不過這里的Key的結構是一個包含了表名、主鍵名、列簇名、列名和時間戳的 多元組。3、Graph數(shù)據(jù)庫(圖形數(shù)據(jù)庫)同Key Value數(shù)據(jù)庫一樣,Graph數(shù)據(jù)庫對數(shù)據(jù)
6、的value也不做限制。Graph 數(shù)據(jù)庫的存儲單元有三個:節(jié)點、關系、屬性。這類數(shù)據(jù)庫是用來存儲那些更適 合用圖來描述的數(shù)據(jù),例如社交網(wǎng)絡的關系數(shù)據(jù)、交通道路節(jié)點的數(shù)據(jù)或者一些 網(wǎng)絡拓撲數(shù)據(jù)等。Graph數(shù)據(jù)庫設計的關鍵是如何描述數(shù)據(jù)點之間連接關系,相 對于關系型數(shù)據(jù)庫的關系模型,這種圖數(shù)據(jù)模型具有大量復雜、互連接、低結構 化的特點,而我們知道在關系模型中表的連接操作效率往往是比較低的。目前相對比較成熟的開源Graph數(shù)據(jù)是Ne04Jti。n, Ne04J是一個用Java實現(xiàn)的兼容 ACID的圖形數(shù)據(jù)庫,Ne04J實現(xiàn)了一個非常高效的圖形引擎用來實現(xiàn)快速的面向圖形數(shù)據(jù)的各類操作。由于這類圖形
7、數(shù)據(jù)結構模型的復雜性, 使得圖形數(shù)據(jù)庫具 有較大的可擴展性問題,要想實現(xiàn)分布式的圖形數(shù)據(jù)庫是非常困難的, 這也是圖 形數(shù)據(jù)庫一直未真正流行開來的一個重要的原因。I4、文檔數(shù)據(jù)庫文檔數(shù)據(jù)庫是面向文檔的數(shù)據(jù)庫,是用來存儲、檢索、管理文檔信息的數(shù)據(jù) 庫,存儲的文檔結構大部分是半結構化,如 XML JSOW檔等。這類數(shù)據(jù)庫的所 存儲的文檔數(shù)據(jù)結構往往是由具體的應用決定的,文檔數(shù)據(jù)庫比較適用于那些不頻繁對已經(jīng)存在的文檔做修改的應用。這一類型數(shù)據(jù)庫的代表是109en團隊開發(fā) 的MongoD序口 Apache Couch DR與傳統(tǒng)的關系型數(shù)據(jù)庫采用表格的形式存儲數(shù) 據(jù)不同,MongoD改用的是類似JSOM
8、&式的文檔結構來存儲數(shù)據(jù),這種數(shù)據(jù)結 構的一個好處是可以實現(xiàn)動態(tài)的表結構 (schema)。盡管MongoDB!于NoSQ嗷據(jù) 庫,但是MongoD展現(xiàn)了很多傳統(tǒng)關系型數(shù)據(jù)庫的功能:(1)含關鍵字字段查詢、 范圍查詢,正則表達式查詢在內(nèi)的豐富查詢功能;(2)對二級索引的支持;(3)數(shù)據(jù)庫服務端運行自定義Javascript腳本的功能;(4)集成MapReduce現(xiàn)數(shù)據(jù) 聚合分析的功能;(5)基于數(shù)據(jù)分片與數(shù)據(jù)備份機制的分布式存儲功能。數(shù)據(jù)規(guī)模Kev Value數(shù)據(jù)庫面向列的數(shù)據(jù)庫文檔數(shù)據(jù)庫圖模型數(shù)據(jù)庫數(shù)據(jù)模型的整條性圖1.1數(shù)據(jù)模型復雜性與數(shù)據(jù)規(guī)模的關系示意圖展示了不同數(shù)據(jù)模型復雜性與數(shù)據(jù)規(guī)模
9、的關系圖中根據(jù)數(shù)據(jù)存儲模型的復雜性從低到高依次為Key. Value數(shù)據(jù)庫、類BigTable數(shù)據(jù)庫、描述復雜圖模型 的圖形數(shù)據(jù)庫。這張圖從一定程度上反映了數(shù)據(jù)的存儲建模與數(shù)據(jù)規(guī)模的關系。第二章主要分布式數(shù)據(jù)庫技術介紹一、Hadoop技術架構hadoop是一個免費開源的分布式系統(tǒng)基礎架構,它最原始的版本是由Apache 基金會開發(fā)的。Hadoop核心框架主要包括:HDFSffi MapReduce HDFSS供了海 量數(shù)據(jù)存儲,MapReduce提供了海量數(shù)據(jù)計算和分析過程目前市面上免費開源 的Hadoop版本主要有三個,分別是:Apache(最原始的版本,所有發(fā)行版均基于 這個版本進行改進
10、)、Cloudera 版本(Cloudera S Distribution Including Apache Hadoop 簡稱 CDH) Hortonworks 版本(Hortonworks DataPlatform ,簡 稱 HDPHadoop是一個分布式處理的軟件框架,相對于單機運行,它更善于處理大 數(shù)據(jù)量的問題。實現(xiàn)了 Google的MapReduce編程模型和存儲框架提出的將應 用程序分割成許多小的并行的程序單元的要求,并且這些單元在任何節(jié)點上都 可以執(zhí)行。在MapReduce中,要分清“作業(yè)(job ) ”和“任務(task ) ”。 Job是還未執(zhí)行的的應用程序,它處于準備階段。
11、而task則是正在各個計算節(jié)點上執(zhí)行的工作單元,是從一個作業(yè)劃分出來已經(jīng)實施的程序部分。此外,Hadoop 提供的分布式文件系統(tǒng)(HDFS, Hadoop Distributed File System )主 要負責各個節(jié)點上的數(shù)據(jù)存儲,它是實現(xiàn)高吞吐率的數(shù)據(jù)讀寫功能的基礎。圖2.1 Hadoop結構圖Hadoop在分布式存儲和分布式計算方面為了可以提高速率和準確度,都是采 用了主/從(Master/Slave )的架構模式,一系列在集群中運行的后臺(deamon) 程序就是這 些要求的根本保障。根據(jù)分工不同可分為以下幾個部分組成: NameNode Secondary NameNoda Da
12、taNoda Task Tracker、JobTracker。如 上圖 2.1 所示的,NameNodeSecondary NameNode Job Tracker 運行在 Master 節(jié)點上,TaskTracker 和DataNode運行在Slave 節(jié)點上,本機的數(shù)據(jù)都盡量 交給這些數(shù)據(jù)處理程序來直接處理,以節(jié)約時間成本。2、HDFSS述HDFS(Hadoop Distributed File System)是分布式計算 中數(shù)據(jù)存儲管理的基礎。HDFS的體系結構是主/從 (Master/Slave )模式,即一個NameNode和 多個DataNode,如圖2.2所示。HDFS將數(shù)據(jù)文件
13、分割成大小各異的數(shù)據(jù)塊 (Block ),分散存儲于各個DataNode中,并按照“一次寫入、多次讀取”的 模式進行讀寫。用戶如果要對數(shù)據(jù)進 行操作,都有要先訪問NameNode它會處 理用戶的請求,之后給 DataNode分配具體任務,也就是說NameNode負責調(diào) 度安排,DataNode實施具體工作。圖2.2 HDFS結構示意圖HA(High Availability) ,即高可用性。HA為系統(tǒng)對外正常提供服務時間 的百分比,也即是在出現(xiàn)故障的情況下還能保證數(shù)據(jù)存儲的可靠性的程度。HDFS的可靠性能夠利用平均無故障時間(MTTF)來衡量,即為HDFS正常服務的平均運 行時間;HDFS的可
14、維護性是利用平均維護時間(MTTR來衡量,即HDFS從不能 正常服務到再次正常服務之間所需的平均維護時間。HDFS的HA可精確定義為如下公式:MTTF/(MTTF + MTTR) *100% ( 2.1 )HDFS具備了較為完善的冗余備份和故障恢復機制,可以實現(xiàn)在集群中可靠 地存儲數(shù)據(jù)文件。3、HBAS瑜述HBase 是 Google BigTable 的開源實現(xiàn),是一個 NoSQt , HBase 不屬 于Hadoop,但是依賴于Hadoop和ZooKeeper。其實,與其說它是一個數(shù)據(jù)庫, 倒不如說它是一個Key-Value對的倉庫更加合適,它和常用編程語言中 Map類 也有些相似之處。作
15、為NoSQLHBase并沒有采用基于行的存儲模式。在HBase中 的數(shù)據(jù)表每列單 獨存放在相鄰的物理單元,只需要訪問涉及到的列,因此可以 在很大程度上降低整個集 群系統(tǒng)的I/O 開銷;HBase還支持并發(fā)地進行查詢和 處理,如果需要處理好幾列,可以開啟多個線程,每個線程處理一列或者幾列, 以加快處理速度,因此它采用了這種基于列的存儲方式。HBase的數(shù)據(jù)表具有排 列疏松,使用時間長,維度高的特點,它按照 Key值排序,其索引是行關鍵字 (key值)、列關鍵字(Column)以及時間戳(Timestamp)。行關鍵字是行在表中的 唯一標識,如果先后插入兩個行關鍵字相同的行,則后面一行會覆蓋掉前面
16、一行。 用戶在HBase表格中存儲數(shù)據(jù),每一行都有一個可排序的主鍵,多個在創(chuàng)建表 時固定的列簇和任意多的列。HEUSHBase采用了主/從(Master-Slave )的架構模式,其中 HBase主節(jié)點節(jié)作為Master調(diào)控整個集群,同時定期檢測Regionserver 發(fā)來的“心跳”以確 認其處于工作狀態(tài),同時為了確保元數(shù)據(jù)表中的所有數(shù)據(jù)都處于在線狀態(tài),HBaseMaster也會定期對元數(shù)據(jù)表進行掃描。Regionserver 運行在Slave節(jié) 點上,這些具體任務就是有它來完成的。為了實現(xiàn)HBaseHBase的分布式特性, 集群需要大量的Regionserver。4、Hive簡述Hive是
17、一個基于Hadoop生態(tài)體系的數(shù)據(jù)倉庫工具。它的最大優(yōu)勢是大大降 低了 MapReduce作業(yè)的開發(fā)時間。它沒有提供更快地開發(fā) Map和Reduce任務的 方法,而是定義了一種類似SQL勺查詢語言(HiveQL ,簡稱HQL Hive使用HiveQL 語句進行數(shù)據(jù)操作,并將其自動轉化成一個或者多個MapReucd乍業(yè),最后執(zhí)行這些MapReduce序并將數(shù)據(jù)結果提交給最終用戶。Hadoop Streaming縮短了 “編碼、編譯、提交”的開發(fā)周期,而 Hive完全摒棄了這一過程,只需要構造 HiveQL語句即可。HiveQL語句轉換成對應的 MapReduce層操作。它還提供了 一系列的工具進
18、行數(shù)據(jù)提取轉化加載,也可以實現(xiàn)對ma環(huán)口 reduce函數(shù)的定制, 為數(shù)據(jù)操作提供了良好的可擴展性。止匕外,結合 Sqoop Mahout數(shù)據(jù)挖掘工具, 可以有效地實現(xiàn)對數(shù)據(jù)倉庫中多維數(shù)據(jù)的挖掘處理。因此,非常適合數(shù)據(jù)倉庫的構建。然而,Hadoop是一個批處理架構,因此,其任務的提高和高度會有較高的延 遲和資源消耗。這會導致 Hive即使針對非常小的數(shù)據(jù)量進行查詢操作時,也會 造成十分嚴重的延遲現(xiàn)象。所以,在小數(shù)據(jù)集的分析和處理上,Hive遠不如Oracle、DB2等關系數(shù)據(jù)庫。Hive的設計目的是為可容忍延遲的交互式數(shù)據(jù)查詢 與分析提供服務。止匕外,Hive不適用于OLTP嵌機事務處理)和實
19、時查詢、更新, 它最適合用于對海量不可更改的數(shù)據(jù)集的批處理工作。Hive具有良好的容錯機制、可伸縮性以及數(shù)據(jù)格式的松耦合。5、MongoDB述MongoDB是由C+郵言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系 統(tǒng)。在高負載的情況下,添加更多的節(jié)點,可以保證服務器性能。MongoDB旨在為WEEK用提供可擴展的高性能數(shù)據(jù)存儲解決方案。MongoDBW數(shù)據(jù)存儲為一個 文檔,數(shù)據(jù)結構由鍵值(key=value)對組成。MongoDBi檔類似于JSON對象。 字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。(name: field:valueage: 26, field:valuestatus:A fi
20、eld:valuegroups:L,news, sports field:valueMongoDB的提供了一個面向文檔存儲,操作起來比較簡單和容易??梢栽贛ongoDB記錄中設置任何屬性的索引(如:FirstName=Sameer,Address=8Gandhi Road)來實現(xiàn)更快的排序??梢酝ㄟ^本地或者網(wǎng)絡創(chuàng)建數(shù)據(jù)鏡像,這使得 MongoD的更強的擴展性。如 果負載的增加(需要更多的存儲空間和更強的處理能力),它可以分布在計算機 網(wǎng)絡中的其他節(jié)點上這就是所謂的分片。 Mongo支持豐富的查詢表達式。查詢指 令使用JSONB式的標記,可輕易查詢文檔中內(nèi)嵌的對象及數(shù)組。使用 update()
21、命令可以實現(xiàn)替換完成的文檔(數(shù)據(jù))或者一些指定的數(shù)據(jù)字段。Mongodb中的Map/reduce主要是用來對數(shù)據(jù)進行批量處理和聚合操作。Map和Reduce Map函數(shù)調(diào)用emit(key,value) 遍歷集合中所有的記錄,將 key與 value傳給Reduce函數(shù)進行處理。Map函數(shù)和 Reduce函數(shù)是使用Javascript 編寫的,并可以通過db.runComman mapreduce命令來執(zhí)行MapReduce8作。 GridFS是MongoDBH勺一個內(nèi)置功能,可以用于存放大量小文件。6、Cassandra 簡述Cassandra的數(shù)據(jù)模型是基于列族(Column Family
22、 )的四維或五維模型。它借鑒了 Amazon的完全分布式的 Dynamo基礎,結合了 Google BigTable基于 列族(ColumnFamily )的數(shù)據(jù)模型,采用 Memtable和SSTable的方式進行存 儲。在Cassandra寫入數(shù)據(jù)之前,需要先記錄日志 (CommitLog ),然后數(shù)據(jù) 開始寫入到 Column Family 對應的Memtable中,Memtable是一種按照key 排序數(shù)據(jù)的內(nèi)存結構,在滿足一定條件時,再把Memtable的數(shù)據(jù)批量的刷新到 磁盤上,存儲為SSTable 。 Cassandra是社交網(wǎng)絡理想的數(shù)據(jù)庫, 適合于實時事 務處理和提供交互型數(shù)
23、據(jù)。目前twitter和digg中都有使用。在CAP#性上, HBase選擇了 CP, Cassandra更傾向于AP,而在一致性上有所減弱。Cassandra和HBase的一個重要區(qū)別是,Cassandra在每個節(jié)點是是一個單 Java進程,而完整的HBase解決方案卻由不同部分組成:有數(shù)據(jù)庫進程本身, 它可能會運行在多個模式;一個配置好的HadoopHDF劭布式文件系統(tǒng),以及一個Zookeeper系統(tǒng)來協(xié)調(diào)不同的HBase進程。第三章各類分布式數(shù)據(jù)庫技術對比、HBase與 MongodbX寸比對比項HBaseMongodb語言javaC+存儲方式列式數(shù)據(jù)庫,集群部署時每個familycol
24、umn 保存在單獨的 hdfs文件中文檔型數(shù)據(jù)庫,整個數(shù)據(jù)都存在磁盤二級索引不支持支持主鍵存儲是row key ,可以是任意字符串(最大長度是64KB,實際應用中長度一般為10-100bytes),在 hbase 內(nèi)部,row key記錄插入的順序和存放的順序一樣保存為字節(jié)數(shù)組。存儲時,數(shù)據(jù)按照Rowkey的字典序(byte order) 排序存儲。查詢只支持三種查找:通過單個row key訪問,支持集合查找,正則查找,范圍查找,支持skip通過 row key 的range , 全表掃描和limit 等等,讀效率比適合寫多讀少效率高MapReduce支持支持 mapreduce,不過 mon
25、godb 的 mapreduce 支持不夠強大,如果沒有使用mongodb分片,mapreduce實際上不是并行執(zhí)行的數(shù)據(jù)讀寫機制采用 LSM 思想(Log-Structured采用的是mapfile+Journal 思想,如果記錄不在Merge-Tree),就是將對數(shù)據(jù)的更改 hold內(nèi)存,先加載到內(nèi)存,然后在內(nèi)存中更改后記錄在內(nèi)存中,達到指定的threadhold 后將該批更改merge后批量寫入到磁盤,這樣日志,然后隔一段時間批量的寫入 data文件,這 樣對內(nèi)存的要求較高,至少需要容納下熱點數(shù)據(jù)二|將單個寫變成了批量寫,大大提高了寫入和索引。速度,讀數(shù)據(jù)時需要 merge disk上的
26、數(shù)據(jù)和memory中的修改數(shù)據(jù),這顯然降低了讀的性能。、 HBase與 Cassandra 對比對比項HBaseCassandra語言JavaJava出發(fā)點BigTableBigTable and DynamoLicenseApacheApacheProtocolHTTP/REST (also Thrift)Custom, binary (Thrift)數(shù)據(jù)分布表劃分為多個region存在不同region server上改進的一致性哈希(虛擬節(jié)點)存儲目標大文件小文件一致性強一致性最終一致性,Quorum NRW策略架構master/slavep2PNameNode是HDFS的單點故障局可用性
27、點P2P和去中心化設計,不會出現(xiàn)單點故障伸縮性Region Server 擴容,通過將 自身發(fā)布到 Master , Master 均勻分布Region擴容需在Hash Ring 上多個節(jié)點間調(diào)整數(shù) 據(jù)分布讀寫性能數(shù)據(jù)讀寫定位可能要通過最多6次的網(wǎng)絡RPC,性能較低。數(shù)據(jù)讀寫定位非??鞌?shù)據(jù)沖突處理樂觀并發(fā)控制(optimistic concurrency control)向量時鐘臨時故障處理Region Server 石機,重做 1 1 1 c-數(shù)據(jù)回傳機制:某節(jié)點宕機,hash到該節(jié)點的新數(shù)據(jù)自動路由到下點做hintedHLoghandoff ,源節(jié)點恢復后,推送回源節(jié)點。永久故障恢復Reg
28、ion Server 恢復,master 重新給其分配regionMerkle哈希樹,通過 Gossip協(xié)議同步Merkle Tree ,維護集群節(jié)點間的數(shù)據(jù)一致 性成員通信及錯誤檢測Zookeeper基于GossipCAP1,強一致性,0數(shù)據(jù)丟失。2, 可用性低。3,擴容方便。1,弱一致性,數(shù)據(jù)可能丟失。2,可用性局。3,擴容方便。、HBase Cassandra、MonogDb寸比以下數(shù)據(jù)基于亞馬遜云平臺上對三個主流的NoSQ散據(jù)庫性能比較橫坐標是吞吐量,縱坐標是延遲,這是一對矛盾,吞吐量越大,延遲越低,代表越好。.純粹插入,Cassandra領先,_ _ _ 一 . O ,9 87654
29、32105UJUUS3 事若nA-=*=:一 35ts/Warkload F: Update (Read-Modify-Write 50% Read 50%)Calandra 2 3MonjoO 2 4.61000 Throughput,11.90%的插入insert和10%勺讀取,插入性能:0 與:. Read 10%)r jndra J 0Hbd0.924000TTi ro ugh p Lit. d pscMonfoDb 2.4.S四、HiveSQL與 SQLM比數(shù)據(jù)庫的事務、索引以及更新都是傳統(tǒng)數(shù)據(jù)庫的重要特性。但是 Hive到目前也不支持更新(這里說的是對行級別的數(shù)據(jù)進行更新),不支持
30、事務;雖然Hive 支持建立索引,但是它還不能提升數(shù)據(jù)的查詢速度。下表列出了 RMD喇Hive的 比較:比較項SQLHiveQLANSI SQL支持不完全支持更新UPDATEINSERTDELETEinsert OVERWRITEINTO TABLE事務支持不支持模式寫模式讀模式數(shù)據(jù)保存塊設備、本地文件系統(tǒng)HDFS延時低高多表插入不支持支持子查詢完全支持只能用在From子句中視圖UpdatableRead-only可擴展性低高數(shù)據(jù)規(guī)模小大本文采用Oracle與Hive進行性能對比測試,將測試數(shù)據(jù)分組,以 1000怵口 2000W條數(shù)據(jù)為一個級別,分為 5 個組:1000W 2000W 3000
31、W 4000W 6000W 8000W分別為一組測試數(shù)據(jù)。然后每一組數(shù)據(jù)分別在Hive數(shù)據(jù)倉庫和Oracle數(shù) 據(jù)庫中測試查詢時間(分別每組取10次,然后求平均值),最后比較查詢效率。測試時間表數(shù)據(jù)量級(萬條)Oracle測試時間(ms)Hive測試時間(ms)10006608100482000116811592730001629216682400021207181936000273711985480003362820769由實驗分析可得:當數(shù)據(jù)量較小時,Hive優(yōu)勢無法體現(xiàn),甚至遠不如Oracle數(shù)據(jù)庫。但是,隨著數(shù)據(jù)量級別的不斷增大,當數(shù)據(jù)量超過 3000W條時,Hive 的特點開始發(fā)揮優(yōu)
32、勢,當測試數(shù)據(jù)為 4000W條時,Hive查詢時間已經(jīng)開始略優(yōu)于Oracle數(shù)據(jù)庫,可以預測隨著數(shù)據(jù)量級的不斷增大,Hive數(shù)據(jù)倉庫的優(yōu)勢會 逐步體現(xiàn)出來。所以,在面對海量數(shù)據(jù)處理時,基于 Hive架構數(shù)據(jù)倉庫具有明 顯的優(yōu)勢。五、HDFS HBase與Hive的關系HDF為GFS的一種實現(xiàn),他的完整名字是分布式文件系統(tǒng),類似于FAT32,NTFS是一種文件格式,是底層的。Hive與Hbase的數(shù)據(jù)一般都存儲在HDFS1。 Hadoop HDF勸他們提供了高可靠性的底層存儲支持。容錯率很高,即便是在系 統(tǒng)崩潰的情況下,也能夠在節(jié)點之間快速傳輸數(shù)據(jù)。HBase是非關系數(shù)據(jù)庫,是開源的Not-On
33、ly-SQL數(shù)據(jù)庫,它的運行建立在 Hadoop上。HBase依賴于CAPS二 J!(Consistency, Availability, and Partition Tolerance)中的 CP項。HDFSft適于執(zhí)行批次分析。然而,它最大的缺點是無法執(zhí)行實時分析,而實 時分析是信息科技行業(yè)的標配。HBase能夠處理大規(guī)模數(shù)據(jù),它不適于批次分析, 但它可以向Hadoop實時地調(diào)用數(shù)據(jù)。HDF辱口 HBase都可以處理結構、半結構和非結構數(shù)據(jù)。因為HDFSt立在舊的MapReducei架上,所以它缺乏內(nèi)存引擎,數(shù)據(jù)分析速度較慢。相反, HBase 使用了內(nèi)存引擎,大大提高了數(shù)據(jù)的讀寫速度。H
34、Base乍為面向列的數(shù)據(jù)庫運行在HDFS上,HDFSft乏隨即讀寫操作,HBase正是為此而出現(xiàn)。HBase以Google BigTable為藍本,以鍵值對的形式存儲。項目的目標就是快速在主機內(nèi)數(shù)十億 行數(shù)據(jù)中定位所需的數(shù)據(jù)并訪問它。HBas更一個數(shù)據(jù)庫,一個NoSql的數(shù)據(jù)庫, 像其他數(shù)據(jù)庫一樣提供隨即讀寫功能,Hadoop不能滿足實時需要,HBase正可以 滿足。如果你需要實時訪問一些數(shù)據(jù),就把它存入HBasa可以用Hadoop作為靜態(tài)數(shù)據(jù)倉庫,HBase作為數(shù)據(jù)存儲,放那些進行一些操作會改變的數(shù)據(jù)。Hbase 與hive都是架構在Hadoop之上的。都是用 Hadoop作為底層存儲。而
35、Hbase是 作為分布式數(shù)據(jù)庫,而hive是作為分布式數(shù)據(jù)倉庫。當然hive還是借用Hadoop 的MapReduce完成一些hive中的命令的執(zhí)行。第四章分布式數(shù)據(jù)庫總結一、選型原則? 所提供的功能是否能夠完整地解決問題,是否適應于現(xiàn)有業(yè)務場景。? 數(shù)據(jù)庫的擴展性如何。是否允許用戶添加自定義組成來滿足特殊的需求。? 所選擇分布式數(shù)據(jù)庫是否有豐富完整的文檔,并且能夠以免費甚至付費 的形式得到專業(yè)的支持。? 所選擇分布式數(shù)據(jù)庫是否有很多人使用,尤其是一些大型企業(yè)在使用, 并存在著成功的案例。二、選型方案本文建議擬選用關系型數(shù)據(jù)庫、分布式數(shù)據(jù)庫與分布式存儲技術相結合的模 式進行數(shù)據(jù)庫選型。1、HB
36、ase作為開源的 BigTable 解決方案,依托 Hadoop生態(tài)圈,越來越多的 被企業(yè)用來作為數(shù)據(jù)的在線存儲方案,以解決 PB級數(shù)據(jù)的實時存儲與高并發(fā)訪 問。技術社區(qū)資源豐富,在互聯(lián)網(wǎng)、金融、通信領域具有成熟的應用案例。2、HBase的存儲方式有2種,一種是使用操作系統(tǒng)的本地文件系統(tǒng),另外一種則是在集群環(huán)境下使用 Hadoop的HDFS相對而言,使用 HDFS等會使數(shù)據(jù)更 加穩(wěn)定。HBase不僅可以向下提供運算,它還能夠結合 Hadoop的MapReduce 上提供運算,與Spark計算平臺具有很好的結合,滿足未來對于歷史歸檔數(shù)據(jù)的 統(tǒng)計分析應用拓展需求。3、HBase是一個高可靠性、高性
37、能、可伸縮的分布式存儲系統(tǒng),很適合存儲 電子票據(jù)數(shù)據(jù)。HBase可以保障業(yè)務高并發(fā)開票能力,支持海量票據(jù)存儲和檢索; 每份電子票據(jù)存儲三份,互為冗余備份;采用分庫分表技術解決了傳統(tǒng)關系型數(shù) 據(jù)所不具備的寫擴展能力。4、擴展讀寫能力,隨著數(shù)據(jù)量和并發(fā)的增長,請求均勻分布在不同機器, 數(shù)據(jù)自動分片(Sharding),自動均衡。分片之后,數(shù)據(jù)以 Region為單位均勻分 布在服務器節(jié)點,跟Hadoop的無縫集成保障了其數(shù)據(jù)可靠性(HDFS和海量數(shù) 據(jù)分析的高性能(MapReduce。5、水平擴展(Scaling-Out )操作簡單,擴容時通過增加機器節(jié)點完成,數(shù) 據(jù)自動平衡,數(shù)據(jù)總量取決于集群節(jié)點
38、數(shù)量,而且對錯誤的兼容性比較高。三、主流HBase產(chǎn)品目前國內(nèi)市場上HBase產(chǎn)品主要分為兩大流派,一是以阿里云為代表的云數(shù)據(jù)庫HBas0通過云服務托管的模式為用戶提供全面的運維服務。二是以硬件廠 商為代表的企業(yè)級大數(shù)據(jù)平臺建設方案,通過提供整套大數(shù)據(jù)基礎設施建設方案 滿足用戶對大數(shù)據(jù)存儲管理的需求。 本文主要以第二種產(chǎn)品為論證對象,對主流大數(shù)據(jù)平臺產(chǎn)品進行選型評估。1、華為Fusioninsight 企業(yè)級大數(shù)據(jù)平臺Fusioninsight是華為面向眾多行業(yè)客戶推出的,基于Apache開源社區(qū)軟件 進行功能增強的企業(yè)級大數(shù)據(jù)存儲、查詢和分析的統(tǒng)一平臺。它以海量數(shù)據(jù)處理引擎和實時數(shù)據(jù)處理引擎
39、為核心,并針對金融、運營商等數(shù)據(jù)密集型行業(yè)的運行 維護、應用開發(fā)等需求,打造了敏捷、智慧、可信的平臺軟件、建模中間件及 OM系統(tǒng),讓企業(yè)可以更快、更準、更穩(wěn)的從各類繁雜無序的海量數(shù)據(jù)中發(fā)現(xiàn)全 新價值點和企業(yè)商機。其主要技術指標如下圖所示:分類1指標項規(guī)格說明并行計算引擎(MapReduce 性育匕WordCount:平均每節(jié)點處理能力(GB/分鐘)8GB/分鐘指標Terasort :平均每節(jié)點處理能力(GB/分鐘)6GB/分鐘并行計算引擎WordCount:平均每節(jié)點處理能力(GB/分鐘)27GB/分鐘 /Node(Spark)性能指標Terasort :平均每節(jié)點處理能力(GB/分鐘)6GB
40、/分鐘 /Node處理能力-HiveAggregation :平均每節(jié)點處理能力8GB/分鐘12節(jié)點集群;節(jié)點典型配置:CPU:2*E5-2650Hive性能指標(GB/分鐘)處理能力-HiveJoin :平均每節(jié)點處理能力(GB/分2GB/分鐘鐘)內(nèi)存:128G硬盤:SATA盤100%!機讀:平均每節(jié)點讀取記錄條數(shù)(每條記錄1KB),響應時間小于 50M5SHBase性能指標100%追機寫:平均每節(jié)點寫入記錄條數(shù)(每條記錄1KB),響應時間小于 50M5S順序掃描:平均每節(jié)點scan記錄條數(shù)(每條記錄1KB),響應時間小于 50MS產(chǎn)品規(guī)格如下:系統(tǒng)指標規(guī)格系統(tǒng)支持最大節(jié)點數(shù)4000可靠性指
41、標-MTTF17520小時可靠性指標-MTTR1小時可靠性指標-MTBF17521小時可服務性規(guī)格-可軟件安裝時間2小時可服務性規(guī)格-擴容完成時間2小時100節(jié)點內(nèi)可服務性規(guī)格-軟件升級時間4000單節(jié)點數(shù)據(jù)加載能力2GB/分鐘SQL兼容性完善的ANSI SQL標準兼容,OLAP擴展支持的組件Flume、HDFS HBASE Storm、 Pig、 Mahout 等機器學習支持In-Database Analytics ,提供豐富的數(shù)據(jù)挖掘算法穩(wěn)定單集群規(guī)模200單節(jié)點數(shù)據(jù)加載能力2TB/小時分布式并行數(shù)據(jù)庫|SQL兼容性完善的ANSI SQL標準兼容,OLAP擴展MPP存儲模式支持行級、列級
42、、混合存儲;壓縮皆可到14倍;支持 md5 SHA1 SHA224/256/384/512、AESPGP寸稱加密、PGP公鑰加密等存儲加密方式穩(wěn)定單集群規(guī)模200 節(jié)點;40TB單節(jié)點并發(fā)查詢能力2萬/秒內(nèi)存數(shù)據(jù)庫MemDB支持的查詢接口SQL Key/Value高級特性數(shù)據(jù)智能分片、智能均衡、集群多活,支持二|MapReduce算法等3、IBM InfoSphere大數(shù)據(jù)分析平臺IBM InfoSphere 大數(shù)據(jù)分析平臺包括 BigInsights 和Streams,二者互補,Biglnsights 對大規(guī)模的靜態(tài)數(shù)據(jù)進行分析,它提供多節(jié)點的分布式計算,可以 隨時增加節(jié)點,提升數(shù)據(jù)處理能力
43、。Streams采用內(nèi)存計算方式分析實時數(shù)據(jù)InfoSphere大數(shù)據(jù)分析平臺還集成了數(shù)據(jù)倉庫、數(shù)據(jù)庫、數(shù)據(jù)集成、業(yè)務流程管理等組件。BigInsights 基礎版和企業(yè)版均包含了 Apache Hadoop和大量的開源軟件技術,具體包含的開源項目:ApacheHad00Pti括 HadoopDistributed File System (HDFSb MapReduce 框架和通用的實用工具,是一種適用于數(shù)據(jù)密集型應用的軟件框架,可 用于開發(fā)分布式計算環(huán)境Pig是用于Hadoop的一種高級編程語言和運行時環(huán)境Jaql 是基于 JavaScript Object Notation (JSON)
44、的一種高級查詢語言, 也支持SQLHive是一種數(shù)據(jù)倉庫基礎架構,設計用于支持批量查詢和分析Hadoop管理的文件HBaseH一種以列為主的數(shù)據(jù)存儲環(huán)境,設計用于支持Hadoop中的稀疏填充的大型表格Flume是一種用來數(shù)據(jù)收集并將其加載到Hadoop中的工具Lucene是一種文本搜索和索引技術Avro是一種數(shù)據(jù)序列化技術ZooKeeper是分布式應用程序的一種協(xié)作服務Oozie是工作流/作業(yè)編排技術IBM大數(shù)據(jù)平臺提供全面的企業(yè)級 Hadoop平臺、流計算、分析引擎企業(yè)級 數(shù)據(jù)倉庫實現(xiàn)各種數(shù)據(jù)的存儲、分析和挖掘,結構化數(shù)據(jù)可以使用數(shù)據(jù)倉庫進行 存儲和分析,結構化原始數(shù)據(jù)、半結構化和非結構化數(shù)據(jù)可以存儲到企業(yè)級 Hadoop系統(tǒng)中并進行后續(xù)分析處理,動態(tài)的半結構化和非結構化信息流通過流 計算和分析引擎進行處理、過濾和分析后,生成的結構化分析結果可以存儲到數(shù) 據(jù)倉庫中以便和其他歷史信息進行進一步的深入分析,而獲取的半結構化和非結構化信息可以存儲到企業(yè)級 Hadoop系統(tǒng)中(當然結構化的信息也可以存儲到企 業(yè)級Hadoop中)。數(shù)據(jù)倉庫技術和企業(yè)級 Had
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全網(wǎng)絡數(shù)據(jù)挖掘與分析技術實踐考核試卷
- 電子商務平臺用戶體驗管理與提升
- 生物科技與農(nóng)業(yè)融合發(fā)展-作物保護新策略
- 現(xiàn)代辦公環(huán)境下的財務信息安全管理
- 2025-2030年回轉窯用耐磨耐火磚行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年地道小吃市集企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年可食用級嬰兒手口濕巾行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年商務休閑女士雙肩包行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年抗疲勞保健食品企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 電商APP的界面設計與用戶體驗研究
- 《預制高強混凝土風電塔筒生產(chǎn)技術規(guī)程》文本附編制說明
- C語言程序設計 教案
- 2025新譯林版英語七年級下單詞表
- 海洋工程設備保溫保冷方案
- 主干光纜、支線光纜線路中斷應急預案
- 跨學科主題學習的思考與策略
- 文藝演出排練指導服務合同
- 醫(yī)院消防安全培訓課件(完美版)
- 行政法-9行政確認
- 人教版(2024新版)一年級上冊數(shù)學第一單元《數(shù)學游戲》單元整體教學設計
- 防洪防汛安全知識教育課件
評論
0/150
提交評論