【正文】
HLog Sequece File的 Value是 HBase的 KeyValue對象,即對應(yīng) HFile中的 KeyValue。 ? 每個 Region Server維護一個 Hlog,而不是每個 Region一個。 DataBlock Index采用 LRU機制淘汰。每條索引的 key是被索引的block的第一條記錄的 key。 ? StoreFile以 HFile格式保存在 HDFS上。但一個Hregion是不會拆分到多個 server上的。 ? 3 region按大小分割的,每個表一開始只有一個 region,隨著數(shù)據(jù)不斷插入表, region不斷增大,當增大到一個閥值的時候, Hregion就會等分會兩個新的 Hregion。 ? 訪問控制、磁盤和內(nèi)存的使用統(tǒng)計都是在列族層面進行的。 Page 82 ? 列族 ? hbase表中的每個列,都歸屬與某個列族。列名都以列族作為前綴。(位臵相關(guān)性 ) 注意: ? 行的一次讀寫是原子操作 (不論一次讀寫多少列 )。 為什么需要 HBASE ? 數(shù)據(jù)庫系統(tǒng)已無法適應(yīng)大型分布式數(shù)據(jù)存儲的需要 ? 改良的關(guān)系數(shù)據(jù)庫(副本、分區(qū)等)難于安裝與維護 ? 關(guān)系模型對數(shù)據(jù)的操作使數(shù)據(jù)的存貯變得復雜 主要特點 ? HBASE從設(shè)計理念上就為可擴展做好了充分準備 ? Columnoriented ? 空間的擴展只需要加入存儲結(jié)點 ? 使用‘表’的概念,但不同于關(guān)系數(shù)據(jù)庫,不支持 SQL ? 它又不適合事務(wù)處理 ? 實質(zhì)上是一張極大的、非常稀疏的,存儲在分布式文件系統(tǒng)上的表 Page 73 Page 74 HBase歷史 ? 2022年底由 PowerSet 的 Chad Walters和 Jim Kellerman 發(fā)起 ? 2022年成為 Apache Hadoop的一個子項目 ? 現(xiàn)已作為產(chǎn)品被使用 ? WorldLingo ? ? OpenPlaces ? Yahoo ? Adobe HBASE用例- WebTable ? 存儲抓取網(wǎng)頁和相關(guān)信息 ? 每個頁面對應(yīng)一行,是個有百萬行的大表 ? 要基于此表進行分析與解析并由搜索引擎對關(guān)鍵字進行索引 ? 表需要并發(fā)地被眾多網(wǎng)頁抓取程序隨機地訪問以及更新數(shù)據(jù) ? 表內(nèi)容也要作為網(wǎng)頁實時緩存被大量用戶隨機訪問 邏輯視圖 Row Key Time Stamp Column Contents Column Anchor Column “mime” “ww” T9 CNN T8 T6 “html.. “ Text/html T5 “html.. “ t3 “html.. “ RowKey Row Key ? 與 nosql數(shù)據(jù)庫們一樣 ,row key是用來檢索記錄的主鍵。 ? 全局概念模式: 描述分布式數(shù)據(jù)庫中全局數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)特性,是分布式數(shù)據(jù)庫的全局概念視圖。 ?對數(shù)據(jù)控制和管理容易 ?數(shù)據(jù)一致性和完整性能夠得到保證 ?系統(tǒng)對數(shù)據(jù)站點依賴過重 ?數(shù)據(jù)站點故障將導致整個系統(tǒng)崩潰 ?檢索效率低 ?分割式:所有數(shù)據(jù)只有一份,經(jīng)過邏輯分割后形成多個片段,每個片段放在某個特定的站點上。 ? 分片規(guī)則 ?完備性條件:不多,即全局關(guān)系的所有數(shù)據(jù)必須映射到各個片段中,不允許有屬于全局關(guān)系的數(shù)據(jù)不屬于它的任何一個片段。通過對全局關(guān)系進行選擇運算得到。 ?同構(gòu)異質(zhì)性:各站點上的數(shù)據(jù)模型(關(guān)系、網(wǎng)狀、層次)相同,但不是同一種 DBMS。 分布式數(shù)據(jù)庫的特點 ? 分布式數(shù)據(jù)庫的 12條準則 ? 本地自治性 ? 不依賴于中心站點 ? 可連續(xù)操作性 ? 位臵獨立性 ? 數(shù)據(jù)分片獨立性 ? 數(shù)據(jù)復制獨立性 ? 分布式查詢處理 ? 分布式事務(wù)處理 ? 硬件獨立性 ? 操作系統(tǒng)獨立性 ? 網(wǎng)絡(luò)獨立性 ? 數(shù)據(jù)庫管理系統(tǒng)獨立性 ? 單個 DBMS的本地運算不受多數(shù)據(jù)庫系統(tǒng)中其它 DBMS的加入而影響。 ? 集中與自治相結(jié)合的控制機制:局部共享和全局共享 ? 一定的數(shù)據(jù)冗余:可靠、可用,單個站點故障不會影響整體。 ? 分布式數(shù)據(jù)庫的特點 ? 物理分布性 ? 邏輯整體性,不同于分散式數(shù)據(jù)庫,有全局數(shù)據(jù)庫和局部數(shù)據(jù)庫的概念。 訪問權(quán)限,現(xiàn)在是無限制訪問的,沒有訪問權(quán)限控制。 Data Correctness ? Use Checksums to validate data – Use CRC32 ? File Creation – Client putes checksum per 512 byte – DataNode stores the checksum ? File access – Client retrieves the data and checksum from DataNode – If Validation fails, Client tries other replicas NameNode Failure ?A single point of failure ?Transaction Log stored in multiple directories – A directory on the local file system – A directory on a remote file system (NFS/CIFS) Page 51 HDFS未實現(xiàn)的功能總結(jié): 文件追加寫入,這個功能近期內(nèi)不會實現(xiàn),沒有這個功能會引起當文件尚未關(guān)閉的時候,數(shù)據(jù)服務(wù)器死機或者目錄服務(wù)器死機,會引起文件文件丟失,并且不可后續(xù)恢復寫入。機架的錯誤遠遠比節(jié)點的錯誤少,所以這個策略不會影響到數(shù)據(jù)的可靠性和可用性。 ? 集群中單一 Namenode的結(jié)構(gòu)大大簡化了系統(tǒng)的架構(gòu)。從內(nèi)部看,一個文件其實被分成一個或多個數(shù)據(jù)塊,這些塊存儲在一組 Datanode上。 ? Namenode執(zhí)行文件系統(tǒng)的名字空間操作,比如打開、關(guān)閉、重命名文件或目錄。 ? HDFS放寬了一部分 POSIX約束,來 實現(xiàn)流式讀取 文件系統(tǒng)數(shù)據(jù)的目的。 ? 它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點。 ?將系統(tǒng)劃分為若干半自治的小組。使用緩存和實施放松的共享語義,使跨機器的交互作用最少。負載和系統(tǒng)規(guī)模成比例的任何服務(wù)員,一旦系統(tǒng)擴充到超過某一范圍則必然阻塞,再增加資源也緩解不了這個問題。 ?與復制件有關(guān)的主要問題是它們的更新。 ?文件復制的原因 ?通過對每個文件的獨立備份來增加系統(tǒng)的可靠性。 ?堅定性 :如果當某個存儲器崩潰和存儲介質(zhì)損壞時某個文件能保證完好,則說此文件是堅定的。 ?服務(wù)員發(fā)動的方法 。 ?緩存的地點 在一個各自有主存和磁盤的客戶 服務(wù)器系統(tǒng)中,有四個地方可以用來存儲文件或存儲部分文件:服務(wù)器磁盤、服務(wù)器主存、客戶磁盤(如果可用的話)或者客戶主存。 ?性能透明性:當服務(wù)負載在一定范圍內(nèi)變化時,客戶程序可以保持滿意的性能。 ? 存儲設(shè)備不是單一的集中數(shù)據(jù)存儲器。 fix ? Not always possible ~ thirdparty source libraries ? On segmentation fault: ? Send UDP packet to master from signal handler ? Include sequence number of record being processed ? If master sees two failures for same record: ? Next worker is told to skip the record ? Compression of intermediate data ? Combiner ? “Combiner” functions can run on same machine as a mapper ? Causes a minireduce phase to occur before the real reduce phase, to save bandwidth ? Local execution for debugging/testing ? Userdefined counters Other Refinements Hadoop MapReduce Architecture J o b T r a c k e rM a p R e d u c e j o b s u b m i t t e d b y c l i e n t c o m p u t e rM a s t e r n o d eT a s k T r a c k e rS l a v e n o d eT a s k i n s t a n c eT a s k T r a c k e rS l a v e n o d eT a s k i n s t a n c eT a s k T r a c k e rS l a v e n o d eT a s k i n s t a n c eMaster/Worker Model Loadbalancing by polling mechanism History of Hadoop ? 2022 Initial versions of what is now Hadoop Distributed File System and MapReduce implemented by Doug Cutting amp。云計算關(guān)鍵技術(shù) 鄭偉平 2022726 Page 2 虛擬化技術(shù)內(nèi)容 ? 1 虛擬化定義 ? 2 虛擬化分類 ? 3 全虛擬化與半虛擬化 ? 4虛擬化實現(xiàn) ? 5虛擬化技術(shù)比較與選型 ? 6虛擬化帶來的好處 ? 7虛擬化帶來的問題 ? 8虛擬化適用范圍 ? 9服務(wù)器虛擬化過程 ? MapReduce MapReduce是一個簡單易用的并行編程模型,它極大簡化了大規(guī)模數(shù)據(jù)處理問題的實現(xiàn) Page 3 User App MapReduce Distributed File Systems (GFS) Divide and Conquer “Work” w1 w2 w3 r1 r2 r3 “Result” “worker” “worker” “worker” Partition Combine Parallelization Challenges ? How do we assign work units to workers? ? What if we have more work units than workers? ? What if workers need to share partial results? ? How do we aggregate partial results? ? How do we know all the work