1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      【大數(shù)據(jù)之Hbase】-創(chuàng)新互聯(lián)

      大數(shù)據(jù)之Hbase
      在上篇主要分析了Hadoop的有關(guān)概念,詳見大數(shù)據(jù)系列
      這節(jié)主要來看下Hbase數(shù)據(jù)庫(kù)。
      先來看官網(wǎng)給出的概念:

      目前累計(jì)服務(wù)客戶千余家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。成都創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

      HBase(Hadoop Database):Apache HBase? is the Hadoop database, a distributed, scalable, big data store.

      主要由以下幾點(diǎn):
      1.the Hadoop database:HBase是基于Hadoop的數(shù)據(jù)庫(kù),所以跟Hadoop是有強(qiáng)依賴關(guān)系的,而實(shí)際上,我們的HBase底層是要依賴于HDFS的,我們HBase上的數(shù)據(jù),其實(shí)就是存放在HDFS上。
      2.a distributed:是一個(gè)分布式的,HBase結(jié)構(gòu)也是主從結(jié)構(gòu),類似于HDFS的主從結(jié)構(gòu),主從結(jié)構(gòu)有利于對(duì)表、對(duì)數(shù)據(jù)進(jìn)行處理。
      3.scalable:可擴(kuò)展的,自然而然,HBase的數(shù)據(jù)存儲(chǔ)在HDFS上,HDFS可以部署在廉價(jià)的機(jī)器上,而且理論上可以無限擴(kuò)展。所以,HBase其實(shí)是具有這個(gè)特點(diǎn)的。
      4.big data store:大數(shù)據(jù)量的存儲(chǔ),說明HBase可以存儲(chǔ)很大的數(shù)據(jù)量,一張表可以達(dá)到數(shù)百萬列,數(shù)十億行,而傳統(tǒng)數(shù)據(jù)庫(kù),在達(dá)到上百萬行的時(shí)候,就要考慮進(jìn)行讀寫分離、分庫(kù)分表等操作。
      Hbase產(chǎn)生的背景
      假如,要開發(fā)一個(gè)網(wǎng)站,開發(fā)完成后要將這個(gè)項(xiàng)目打包到服務(wù)器上去執(zhí)行,而在網(wǎng)站運(yùn)行之前,應(yīng)該先在服務(wù)器上裝好數(shù)據(jù)庫(kù)如:MySQL、Redis、Oracle等等。
      我們的網(wǎng)站程序里面,我們的數(shù)據(jù)是以表的形式來存儲(chǔ)和讀取的,而這些表,就是我們數(shù)據(jù)類型里面的結(jié)構(gòu)化數(shù)據(jù)。如果沒有數(shù)據(jù)庫(kù),其實(shí)網(wǎng)站程序相關(guān)的數(shù)據(jù)也是可以存放在服務(wù)器系統(tǒng)上的,只是,會(huì)發(fā)現(xiàn)特別麻煩,如果直接存到Linux,你可以通過簡(jiǎn)單的Select語句檢索出你想要的數(shù)據(jù)嗎?你能簡(jiǎn)單地用一句Update就修改里面相關(guān)條件的內(nèi)容嗎?你能夠通過簡(jiǎn)單的聚合函數(shù)就做一些簡(jiǎn)單的分析嗎?明顯是不太容易操作的,當(dāng)然也還有很多原因,只是簡(jiǎn)單地列舉一下。
      現(xiàn)在回到我們的大數(shù)據(jù)相關(guān)知識(shí)。到目前為止,我們已經(jīng)學(xué)過了HDFS,是一個(gè)分布式文件系統(tǒng),我們的數(shù)據(jù)可以存放到我們的HDFS上。但是,如果我們要對(duì)數(shù)據(jù)進(jìn)行一些快速查詢、聚合分析等操作的時(shí)候,也一樣是非常困難的,這點(diǎn)跟我們上面分析的場(chǎng)景相類似。
      HDFS與Hbase場(chǎng)景分析
      1.HDFS不適合大量小文件的存儲(chǔ)。因?yàn)樗鎯?chǔ)的元數(shù)據(jù)是在Namenode所在的機(jī)器內(nèi)存中的,HDFS中的每個(gè)文件、目錄、數(shù)據(jù)塊占用150個(gè)字節(jié)左右,
      如果存放1百萬的文件則至少需要消耗300MB內(nèi)存,當(dāng)然如果是幾十個(gè)億,例如10億,這個(gè)時(shí)候的內(nèi)存就顯得非常局限了,當(dāng)然,這也是相對(duì)的,如果是幾萬個(gè)小文件,那當(dāng)然就沒有問題。
      2.適合用于高吞吐量的訪問,而不適合低延遲訪問,它做不到低延遲訪問,操作時(shí)不是簡(jiǎn)單地在本地就可以實(shí)現(xiàn),是需要聯(lián)系多臺(tái)服務(wù)器的,索引等等也是一個(gè)限制。所以,**為了提高HDFS的性能,這里邊就有了一個(gè)原則:盡可能地去移動(dòng)計(jì)算而不是移動(dòng)數(shù)據(jù)。**在吞吐量很大的時(shí)候,計(jì)算就相對(duì)更小,此時(shí)當(dāng)然是移動(dòng)計(jì)算程序去其他節(jié)點(diǎn)會(huì)更節(jié)省資源。
      3.適合流式數(shù)據(jù)訪問,一個(gè)文件只能被一個(gè)用戶寫,不支持隨機(jī)寫入,只能在文件末尾append進(jìn)去,或者直接覆蓋掉。此外,用戶最好就是在訪問的時(shí)候,盡量減少斷開連接、建立連接的操作,因?yàn)榇瞬僮饕彩切枰男阅艿模詈镁褪亲龅揭淮谓⒘诉B接,一直訪問、操作就好。流式數(shù)據(jù)訪問,可以理解為就是一直都在訪問,即一直都連接。
      4.適合用于一次寫入,多次讀取,而且不適應(yīng)用于低時(shí)間的訪問。在進(jìn)行寫文件的時(shí)候需要涉及到多臺(tái)服務(wù)器,那就存放RPC、數(shù)據(jù)傳輸?shù)炔僮?,非常消耗性能,所以最好就是存好在HDFS了就最好不要亂動(dòng)了。而且有一點(diǎn),HDFS的讀取是按順序讀取的,不利于檢索。
      Hbase場(chǎng)景分析
      1、有利于處理各種類型的數(shù)據(jù),如結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化或者非半結(jié)構(gòu)數(shù)據(jù)。
      2、HBase是以稀疏的結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的,數(shù)據(jù)是按列進(jìn)行存儲(chǔ)的,如果某一行的這一列沒有數(shù)據(jù),則不占用空間。
      3、HBase支持多版本存儲(chǔ),默認(rèn)是只存儲(chǔ)一個(gè)版本,但是可以設(shè)置存多個(gè)版本,這個(gè)版本的索引是時(shí)間戳。
      4、HBase支持隨機(jī)讀寫,而HDFS只支持追加或者覆蓋。

      到目前為止,簡(jiǎn)單總結(jié)一下HBase的產(chǎn)生背景,HDFS與HBase都是用來存儲(chǔ)數(shù)據(jù)的,而HBase的出現(xiàn),主要也是為了做一些HDFS做不到的。


      Hbase的存儲(chǔ)結(jié)構(gòu)
      先來看一下百度百科里面的一句話:

      HBase – Hadoop Database,是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。
      ——來自百度百科

      高可靠性、高性能、可伸縮我們此處不做敘述,主要開一下面向列這一特性。傳統(tǒng)的數(shù)據(jù)庫(kù),比如說MySQL、Oracle,這些數(shù)據(jù)庫(kù)都是按行存儲(chǔ)的,而這里的HBase,是按列進(jìn)行存儲(chǔ)的。
      在這里插入圖片描述
      行存儲(chǔ)是數(shù)據(jù)按行的方式存儲(chǔ)在底層文件中,通常,每一行會(huì)自動(dòng)的分配一個(gè)固定的空間。假如在上圖:數(shù)據(jù)庫(kù)里沒有存儲(chǔ)我的Phone和Address,只存儲(chǔ)了我的ID和Name,那么沒存的這兩個(gè)字段Phone和Address也在占用空間。如果是Hbase的話,對(duì)于沒有的信息,他是可以為空的,并且不占用空間。
      優(yōu)點(diǎn)是:利于增加,修改,整行記錄等操作,也有利于整行數(shù)據(jù)的讀取。
      缺點(diǎn)是:?jiǎn)瘟胁樵儠r(shí),會(huì)讀取一些不必要的數(shù)據(jù),例如:查找出數(shù)據(jù)庫(kù)里面所有人的名字,則需要將所有數(shù)據(jù)都讀取出來,然后將名字這一列檢索出來。
      再來看列存儲(chǔ):
      在這里插入圖片描述
      數(shù)據(jù)以列為單位,列是按照文件夾這樣的方式存儲(chǔ)的,所以此時(shí)如果要在讀取Name這一列,就可以直接讀取Name之一列就行,無關(guān)的數(shù)據(jù)不用讀就行了。如果Address某一個(gè)人的信息不知道,就可以把它為空,并且也不占用空間。
      列存儲(chǔ)的優(yōu)缺點(diǎn):
      優(yōu)點(diǎn):有利于面向單列數(shù)據(jù)的讀取、統(tǒng)計(jì)等操作。
      缺點(diǎn):整行讀取時(shí),可能需要多次I/O操作。

      Hbase表的結(jié)構(gòu)
      HBase 邏輯結(jié)構(gòu)
      在這里插入圖片描述
      HBase 物理結(jié)構(gòu)
      在這里插入圖片描述

      數(shù)據(jù)模型:

      1. Name Space
        命名空間,類似于關(guān)系型數(shù)據(jù)庫(kù)的 DatabBase 概念,每個(gè)命名空間下有多個(gè)表。HBase 有兩個(gè)自帶的命名空間,分別是 hbase 和 default,hbase 中存放的是 HBase 內(nèi)置的表,default 表是用戶默認(rèn)使用的命名空間。

      2. Region
        類似于關(guān)系型數(shù)據(jù)庫(kù)的表概念。不同的是,HBase 定義表時(shí)只需要聲明列族即可,不需要聲明具體的列。這意味著,往 HBase 寫入數(shù)據(jù)時(shí),字段可以動(dòng)態(tài)、按需指定。因此,和關(guān)系型數(shù)據(jù)庫(kù)相比,HBase 能夠輕松應(yīng)對(duì)字段變更的場(chǎng)景。

      3. Row
        HBase 表中的每行數(shù)據(jù)都由一個(gè) RowKey 和多個(gè) Column(列)組成,數(shù)據(jù)是按照 RowKey 的字典順序存儲(chǔ)的,并且查詢數(shù)據(jù)時(shí)只能根據(jù) RowKey 進(jìn)行檢索,所以 RowKey 的設(shè)計(jì)十分重要。

      4. Column
        HBase 中的每個(gè)列都由 Column Family (列族)和 Column Qualifier(列限定符)進(jìn)行限定,例如 info:name,info:age。建表時(shí),只需指明列族,而列限定符無需預(yù)先定義。

      5. Time Stamp
        用于標(biāo)識(shí)數(shù)據(jù)的不同版本(version),每條數(shù)據(jù)寫入時(shí),如果不指定時(shí)間戳,系統(tǒng)會(huì)自動(dòng)為其加上該字段,其值為寫入 HBase 的時(shí)間。

      6. Cell
        由{rowkey, column Family:column Qualifier, time Stamp}唯一確定的單元。cell 中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存儲(chǔ)。

      開始演示:
      需要注意,開啟Hbase需要提前搭建好Hadoop環(huán)境和Zookeeper集群(因?yàn)镠base是利用zookeeper來管理的,后續(xù)會(huì)具體介紹)。關(guān)于Hbase集群,Hadoop的搭建以及Zookeeper的環(huán)境具體請(qǐng)看:
      Hbase搭建
      Hadoop搭建
      Zookeeper搭建

      如圖,確保三個(gè)節(jié)點(diǎn)集群服務(wù)都能正常啟動(dòng):
      在這里插入圖片描述

      在這里插入圖片描述
      在這里插入圖片描述

      3臺(tái)服務(wù)都要分別去啟動(dòng)zookeeper,可以看出zookeeper有一個(gè)功能,master節(jié)點(diǎn)的zookeeper的Mode為:follower;slave1節(jié)點(diǎn)的zookeeper的Mode為:leader;slave2節(jié)點(diǎn)的zookeeper的Mode為:follower;這是zookeeper的選舉機(jī)制,選舉有特定的算法。


      然后在master節(jié)點(diǎn)開啟Hbase集群:
      start-hbase.sh
      hbase shell
      在這里插入圖片描述
      list命令就理解為Mysql中的show databases;
      在這里意為:查看所有的表
      在這里插入圖片描述
      常用的一些命令:
      list :查看所有的表
      create ‘表名’,‘列族名’ :建表
      put ‘表名’,‘Rowkey’,‘列族名:列名’,‘值’ :添加數(shù)據(jù),修改數(shù)據(jù)(Hbase中修改的語法就是直接put他會(huì)覆蓋上一條數(shù)據(jù))
      deleteadd ‘表名’,‘Rowkey’:刪除一行數(shù)據(jù)
      scan ‘表名’:掃描表的數(shù)據(jù)
      get ‘表名’,‘Rowkey’:查看相關(guān)的Rowkey的數(shù)據(jù)
      desc ‘表名’:查看建表的詳細(xì)結(jié)構(gòu)
      當(dāng)然命令不止這些,后續(xù)還有一些過濾的命令,會(huì)慢慢介紹~~

      hbase(main):002:0>create 't2','bi'
      0 row(s) in 2.5620 seconds
      
      =>Hbase::Table - t2
      hbase(main):003:0>list
      TABLE                                                                                                                                                                                  
      t01_yuan                                                                                                                                                                               
      t02_student                                                                                                                                                                            
      t04                                                                                                                                                                                    
      t1                                                                                                                                                                                     
      t2                                                                                                                                                                                     
      5 row(s) in 0.0340 seconds
      
      =>["t01_yuan", "t02_student", "t04", "t1", "t2"]
      hbase(main):004:0>put 't2','1001','bi:a0','yhh'
      0 row(s) in 0.2120 seconds
      
      hbase(main):005:0>put 't2','1002','bi:a1','24'
      0 row(s) in 0.0130 seconds
      
      hbase(main):006:0>put 't2','1003','bi:a2','male'
      0 row(s) in 0.0150 seconds
      
      hbase(main):007:0>scan 't2'
      ROW                                            COLUMN+CELL                                                                                                                             
       1001                                          column=bi:a0, timestamp=1671084250140, value=yhh                                                                                        
       1002                                          column=bi:a1, timestamp=1671084265430, value=24                                                                                         
       1003                                          column=bi:a2, timestamp=1671084274616, value=male                                                                                       
      3 row(s) in 0.0460 seconds
      
      hbase(main):008:0>desc 't2'
      Table t2 is ENABLED                                                                                                                                                                    
      t2                                                                                                                                                                                     
      COLUMN FAMILIES DESCRIPTION                                                                                                                                                            
      {NAME =>'bi', BLOOMFILTER =>'ROW', VERSIONS =>'1', IN_MEMORY =>'false', KEEP_DELETED_CELLS =>'FALSE', DATA_BLOCK_ENCODING =>'NONE', TTL =>'FOREVER', COMPRESSION =>'NONE', MIN_
      VERSIONS =>'0', BLOCKCACHE =>'true', BLOCKSIZE =>'65536', REPLICATION_SCOPE =>'0'}                                                                                                 
      1 row(s) in 0.0630 seconds
      
      hbase(main):009:0>put 't2','1001','bi:a1','wu2'
      0 row(s) in 0.0150 seconds
      
      hbase(main):010:0>put 't2','1001','bi:a2','130123'
      0 row(s) in 0.0120 seconds
      
      hbase(main):011:0>get 't2','1001'
      COLUMN                                         CELL                                                                                                                                    
       bi:a0                                         timestamp=1671084250140, value=yhh                                                                                                      
       bi:a1                                         timestamp=1671084458981, value=wu2                                                                                                      
       bi:a2                                         timestamp=1671084466096, value=130123                                                                                                   
      3 row(s) in 0.0310 seconds
      

      提示:在添加數(shù)據(jù)的時(shí)候,也就是put時(shí),列族后邊的列名是動(dòng)態(tài)指定的,也就是說在建表時(shí),只需聲明出列族就行。
      例如上圖中的a1,a2…

      Rowkey的設(shè)計(jì)
      長(zhǎng)度原則,唯一原則,排序原則,散列原則
      如圖:
      在這里插入圖片描述
      當(dāng)用Hbase插入數(shù)據(jù)的時(shí)候,順序他會(huì)自己根據(jù)指定的算法去排序。

      而這個(gè)時(shí)候來看Mysql,他根本不會(huì)給你排序,就直接候補(bǔ):
      在這里插入圖片描述
      Rowkey的設(shè)計(jì)關(guān)鍵是非常有必要的。比如現(xiàn)在有這么一個(gè)案例:

      第1個(gè)模板:證件更新。
      第2個(gè)模板:新卡提醒。
      就拿以上兩個(gè)模板來說,怎樣去合理的設(shè)計(jì)Rowkey呢,當(dāng)然這得需要根據(jù)具體的業(yè)務(wù)場(chǎng)景來定。
      比如,當(dāng)我想查第1個(gè)模板的時(shí)候,我就得想,他叫證件更新,那么我得需要拿到證件號(hào)然后在拼接上模板的名字:Rowkey=證件號(hào)+模板名字,就是:1301231。
      當(dāng)我想查第2個(gè)模板的時(shí)候,我就得想,他叫新卡提醒,那么我得需要拿到證件號(hào)然后在拿上它的卡號(hào)最后在拼接上模板的名字:Rowkey=證件號(hào)+卡號(hào)+模板名字,就是:1301232432。
      hbase(main):017:0>scan 't2'
      ROW                                            COLUMN+CELL                                                                                                                             
       1001                                          column=bi:a0, timestamp=1671084250140, value=yhh                                                                                        
       1001                                          column=bi:a1, timestamp=1671084458981, value=wu2                                                                                        
       1001                                          column=bi:a2, timestamp=1671084466096, value=130123                                                                                     
       1002                                          column=bi:a1, timestamp=1671084265430, value=24                                                                                         
       1003                                          column=bi:a2, timestamp=1671084274616, value=male                                                                                       
       1301231                                       column=bi:a0, timestamp=1671085427440, value=yuan                                                                                       
       1301232                                       column=bi:a1, timestamp=1671085471158, value=yuan12                                                                                     
       1301232432                                    column=bi:a0, timestamp=1671085446523, value=sdsd                                                                                       
      6 row(s) in 0.0330 seconds
      

      這樣我把上圖中的1301231和1301232432都存到了數(shù)據(jù)庫(kù)中。為了區(qū)別下,我又添加了一條1301232,他自己追加到了1301231后邊,并沒有在1301232432下邊。

      這就符合了它的排序原則。

      由于時(shí)間問題,本篇介紹的會(huì)有點(diǎn)倉(cāng)促,不足之處,敬請(qǐng)指出,下期會(huì)繼續(xù)介紹~~~

      你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


      當(dāng)前名稱:【大數(shù)據(jù)之Hbase】-創(chuàng)新互聯(lián)
      網(wǎng)頁(yè)鏈接:http://ef60e0e.cn/article/djieis.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        龙山县| 陇南市| 湛江市| 浠水县| 宜阳县| 南澳县| 蒲江县| 吉林省| 桦甸市| 靖安县| 永城市| 东海县| 桓台县| 金阳县| 临江市| 苍山县| 望谟县| 平利县| 崇左市| 宣化县| 余姚市| 衡阳县| 汝城县| 图片| 丰镇市| 犍为县| 民乐县| 连南| 成安县| 同心县| 醴陵市| 南投市| 安平县| 富民县| 昭通市| 安康市| 莲花县| 吴旗县| 双桥区| 藁城市| 侯马市|