• <fieldset id="2mqau"></fieldset>
    <tbody id="2mqau"><tfoot id="2mqau"></tfoot></tbody>
    <option id="2mqau"><noframes id="2mqau"></noframes></option>
  • <input id="2mqau"></input>
  • 第二周 深圳模具- 搭建 hadoop 大數(shù)據(jù)集群 ,linux , 虛擬機(jī)

    2021-04-20 21:14:23


    深圳模具-搭建 hadoop 大數(shù)據(jù)集群



    ***電腦中要先有如下內(nèi)容:

    image.png

    image.png

    點(diǎn)擊安裝虛擬機(jī)

    image.png


    image.png

    image.png

    輸入16位許可證碼,按 《輸入》

    image.png

    結(jié)束虛擬機(jī)安裝, 接下來(lái)安裝 Centos 操作系統(tǒng)。


    在屏幕上點(diǎn)擊虛擬機(jī)圖標(biāo) :image.png  出現(xiàn)下面的封面


    image.png


    點(diǎn)擊創(chuàng)建新的虛擬機(jī)

    image.png

    按 自定義  , 然后 下一步。

    image.png


    image.png

    image.png

    選擇  Centos 64 bit

    image.png


    image.png


    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    按  完成  以后


    image.png


    image.png

    點(diǎn)擊后, 出現(xiàn)安裝 centos 的界面, 完成后出現(xiàn)圖形界面


    image.png


    選擇 Otehr    ,   輸入  root       hadoop  進(jìn)入系統(tǒng)


    image.png


    至此, 前面的安裝完成, 可以按  終端  進(jìn)入  # 狀態(tài)



    1、準(zhǔn)備linux環(huán)境

              1.1、修改主機(jī)名 # vi /etc/sysconfig/network

                                            HOSTNAME=hsmaster


               1.2、修改ip  

                              第一種方法:通過(guò)圖形界面方式進(jìn)行修改,

                              第二種方法通過(guò)命令進(jìn)行修改:

                                        # vi /etc/sysconfig/network-scripts/ifcfg-eth0

                                            BOOPROTO="static"

                                            IPADDR=192.168.1.119

                                            GATEWAY=192.168.1.1


               1.3、修改主機(jī)名和ip的映射關(guān)系  

                                     # vi /etc/hosts

                                        192.168.1.119 hsmaster

                                        192.168.1.120 hsslave1

                                        192.168.1.121 hsslave2

                                        《如果有 10臺(tái)電腦, 也是這樣配置》


              1.4、關(guān)閉防火墻

                                   # service iptables status

                                       image.png

                                   # service iptables stop

                                      image.png

                                   # chkconfig iptables off

                                      image.png


             1.5、重啟linux

                                   # reboot


    2、安裝jdk

             2.1、上傳jdk文件       to      /bigdata/tools

             2.2、解壓jdk  tar -zxvf jdk-7u79-linux-i586.tar.gz

             2.3、配置java環(huán)境變量

                                   # vi /etc/profile

                                           export JAVA_HOME=/bigdata/tools/jdk1.7.0_79

                                           export PATH=$PATH:$JAVA_HOME/bin


    3、配置ssh免登錄

             1.1、 ssh-keygen -t rsa 一路回車生成密鑰

             1.2、 id_rsa.pub 追加授權(quán)Key  cat ~/.ssh/id_rst.pub >> ~/.ssh/authorized_keys

             1.3、 修改權(quán)限

                       chmod   666  

             1.4、 將公共密鑰復(fù)制到其它節(jié)點(diǎn)

                       還是需要修改權(quán)限 

             1.5、 重啟ssh服務(wù)


             1.6、 檢查配置文件

         

             1.7、 驗(yàn)證ssh免登錄是否成功

                       # cat /etc/ssh/

                      image.png

      

    4、搭建hadoop集群

             4.1、上傳文件

                      窗口下可以拖拽進(jìn)入虛擬機(jī)

             4.2、 解壓hadoop文件

                      tar

             4.3、 配置hadoop-env.sh文件

                      修改絕對(duì)路徑

             4.4、 配置core-site.xml文件


             4.5、 配置hdfs-site.xml文件


             4.6、 配置mapred-site.xml文件

                        

             4.7、 配置yarn-site.xml文件


             4.8、 配置環(huán)境變量


             4.9、 將文件復(fù)制到其它節(jié)點(diǎn)上


            4.10、 進(jìn)行格式操作

                        # hdfs namenode -format

             4.11、 啟動(dòng)hadoop sbin/  ./start-all.sh


             4.12、 驗(yàn)證集群是否啟動(dòng)成功

                            # jps

                                   NameNode

                                   DataNode

                                   NodeManager

                                   ResourceManager

                                   SecondaryNameNode

               4.13、 登錄界面進(jìn)行查看:

                           HDFS管理界面:                                       http://192.168.1.119:50070

                           MR管理界面:                                          htpp://192.168.1.119:8088




    ----------------------------------------------------------------下面是第三周

    深圳模具-正式學(xué)習(xí)使用 hadoop 大數(shù)據(jù)集群


    一、HDFS相關(guān)命令:

           1、查看HDFS下目錄結(jié)構(gòu)及文件   hdfs dfs -ls -R /

           2、創(chuàng)建文件目錄/tmp    hdfs dfs -mkdir /tmp

           3、刪除/tmp目錄   hdfs dfs -rm -r /tmp

           4、復(fù)制當(dāng)前目錄下a.txts到HDFS文件系統(tǒng)   hdfs dfs -put a.txt /inputFile

           5、列出/tmp目錄   hdfs dfs -ls /tmp

           6、查看/inputFile/a.txt文件內(nèi)容   hdfs dfs -cat /inputFile/a.txt

           7、查看HDFS狀態(tài)   hdfs dfsadmin -report


            用這個(gè)命令可以快速定位出哪些節(jié)點(diǎn)down掉了,HDFS的容量以及使用了多少,

            以及每個(gè)節(jié)點(diǎn)的硬盤使用情況。當(dāng)然NameNode有個(gè)http頁(yè)面也可以查詢,

            但是這個(gè)命令的輸出更適合我們的腳本監(jiān)控dfs的使用狀況。


            下面是關(guān)于 YARN 的操作:      

             yarn.nodemanager.aux-service

                    spark_shuffle

                    mapreduce_shuffle    要引入對(duì)應(yīng)的架包  

                    yarn.nodemanager.aux-services.mapreduce_shuffle.class  

                                    采用 FIFO的方式, 這個(gè)方式并不好 , 好的方式是 公平調(diào)度-Fair .

                    org.apache.hadoop.mapred.ShuffleHandler


                    yarn.nodemanager.aux-services.spark_shuffle.class

                    org.apache.spark.network.yarn.YarnShuffleServic

                    FairScheduler.xml

                    yarn.scheduler.fair.user-as-default-queue false true

                    yarn.scheduler.fair.preemption false true

                   yarn.resourcemanager.scheduler

                   org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

                   spark.shuffle.service.port 7337



    第四周   

                  Hbase 。

                  Hbase  -> Google bigtable 開源實(shí)現(xiàn)   ---2008年---->  apache hadoop 下面的項(xiàng)目   

                                   采用的公司 :    Facebook           Intel       yahoo     baidu     alibaba      tencent   360  等等   nosql 數(shù)據(jù)庫(kù)

                                   

                               image.png


          image.png


                    SQL (Structured Query Language) 數(shù)據(jù)庫(kù),指關(guān)系型數(shù)據(jù)庫(kù)。

                                                                           主要代表:SQL Server,Oracle,MySQL(開源),PostgreSQL(開源)。

              NoSQL(Not Only SQL)泛指非關(guān)系型數(shù)據(jù)庫(kù)。

                                                                           主要代表:MongoDB,Redis,CouchDB。 supersech      hbase , kylin ,  chiohouse   phesto


                   關(guān)系型數(shù)據(jù)庫(kù)的特點(diǎn):    面向行的,    Nosql 是面向列的。  

                   高并發(fā)狀態(tài)下:      分庫(kù)分表    讀寫分離   帶來(lái)數(shù)據(jù)一致性問題 ,海量數(shù)據(jù)實(shí)現(xiàn)出來(lái)很復(fù)雜,后期遷移也很復(fù)雜。

                   高可用,可靠性,可伸縮性的措施: 主備 、 主從 、 多主。   本身的可擴(kuò)展性很差。   增加節(jié)點(diǎn)或者宕機(jī)要做遷移。  

                   Hbase 首先是一個(gè)大表。


    1.關(guān)系型數(shù)據(jù)庫(kù)理論 - ACID

                ACID,是指數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)在寫入或更新資料的過(guò)程中,為保證事務(wù)(transaction)是正確可靠的,

                          所必須具備的四個(gè)特性:原子性(atomicity,或稱不可分割性)、一致性(consistency)、

                          隔離性(isolation,又稱獨(dú)立性)、持久性(durability)。

                          A – Atomicity – 原子性

                                                 一個(gè)事務(wù)(transaction)中的所有操作,要么全部完成,要么全部不完成,不會(huì)結(jié)束在中間某個(gè)環(huán)節(jié)。

                                                 事務(wù)在執(zhí)行過(guò)程中發(fā)生錯(cuò)誤,會(huì)被回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個(gè)事務(wù)從來(lái)沒有被執(zhí)行過(guò)一樣。

                          C – Consistency – 一致性

                                                 在事務(wù)開始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫(kù)的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預(yù)設(shè)規(guī)則,

                                                  這包含資料的精確度、串聯(lián)性以及后續(xù)數(shù)據(jù)庫(kù)可以自發(fā)性地完成預(yù)定的工作。

                          I – Isolation – 隔離性

                                                 數(shù)據(jù)庫(kù)允許多個(gè)并發(fā)事務(wù)同時(shí)對(duì)其數(shù)據(jù)進(jìn)行讀寫和修改的能力,隔離性可以防止多個(gè)事務(wù)并發(fā)執(zhí)行時(shí)

                                                 由于交叉執(zhí)行而導(dǎo)致數(shù)據(jù)的不一致。事務(wù)隔離分為不同級(jí)別,包括讀未提交(Read uncommitted)、

                                                 讀提交(read committed)、可重復(fù)讀(repeatable read)和串行化(Serializable)。

                          D – Durability – 持久性

                                                 事務(wù)處理結(jié)束后,對(duì)數(shù)據(jù)的修改就是永久的,即便系統(tǒng)故障也不會(huì)丟失。

           關(guān)系型數(shù)據(jù)庫(kù)嚴(yán)格遵循ACID理論。

           但當(dāng)數(shù)據(jù)庫(kù)要開始滿足橫向擴(kuò)展、高可用、模式自由等需求時(shí),需要對(duì)ACID理論進(jìn)行取舍,不能嚴(yán)格遵循ACID。

           以CAP理論和BASE理論為基礎(chǔ)的NoSQL數(shù)據(jù)庫(kù)開始出現(xiàn)。

     

    2.分布式系統(tǒng)理論

     

    2.1 分布式系統(tǒng)介紹

     

    分布式系統(tǒng)的核心理念是讓多臺(tái)服務(wù)器協(xié)同工作,完成單臺(tái)服務(wù)器無(wú)法處理的任務(wù),尤其是高并發(fā)或者大數(shù)據(jù)量的任務(wù)。分布式是NoSQL數(shù)據(jù)庫(kù)的必要條件。

     

    分布式系統(tǒng)由獨(dú)立的服務(wù)器通過(guò)網(wǎng)絡(luò)松散耦合組成的。每個(gè)服務(wù)器都是一臺(tái)獨(dú)立的PC機(jī),服務(wù)器之間通過(guò)內(nèi)部網(wǎng)絡(luò)連接,內(nèi)部網(wǎng)絡(luò)速度一般比較快。因?yàn)榉植际郊豪锏姆?wù)器是通過(guò)內(nèi)部網(wǎng)絡(luò)松散耦合,各節(jié)點(diǎn)之間的通訊有一定的網(wǎng)絡(luò)開銷,因此分布式系統(tǒng)在設(shè)計(jì)上盡可能減少節(jié)點(diǎn)間通訊。此外,因?yàn)榫W(wǎng)絡(luò)傳輸瓶頸,單個(gè)節(jié)點(diǎn)的性能高低對(duì)分布式系統(tǒng)整體性能影響不大。比如,對(duì)分布式應(yīng)用來(lái)說(shuō),采用不同編程語(yǔ)言開發(fā)帶來(lái)的單個(gè)應(yīng)用服務(wù)的性能差異,跟網(wǎng)絡(luò)開銷比起來(lái)都可以忽略不計(jì)。

     

    因此,分布式系統(tǒng)每個(gè)節(jié)點(diǎn)一般不采用高性能的服務(wù)器,而是使用性能相對(duì)一般的普通PC服務(wù)器。提升分布式系統(tǒng)的整體性能是通過(guò)橫向擴(kuò)展(增加更多的服務(wù)器),而不是縱向擴(kuò)展(提升每個(gè)節(jié)點(diǎn)的服務(wù)器性能)實(shí)現(xiàn)。

     

    分布式系統(tǒng)最大的特點(diǎn)是可擴(kuò)展性,它能夠適應(yīng)需求變化而擴(kuò)展。企業(yè)級(jí)應(yīng)用需求經(jīng)常隨時(shí)間而不斷變化,這也對(duì)企業(yè)級(jí)應(yīng)用平臺(tái)提出了很高的要求。企業(yè)級(jí)應(yīng)用平臺(tái)必須要能適應(yīng)需求的變化,即具有可擴(kuò)展性。比如移動(dòng)互聯(lián)網(wǎng)2C應(yīng)用,隨著互聯(lián)網(wǎng)企業(yè)的業(yè)務(wù)規(guī)模不斷增大,業(yè)務(wù)變得越來(lái)越復(fù)雜,并發(fā)用戶請(qǐng)求越來(lái)越多,要處理的數(shù)據(jù)也越來(lái)越多,這個(gè)時(shí)候企業(yè)級(jí)應(yīng)用平臺(tái)必須能夠適應(yīng)這些變化,支持高并發(fā)訪問和海量數(shù)據(jù)處理。分布式系統(tǒng)有良好的可擴(kuò)展性,可以通過(guò)增加服務(wù)器數(shù)量來(lái)增強(qiáng)分布式系統(tǒng)整體的處理能力,以應(yīng)對(duì)企業(yè)的業(yè)務(wù)增長(zhǎng)帶來(lái)的計(jì)算需求增加。

     

    2.2 分布式存儲(chǔ)的問題 – CAP理論

     

    如果我們期待實(shí)現(xiàn)一套嚴(yán)格滿足ACID的分布式事務(wù),很可能出現(xiàn)的情況就是系統(tǒng)的可用性和嚴(yán)格一致性發(fā)生沖突。在可用性和一致性之間永遠(yuǎn)無(wú)法存在一個(gè)兩全其美的方案。由于NoSQL的基本需求就是支持分布式存儲(chǔ),嚴(yán)格一致性與可用性需要互相取舍,由此延伸出了CAP理論來(lái)定義分布式存儲(chǔ)遇到的問題。

     

    CAP理論告訴我們:一個(gè)分布式系統(tǒng)不可能同時(shí)滿足一致性(C:Consistency)、可用性(A:Availability)、分區(qū)容錯(cuò)性(P:Partitiontolerance)這三個(gè)基本需求,并且最多只能滿足其中的兩項(xiàng)。

     

    對(duì)于一個(gè)分布式系統(tǒng)來(lái)說(shuō),分區(qū)容錯(cuò)是基本需求,否則不能稱之為分布式系統(tǒng)。因此架構(gòu)師需要在C和A之間尋求平衡。

     


    HBase 的物理存儲(chǔ)

    HBase 表中的所有行都是按照行鍵的字典序排列的。

    因?yàn)橐粡埍碇邪男械臄?shù)量非常多,有時(shí)候會(huì)高達(dá)幾億行,所以需要分布存儲(chǔ)到多臺(tái)服務(wù)器上。

    因此,當(dāng)一張表的行太多的時(shí)候,HBase 就會(huì)根據(jù)行鍵的值對(duì)表中的行進(jìn)行分區(qū),每個(gè)行區(qū)間構(gòu)成一個(gè)“分區(qū)(Region)”,

    包含了位于某個(gè)值域區(qū)間內(nèi)的所有數(shù)據(jù),如圖 1 所示。

    HBase的Region存儲(chǔ)模式圖

                       圖 1  HBase的Region存儲(chǔ)模式圖




    Region 是按大小分割的,每個(gè)表一開始只有二個(gè) Region,隨著數(shù)據(jù)不斷插入到表中,Region 不斷增大,

    當(dāng)增大到一個(gè)閾值的時(shí)候,Region 就會(huì)等分為兩個(gè)新的 Region。

    當(dāng)表中的行不斷增多時(shí),就會(huì)有越來(lái)越多的 Region,如圖 2 所示。



     HBase的Region分裂示意
                                       圖 2  HBase的Region分裂示意


    Region 是 HBase 中數(shù)據(jù)分發(fā)和負(fù)載均衡的最小單元,默認(rèn)大小是 100MB 到 200MB。

    不同的 Region 可以分布在不同的 Region Server 上,但一個(gè) Region 不會(huì)拆分到多個(gè) Region Server 上。

    每個(gè) Region Server 負(fù)責(zé)管理一個(gè) Region 集合。

    如圖 3 所示。



    HBase的Region分布模式
                                                                    圖 3  HBase的Region分布模式



    Region 是 HBase 在 Region Server 上數(shù)據(jù)分發(fā)的最小單元,但并不是存儲(chǔ)的最小單元。

    事實(shí)上,每個(gè) Region 由一個(gè)或者多個(gè) Store 組成,每個(gè) Store 保存一個(gè)列族的數(shù)據(jù)。

    每個(gè) Store 又由一個(gè) memStore 和 0 至多個(gè) Store File 組成,如圖 4 所示。

    Store File 以 HFile 格式保存在 HDFS 上。


    HBase的Region存儲(chǔ)模式
                                                                           圖 4  HBase的Region存儲(chǔ)模式

    HBase 的邏輯架構(gòu)

    在分布式的生產(chǎn)環(huán)境中,HBase 需要運(yùn)行在 HDFS 之上,以 HDFS 作為其基礎(chǔ)的存儲(chǔ)設(shè)施。

    HBase 的上層是訪問數(shù)據(jù)的 Java API 層,供應(yīng)用訪問存儲(chǔ)在 HBase 中的數(shù)據(jù)。

    HBase 的集群主要由 Master、Region Server 和 Zookeeper 組成,

    具體模塊如圖 5 所示。

    HBase的系統(tǒng)架構(gòu)

                                                                     圖 5  HBase的系統(tǒng)架構(gòu)



    1)Master

    Master 主要負(fù)責(zé)表和 Region 的管理工作。

    表的管理工作主要是負(fù)責(zé)完成增加表、刪除表、修改表和查詢表等操作。

    Region 的管理工作更復(fù)雜一些,Master 需要負(fù)責(zé)分配 Region 給 Region Server,協(xié)調(diào)多個(gè) Region Server,檢測(cè)各個(gè) Region Server 的狀態(tài),并平衡 Region Server 之間的負(fù)載。

    當(dāng) Region 分裂或合并之后,Master 負(fù)責(zé)重新調(diào)整 Region 的布局。如果某個(gè) Region Server 發(fā)生故障,Master 需要負(fù)責(zé)把故障 Region Server 上的 Region 遷移到其他 Region Server 上。

    HBase 允許多個(gè) Master 結(jié)點(diǎn)共存,但是這需要 Zookeeper 進(jìn)行協(xié)調(diào)。當(dāng)多個(gè) Master 結(jié)點(diǎn)共存時(shí),只有一個(gè) Master 是提供服務(wù)的,其他的 Master 結(jié)點(diǎn)處于待命的狀態(tài)。

    當(dāng)正在工作的 Master 結(jié)點(diǎn)宕機(jī)時(shí),其他的 Master 則會(huì)接管 HBase 的集群。



    2)RegionServer

    HBase 有許多個(gè) Region Server,每個(gè) Region Server 又包含多個(gè) Region。Region Server 是 HBase 最核心的模塊,負(fù)責(zé)維護(hù) Master 分配給它的 Region 集合,并處理對(duì)這些 Region 的讀寫操作。

    Client 直接與 Region Server 連接,并經(jīng)過(guò)通信獲取 HBase 中的數(shù)據(jù)。

    HBase 釆用 HDFS 作為底層存儲(chǔ)文件系統(tǒng),Region Server 需要向 HDFS 寫入數(shù)據(jù),并利用 HDFS 提供可靠穩(wěn)定的數(shù)據(jù)存儲(chǔ)。

    Region Server 并不需要提供數(shù)據(jù)復(fù)制和維護(hù)數(shù)據(jù)副本的功能。


    3)Zookeeper

    Zookeeper 的作用對(duì) HBase 很重要。


    首先,Zookeeper 是 HBase Master 的高可用性(High Available,HA)解決方案。

    也就是說(shuō),Zookeeper 保證了至少有一個(gè) HBase Master 處于運(yùn)行狀態(tài)。

    Zookeeper 同時(shí)負(fù)責(zé) Region 和 Region Server 的注冊(cè)。

    HBase 集群的 Master 是整個(gè)集群的管理者,它必須知道每個(gè) Region Server 的狀態(tài)。

    HBase 就是使用 Zookeeper 來(lái)管理 Region Server 狀態(tài)的。

    每個(gè) Region Server 都向 Zookeeper 注冊(cè),由 Zookeeper 實(shí)時(shí)監(jiān)控每個(gè) Region Server 的狀態(tài),并通知給 Master。


    這樣,Master 就可以通過(guò) Zookeeper 隨時(shí)感知各個(gè) Region Server 的工作狀態(tài)。


    需要搭建 ZooKepper 集群 , 采取奇數(shù)作為基礎(chǔ), 要不斷選取出唯一的領(lǐng)導(dǎo)者 。


    然后在搭建 Hbase 集群。



    image.png

    image.png



    Hlog = Mysql 中的 bingLog

    image.png



    Hbase 邏輯架構(gòu)

    image.png


    image.png



    安裝 Hbase


    1、下載軟件從   hbase.apache.com   

    2、上傳到 \bigdata\tools

    3、tar -zxvf hbase-1.2.3tar.gz

    4、cd /bigdata/tools/hbase1.2.3/config

    5、vi hbase-env.sh

          export ...


    6、vi  hbase-site.xml



    image.png

    image.png

    image.png


    image.png

    我們上課說(shuō)的:    start-hbase.sh

                  查看:     jsp                         或者      http://192.168.1.119:16030


                  安裝一個(gè)插件 Phoenix , 就可以用 mysql 數(shù)據(jù)庫(kù)的命令看了   , 等于是一個(gè) shell .

                  API可以在 Java后端做軟件查看 。

                  

               

    第四周, 盧老師筆記--------------------------------------------------------------------------------------------------


    HBase 是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng)。

    利用PC搭建大規(guī)模的結(jié)構(gòu)化存儲(chǔ)集群。


    HBase -> Google Bigtable開源實(shí)現(xiàn)。GFS <- HDFS 2006 powerset jim

    2008  Apache Hadoop 


    Facebook

    Intel

    Yahoo

    baidu

    alibaba

    tencent

    360


    回顧一下傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)

    1、有事務(wù)的保障 ACID 原子性、一治性、隔離性、持久性

    2、豐富的數(shù)據(jù)類型和sql操作

    3、嚴(yán)格的數(shù)據(jù)類型,及行式存儲(chǔ)


    關(guān)系型數(shù)據(jù)庫(kù)在高并發(fā)、大數(shù)據(jù)應(yīng)對(duì)方式:

    高并發(fā):

    措施:分庫(kù)分表 、讀寫分離

    帶來(lái)數(shù)據(jù)一致性問題

    海量數(shù)據(jù):

    措施:分庫(kù)分表

    實(shí)現(xiàn)復(fù)雜,后期遷移復(fù)雜

    路由自定義

    高可用、可靠、可伸縮、

    措施:主備、主從、多主

    本身擴(kuò)展性差,增加節(jié)點(diǎn)宕機(jī)需要做數(shù)據(jù)遷移


    HBase特點(diǎn):

    大表:一個(gè)表有上億行,上百萬(wàn)列

    面向列:面向列族的存儲(chǔ),列族獨(dú)立檢索

    稀疏:對(duì)于空(null)的列,不占用空間

    。。。



    分布式數(shù)據(jù)庫(kù)hbase特點(diǎn):

    基于列式高效存儲(chǔ)

    強(qiáng)一致數(shù)據(jù)訪問

    高可靠

    高性能

    可伸縮,自由切分、遷移

    Schema free


    RowKey

    :與nosql數(shù)據(jù)庫(kù)一樣,row key是用來(lái)檢索記錄的主鍵。

    而且可以訪問hbase table中行,只有三方法:

    1、通過(guò)單個(gè)row key進(jìn)行訪問

    2、通過(guò)row key的range進(jìn)行訪問

    3、全表掃描

    row key行鍵,64kb,實(shí)際應(yīng)用長(zhǎng)度一般10~100ytes,在hbase內(nèi)部,row key保存為字節(jié)數(shù)組。存儲(chǔ)時(shí),數(shù)據(jù)按row key的字典順序排序存儲(chǔ)。



    Columns family

    列族:

    hbase表中的每個(gè)列,都?xì)w屬于某個(gè)列族。

    列族是表的schema的一部分,而列不是,必須在使用表之前進(jìn)行定義。

    列名都以列族作為前綴。

    courses:history, courses:math都屬于courses這個(gè)列族。



    Time Stamp

    時(shí)間戳:

    hbase中通過(guò)row和columns確定的為一個(gè)存儲(chǔ)單元:cell

    每個(gè)cell都保存著同一份數(shù)據(jù)的多個(gè)版本。版本通過(guò)時(shí)間戳來(lái)做索引。時(shí)間戳的類型是64位整型。

    時(shí)間戳也可以由hbase系統(tǒng)進(jìn)行賦值,可以精確到毫秒,當(dāng)然也可以由客戶顯示賦值。

    每個(gè)cell中,不同版本的數(shù)據(jù)按時(shí)間倒序排序,最新的數(shù)據(jù)排在最前面。為了避免數(shù)據(jù)存在過(guò)多版本造成的管理負(fù)擔(dān),hbase提供兩種回收方式,一是保存數(shù)據(jù)最后的n個(gè)版本,二保存最近一段時(shí)間內(nèi)版本(比如最近7天),用戶可以針對(duì)每個(gè)列族進(jìn)行設(shè)置。




    Cell

    由row key + column ,version唯一確定單元,cell中的數(shù)據(jù)是沒有類型的,全是字節(jié)碼形式存儲(chǔ)。

    Cell的內(nèi)容是不可分割的字節(jié)數(shù)組。

    無(wú)類型、字節(jié)碼。



    物理存儲(chǔ)

    在hbase table中所有的行都按row key的字典序排列。

    table在行的方向上分割為多個(gè)hregion


    Region按大小分割的,每個(gè)表一開始只有一個(gè)region,隨著數(shù)據(jù)不斷插入表,region不斷增大,當(dāng)增大到一定閥值時(shí)候,Hregion就會(huì)分成兩個(gè)新hregion



    HRegion是Hbase中分布式存儲(chǔ)和負(fù)載均衡的最小單元,最小單元就表示不同的Hregion可以分布在不同的hregion server上,但一個(gè)hregion是不會(huì)折分到多個(gè)server


    Store:

    Hregion雖然是分布式存儲(chǔ)的最小單元,但并不是存儲(chǔ)的最小元,在下層還有store,而store是以hfile的格式保存在hdfs上。





    HFile:

    1、Data Block

    保存表中的數(shù)據(jù),這部分可以被壓縮。


    2、Meta Block

    保存用戶自定義的kv對(duì),可以被壓縮


    3、Data Block Index

    Data Block索引,每條索引的key是被索引的block的第一條記錄的key


    4、Meta Block Index

    Meta Block索引.


    5、Trailer

    是定長(zhǎng)的,保存每一段的偏移量。在讀取一個(gè)hfile時(shí),會(huì)首先讀取Trailer,Trailer保存了每個(gè)段的起始位置,然后,DataBlockIndex會(huì)被讀取到內(nèi)存中,這樣,當(dāng)檢索某個(gè)key時(shí),不需要掃描整個(gè)HFile,而只需要從內(nèi)存中找到key所在的blok,通過(guò)一次磁盤io,可以將整個(gè)block讀取到內(nèi)存中,再找到需要的key。DataBlockInde采用LRu機(jī)制淘汰。

    HFile的DataBlock,MetaBlock通常采用壓縮方式進(jìn)行存儲(chǔ),壓縮后可以減少磁盤io,相應(yīng)的cpu的開支也會(huì)減少。


    6、File Info

    是HFile的元信息,不被壓縮,用記可以在這一段添加自己的元信息。


    目前HFile的壓縮支持兩種方式:GZip、Lzo


    Hlog:

    Hlog類似于mysql 中的binlog,用來(lái)做災(zāi)難恢復(fù),hlog記錄了所有數(shù)據(jù)的變更,一但數(shù)據(jù)修改,都可以在log里面進(jìn)行恢復(fù)。


    注意:每個(gè)Region Server維護(hù)一個(gè)Hlog,而不是每個(gè)Region一個(gè)


    這樣不同的Region的日志會(huì)混合在一起,這樣做的目的,是不斷追加單個(gè)文件相對(duì)于同時(shí)寫多個(gè)文件而言,可以減少磁盤尋址次數(shù)。所以可以提高對(duì)table的寫的性能。


    Hlog 文件就是一個(gè)hadoop squence file ,squence file的key是hlogkey的對(duì)象,hlogkey記錄了寫入數(shù)據(jù)的歸屬信息。除了table和region名字之外,同時(shí)還包括sequence number和time stamp,time stamp是寫入時(shí)間,sequence number和的起始值為0,或者是最近一次存儲(chǔ)文件 系統(tǒng)的sequence number。



    Client:

    訪問hbase接口,維護(hù)著region位置的緩存信息。


    Zookeeper:

    保證任何時(shí)候,集群中只有一個(gè)master

    存儲(chǔ)所有Region的尋址入口。

    實(shí)時(shí)監(jiān)控Region Server的狀態(tài),將上下線信息通知master

    存儲(chǔ)hbase的schema,包括有哪些table,每個(gè)table有哪些column family


    Master

    為Region Server分配region

    負(fù)載region server的負(fù)載均衡

    發(fā)現(xiàn)失效的region server并重新分析其上的region

    GFS上的垃圾文件回收

    處理schema更新請(qǐng)求。




    Region Server

    維護(hù)master分配給它的region,處理io請(qǐng)求

    負(fù)責(zé)切分過(guò)大的region,可以看到client訪問hbase上數(shù)據(jù)的過(guò)程并不需要master參與。



    HBase安裝部署與配置:

    單機(jī)、集群

    1、上傳hbase安裝包

    2、解壓hbase文件  tar -zxvf hbase-1.2.3.tar.gz

    3、cd /bigdata/tools/hbase1.2.3/conf

    4、修改hbase-env.sh

    export JAVA_HOME=/bigdata/tools/jdk1.7

    export HBASE_CLASSPATH=/bigdata/tools/hbase1.2.3/conf

    export HBASE_MANAGERS_ZK=true


    5、修改hbase-site.xml

    hbase.rootdir

    hdfs://192.168.1.119:9000/hbase



    hbase.cluster.distributed

    true




    6、配置region servers文件及hbase環(huán)境變量

    regionservers文件增加集群節(jié)點(diǎn)ip

    192.168.1.119

    192.168.1.120

    192.168.1.121


    配置hbase環(huán)境變量

    export HBASE_HOME=/bigdata/tools/hbase1.2.3/

    export PATH=$PATH:/bigdata/tools/hbase1.2.3/bin


    source /etc/profile



    7、啟動(dòng)hbase  

    start-hbase.sh


    8、查看hbase進(jìn)程

    jsp

    DataNode

    SecondaryNamenode

    NameNode

    ResourceManger

    NodeManager

    HRegionServer

    Hmaster

    JobTracker

    TaskTracker

    QuorumpeerMain


    9、通過(guò)http頁(yè)面進(jìn)行查看

    http://192.168.1.119:16030


    hbase shell基本用法:

    1、建立一個(gè)表scores,有兩個(gè)列族,grad和courese

    create 'scores','grade','courese'


    2、查看hbase中的所有的表:

    list


    3、查看表結(jié)構(gòu):

    describe 'scores'


    4、按設(shè)計(jì)的表結(jié)構(gòu)插入值:

    put 'scores','tom','grade','5'

    put 'scores','tom','courese:math','97'

    put 'scores','Jim','courese:art','87'

    put 'scores','Jim','grade','4'


    5、根據(jù)鍵值查詢數(shù)據(jù)

    get 'scores','Jim'

    get 'scores','Jim','grade'


    6、查看表中所有數(shù)據(jù)

    scan 'scores'


    7、刪除指定數(shù)據(jù)

    delete 'scores','Jim','grage'



    8、修改表結(jié)構(gòu)

    disable 'scores'

    alter 'scores', NAME=>'info'

    enable 'scores'


    9、統(tǒng)計(jì)行數(shù)

    count 't1'


    10、刪除表

    disable 'scores'

    drop 'scores'



    API


    1、初始化配置

    publice class HBaseTest{

    private static Configuration conf = null;

    Cinfuguration HBASE_CONF = new Configuration()

    HBASE_CONF.set('hbase.master','192.168.1.119:60000')

    HBASE_CONF.set('hbase.zookeeper.quorum','hsslave1,hsslave2,hsslave3')

    .set('hbase.zookeeper.property.clientport','2181')

    conf = HBaseconfiguration.create(HBASE_CONF)


    }


    2、創(chuàng)建一張表



    public static void createTable(String tableName,String[] familys)throws Exception{

    HBaseAdmin admin = new HBaseAdmin(conf)

    HTableDescripor tableDes = new HTbaleDescriptor(tableName)

    tableDes.addFamily(new HColumnDescriptor(familys[i]))

    admin.createTable(tableDes)

    }



    3、插入一條數(shù)據(jù)


    4、刪除一行數(shù)據(jù)


    5、查詢一條記錄


    6、查詢所有數(shù)據(jù)


    3、刪除一張表


    -------------------------------------------------------------------------------------------

      



    首頁(yè)
    產(chǎn)品
    新聞
    聯(lián)系
    国产精品美女久久久久AV爽,俺去俺来也在线WWW色官网,成年美女黄的视频网站,正在播放无套少妇出租屋 庆元县| 阳朔县| 新源县| 从江县| 定安县| 宜良县| 孟村| 安吉县| 玉树县| 黄骅市| 宁远县| 日土县| 运城市| 大竹县| 城市| 龙泉市| 教育| 邳州市| 铁岭市| 清水县| 台州市| 锦州市| 漳州市| 盐池县| 绥中县| 南雄市| 托克托县| 荃湾区| 南京市| 南汇区| 承德市| 内乡县| 安化县| 枞阳县| 雷波县| 交城县| 南雄市| 特克斯县| 化州市| 八宿县| 花莲县|