无套内谢少妇毛片免费看看_人人入人人爱_又粗又大又硬毛片免费看_蜜桃AV无码国产丝袜在线观看

第二周 深圳模具- 搭建 hadoop 大數據集群 ,linux , 虛擬機

2021-04-20 21:14:23


深(shen)圳模具-搭建(jian) hadoop 大(da)數據集(ji)群



***電(dian)腦中要先有如(ru)下內容:

image.png

image.png

點擊安裝虛擬機

image.png


image.png

image.png

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

image.png

結束虛擬機安裝, 接下來安裝 Centos 操作系(xi)統。


在屏幕上點擊虛擬機圖標 :image.png  出現(xian)下面(mian)的封面(mian)


image.png


點擊創建新的虛擬機

image.png

按 自(zi)定義(yi)  , 然(ran)后 下一步。

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

按  完成(cheng)  以后


image.png


image.png

點(dian)擊后, 出現安裝 centos 的界(jie)面(mian), 完成后出現圖形界(jie)面(mian)


image.png


選擇(ze) Otehr    ,   輸入(ru)  root       ;hadoop  進入(ru)系統


image.png


至此, 前面的安裝完(wan)成, 可以(yi)按(an)  終端  進(jin)入  # 狀(zhuang)態(tai)



1、準備linux環境(jing)

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

                             ;           HOSTNAME=hsmaster


           1.2、修改ip  

                   ;       第一種方法:通過(guo)圖(tu)形(xing)界面方式進行修改,

                          第二種方法(fa)通過命令進行修改:

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

           ;                             BOOPROTO="static"

                                        IPADDR=192.168.1.119

                                        GATEWAY=192.168.1.1


           1.3、修改主機(ji)名和ip的映(ying)射關(guan)系  

                                 # vi /etc/hosts

                                    192.168.1.119 hsmaster

                                    192.168.1.120 hsslave1

                                    192.168.1.121 hsslave2

   ;                                 《如果有(you) 10臺(tai)電腦, 也是(shi)這(zhe)樣(yang)配(pei)置》


          1.4、關閉防火(huo)墻

                               # service iptables status

                                   image.png

                               # service iptables stop

                                  image.png

                               # chkconfig iptables off

                                  image.png


         1.5、重啟linux

                               # reboot


2、安裝jdk

         2.1、上(shang)傳jdk文件       to      /bigdata/tools

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

         2.3、配置java環(huan)境變(bian)量

                               # vi /etc/profile

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

                                       export PATH=$PATH:$JAVA_HOME/bin


3、配(pei)置(zhi)ssh免登錄

         1.1、 ssh-keygen -t rsa 一路回(hui)車(che)生成密鑰

         1.2、 id_rsa.pub 追加授權Key  cat ~/.ssh/id_rst.pub >> ~/.ssh/authorized_keys

         1.3、 修(xiu)改權限

                   chmod   666  

         1.4、 將公共密鑰復制到其它(ta)節點

                   還是需要修改權限 

         1.5、 重啟ssh服(fu)務


         1.6、 檢查配置文件

     

         1.7、 驗證ssh免登錄是否成功

                   # cat /etc/ssh/

                  image.png

  

4、搭建hadoop集(ji)群

         4.1、上傳文件(jian)

                  窗口下可(ke)以拖拽進入虛擬機

         4.2、 解壓hadoop文件

                  tar

         4.3、 配置hadoop-env.sh文件

                  修改(gai)絕對路徑

       ;  4.4、 配置core-site.xml文(wen)件


         4.5、 配置hdfs-site.xml文(wen)件(jian)


         4.6、 配(pei)置(zhi)mapred-site.xml文件

                    

         4.7、 配置yarn-site.xml文件


         4.8、 配置環(huan)境變量


         4.9、 將(jiang)文件復制(zhi)到(dao)其它(ta)節點上


        4.10、 進(jin)行格式操作

                    # hdfs namenode -format

         4.11、 啟動hadoop sbin/  ./start-all.sh


         4.12、 驗證集(ji)群是(shi)否啟(qi)動成功

                        # jps

                               NameNode

                               DataNode

                               NodeManager

                               ResourceManager

                               SecondaryNameNode

           4.13、 登錄界面進行查看:

                       HDFS管理界面:                                       //192.168.1.119:50070

                       MR管理界(jie)面:                                          htpp://192.168.1.119:8088




----------------------------------------------------------------下面(mian)是第(di)三周

深圳(zhen)模具-正式學習使(shi)用(yong) hadoop 大(da)數據集群(qun)


一、HDFS相關命令:

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

       2、創建文件(jian)目錄(lu)/tmp    hdfs dfs -mkdir /tmp

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

       4、復制當前目錄下a.txts到HDFS文件系統   hdfs dfs -put a.txt /inputFile

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

       6、查看/inputFile/a.txt文件(jian)內容(rong)   hdfs dfs -cat /inputFile/a.txt

   ;    7、查看HDFS狀態   hdfs dfsadmin -report


        用這個命(ming)令可以(yi)快速定位出(chu)哪些節點down掉了,HDFS的容量以(yi)及使用了多(duo)少,

        以(yi)及(ji)每(mei)個(ge)節點的硬盤使(shi)用情況。當然NameNode有個(ge)http頁面也(ye)可以(yi)查詢,

        但(dan)是這個(ge)命令的輸出更(geng)適合我們的腳本監(jian)控(kong)dfs的使(shi)用狀況。


        下面是關于 YARN 的操作:      

         yarn.nodemanager.aux-service

                spark_shuffle

                mapreduce_shuffle    要(yao)引入對應的架包(bao)  

                yarn.nodemanager.aux-services.mapreduce_shuffle.class  

                                采(cai)用 FIFO的(de)方(fang)式, 這個(ge)方(fang)式并不好 , 好的(de)方(fang)式是 公(gong)平調度-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



第四周(zhou)   

              Hbase 。

              Hbase  -> Google bigtable 開源實現   ---2008年(nian)---->  apache hadoop 下面(mian)的(de)項目   

                               采用(yong)的公司(si) :    Facebook           Intel       yahoo     baidu     alibaba      tencent   360  等(deng)等(deng)   nosql 數據庫

                               

                           image.png


      image.png


                SQL (Structured Query Language) 數據(ju)庫,指關系型數據(ju)庫。

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

          NoSQL(Not Only SQL)泛指(zhi)非關系型數(shu)據庫。

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


               關系型數據庫的特點:    面向行的,    Nosql 是面向列的。  

           ;    高并發狀態下:      分(fen)(fen)庫分(fen)(fen)表    讀寫分(fen)(fen)離   帶來(lai)(lai)數據一致性(xing)問題 ,海(hai)量數據實現出來(lai)(lai)很復(fu)雜(za),后期遷移也很復(fu)雜(za)。

               高可(ke)用,可(ke)靠性,可(ke)伸(shen)縮性的措施: ;主(zhu)備 、 主(zhu)從 、 多主(zhu)。   本身的可(ke)擴展性很差(cha)。   增加節(jie)點或者宕機要(yao)做遷(qian)移。  

               Hbase 首先是一個(ge)大表。


1.關系型數據庫(ku)理論(lun) - ACID

            ACID,是指數(shu)據庫管理(li)系統(DBMS)在寫入或更新資(zi)料的過程中,為保證事務(wu)(transaction)是正(zheng)確(que)可(ke)靠(kao)的,

                      所(suo)必須具(ju)備的四個特性(xing):原子性(xing)(atomicity,或稱不可分割(ge)性(xing))、一(yi)致(zhi)性(xing)(consistency)、

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

                 ;     A – Atomicity – 原子(zi)性

                                             一個事務(transaction)中的所有操作,要么全(quan)部完成(cheng),要么全(quan)部不完成(cheng),不會(hui)結束在中間某個環節。

                                             事(shi)務在(zai)執(zhi)行過程中發生錯(cuo)誤,會被回滾(Rollback)到事(shi)務開始前的狀(zhuang)態,就像這(zhe)個事(shi)務從(cong)來沒(mei)有被執(zhi)行過一(yi)樣(yang)。

                      C – Consistency – 一致性

                                             在事務開始之前和事務結束以后(hou),數據(ju)庫(ku)的完(wan)整性沒有被破壞。這表(biao)示寫入的資料必須完(wan)全(quan)符合(he)所有的預設規則,

                                     ;         這包含資料的精確(que)度、串聯性以及后續數據(ju)庫可以自發性地完成預定的工作。

                      I – Isolation – 隔離性

                                             數(shu)據(ju)庫允許多個(ge)并發事(shi)務(wu)同時對(dui)其(qi)數(shu)據(ju)進行讀寫和修改(gai)的(de)能力,隔離(li)性可以防(fang)止多個(ge)事(shi)務(wu)并發執行時

                                             由(you)于交叉執行而導致(zhi)數據的不一致(zhi)。事(shi)務隔離分為不同級別(bie),包括讀(du)未(wei)提交(Read uncommitted)、

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

                      D – Durability – 持久性

                       ;                      事務處理結束后,對數據的修改就是永久的,即便系統故障也(ye)不會丟失。

       關系型數(shu)據庫嚴格遵循ACID理論(lun)。

       但當數(shu)據庫要(yao)開(kai)始滿足橫向擴展、高可(ke)用、模(mo)式自由(you)等需(xu)求時(shi),需(xu)要(yao)對ACID理論(lun)進(jin)行取舍,不能(neng)嚴格遵循ACID。

       以CAP理(li)論(lun)和BASE理(li)論(lun)為基礎的(de)NoSQL數據庫開始(shi)出現。

 

2.分布式系統理論

 

2.1 分布(bu)式系統介(jie)紹

 

分布式系統(tong)的核心理(li)念是讓多(duo)臺(tai)服(fu)務(wu)器協同工作(zuo),完成單(dan)臺(tai)服(fu)務(wu)器無法處理(li)的任務(wu),尤其是高并發或者大數(shu)據量的任務(wu)。分布式是NoSQL數(shu)據庫(ku)的必要條件。

 

分布(bu)式(shi)系(xi)統由(you)獨(du)立的(de)服務(wu)器(qi)通過網(wang)絡(luo)松散耦合組(zu)成的(de)。每個(ge)(ge)服務(wu)器(qi)都(dou)是一(yi)臺獨(du)立的(de)PC機,服務(wu)器(qi)之間通過內部(bu)網(wang)絡(luo)連接,內部(bu)網(wang)絡(luo)速度一(yi)般比較快。因(yin)為分布(bu)式(shi)集群里的(de)服務(wu)器(qi)是通過內部(bu)網(wang)絡(luo)松散耦合,各(ge)節點之間的(de)通訊有一(yi)定的(de)網(wang)絡(luo)開(kai)銷,因(yin)此(ci)分布(bu)式(shi)系(xi)統在(zai)設計上盡可能(neng)減少節點間通訊。此(ci)外,因(yin)為網(wang)絡(luo)傳(chuan)輸瓶頸,單(dan)個(ge)(ge)節點的(de)性能(neng)高低對分布(bu)式(shi)系(xi)統整(zheng)體性能(neng)影(ying)響不大。比如,對分布(bu)式(shi)應用(yong)(yong)來(lai)說,采用(yong)(yong)不同編程(cheng)語(yu)言(yan)開(kai)發(fa)帶(dai)來(lai)的(de)單(dan)個(ge)(ge)應用(yong)(yong)服務(wu)的(de)性能(neng)差異,跟(gen)網(wang)絡(luo)開(kai)銷比起來(lai)都(dou)可以忽略不計。

 

因(yin)此(ci),分(fen)布(bu)式系統(tong)每個(ge)節點一般不(bu)采用(yong)高性(xing)能(neng)的服(fu)務(wu)器(qi),而是使用(yong)性(xing)能(neng)相對一般的普(pu)通(tong)PC服(fu)務(wu)器(qi)。提(ti)升分(fen)布(bu)式系統(tong)的整(zheng)體(ti)性(xing)能(neng)是通(tong)過橫向擴(kuo)展(增加更多的服(fu)務(wu)器(qi)),而不(bu)是縱向擴(kuo)展(提(ti)升每個(ge)節點的服(fu)務(wu)器(qi)性(xing)能(neng))實現(xian)。

 

分(fen)(fen)布式(shi)系統(tong)最大的(de)(de)特點是(shi)可擴展(zhan)(zhan)性,它能(neng)夠適(shi)(shi)應(ying)需(xu)求(qiu)(qiu)(qiu)變(bian)(bian)化而(er)擴展(zhan)(zhan)。企(qi)(qi)業(ye)(ye)(ye)級(ji)應(ying)用需(xu)求(qiu)(qiu)(qiu)經常隨(sui)時間而(er)不(bu)斷(duan)變(bian)(bian)化,這(zhe)也對企(qi)(qi)業(ye)(ye)(ye)級(ji)應(ying)用平臺(tai)(tai)提(ti)出了很(hen)高(gao)的(de)(de)要(yao)(yao)求(qiu)(qiu)(qiu)。企(qi)(qi)業(ye)(ye)(ye)級(ji)應(ying)用平臺(tai)(tai)必(bi)須要(yao)(yao)能(neng)適(shi)(shi)應(ying)需(xu)求(qiu)(qiu)(qiu)的(de)(de)變(bian)(bian)化,即具有(you)可擴展(zhan)(zhan)性。比如(ru)移動互(hu)聯網2C應(ying)用,隨(sui)著互(hu)聯網企(qi)(qi)業(ye)(ye)(ye)的(de)(de)業(ye)(ye)(ye)務(wu)規(gui)模不(bu)斷(duan)增大,業(ye)(ye)(ye)務(wu)變(bian)(bian)得越(yue)(yue)來越(yue)(yue)復雜,并發用戶請求(qiu)(qiu)(qiu)越(yue)(yue)來越(yue)(yue)多(duo),要(yao)(yao)處(chu)理的(de)(de)數(shu)據也越(yue)(yue)來越(yue)(yue)多(duo),這(zhe)個時候企(qi)(qi)業(ye)(ye)(ye)級(ji)應(ying)用平臺(tai)(tai)必(bi)須能(neng)夠適(shi)(shi)應(ying)這(zhe)些變(bian)(bian)化,支持高(gao)并發訪問(wen)和海量數(shu)據處(chu)理。分(fen)(fen)布式(shi)系統(tong)有(you)良好(hao)的(de)(de)可擴展(zhan)(zhan)性,可以通過(guo)增加服務(wu)器數(shu)量來增強分(fen)(fen)布式(shi)系統(tong)整體的(de)(de)處(chu)理能(neng)力,以應(ying)對企(qi)(qi)業(ye)(ye)(ye)的(de)(de)業(ye)(ye)(ye)務(wu)增長帶來的(de)(de)計算需(xu)求(qiu)(qiu)(qiu)增加。

 

2.2 分(fen)布(bu)式(shi)存儲的問(wen)題 – CAP理論(lun)

 

如果我們期待實現(xian)一套嚴格(ge)(ge)滿足(zu)ACID的(de)分布式事(shi)務,很可(ke)能出現(xian)的(de)情況就(jiu)是系統的(de)可(ke)用性和嚴格(ge)(ge)一致性發生沖(chong)突。在可(ke)用性和一致性之間(jian)永(yong)遠(yuan)無法(fa)存在一個(ge)兩(liang)全其美的(de)方案。由于NoSQL的(de)基本需求就(jiu)是支持分布式存儲,嚴格(ge)(ge)一致性與(yu)可(ke)用性需要(yao)互相取(qu)舍,由此延(yan)伸出了CAP理論來定義(yi)分布式存儲遇到的(de)問題。

 

CAP理論(lun)告訴(su)我們:一(yi)個分(fen)布式系統不可能(neng)同(tong)時滿(man)足一(yi)致性(xing)(C:Consistency)、可用性(xing)(A:Availability)、分(fen)區(qu)容錯性(xing)(P:Partitiontolerance)這三個基本(ben)需求(qiu),并且最(zui)多只能(neng)滿(man)足其(qi)中的兩(liang)項。

 

對(dui)于一(yi)個分(fen)布式系(xi)統來說(shuo),分(fen)區(qu)容(rong)錯是(shi)基本(ben)需求,否(fou)則不能稱之(zhi)為分(fen)布式系(xi)統。因此架構師(shi)需要在C和A之(zhi)間(jian)尋求平衡。

 


HBase 的物(wu)理存(cun)儲

HBase 表中的(de)(de)所有行都(dou)是(shi)按照(zhao)行鍵(jian)的(de)(de)字(zi)典序排列的(de)(de)。

因為一張表中包(bao)含(han)的行(xing)(xing)的數量(liang)非常多,有時(shi)候會高(gao)達(da)幾億行(xing)(xing),所以需要分布存儲到多臺服務器上。

因此,當一張表(biao)的行(xing)(xing)(xing)太多的時候,HBase 就會根據行(xing)(xing)(xing)鍵(jian)的值(zhi)對表(biao)中(zhong)的行(xing)(xing)(xing)進行(xing)(xing)(xing)分區(qu),每個行(xing)(xing)(xing)區(qu)間構成一個“分區(qu)(Region)”,

包(bao)含(han)了位于某個值域區(qu)間內的(de)所有數據(ju),如圖 1 所示。

HBase的Region存儲模式圖

                   圖(tu)(tu) 1  HBase的(de)Region存儲模(mo)式(shi)圖(tu)(tu)




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

當增大到一個閾(yu)值的時候,Region 就會(hui)等(deng)分為兩(liang)個新(xin)的 Region。

當表中的行不斷增多時(shi),就(jiu)會有越(yue)來越(yue)多的 Region,如圖 2 所(suo)示。



 HBase的Region分裂示意
                                   圖 2  HBase的Region分裂(lie)示意


Region 是 HBase 中數據分(fen)發和負載(zai)均(jun)衡的最小(xiao)單元,默認(ren)大小(xiao)是 100MB 到 200MB。

不同的 Region 可以分(fen)布(bu)在不同的 Region Server 上,但一個 Region 不會拆分(fen)到多個 Region Server 上。

每個 Region Server 負責管理一個 Region 集(ji)合。

如圖 3 所示(shi)。



HBase的Region分布模式
                                                                圖 3  HBase的(de)Region分布(bu)模式



Region 是(shi) HBase 在 Region Server 上數據分發(fa)的(de)最(zui)小單(dan)元,但并不是(shi)存儲的(de)最(zui)小單(dan)元。

事實上,每個(ge) Region 由一個(ge)或者多(duo)個(ge) Store 組成,每個(ge) Store 保存一個(ge)列族的數據。

每(mei)個 Store 又(you)由一(yi)個 memStore 和 0 至多個 Store File 組(zu)成,如(ru)圖 4 所示。

Store File 以 HFile 格式(shi)保存在(zai) HDFS 上。


HBase的Region存儲模式
                                                                       圖 4  HBase的Region存儲模式

HBase 的邏輯架構

在分布式(shi)的生產環境中,HBase 需要(yao)運行(xing)在 HDFS 之上(shang),以(yi) HDFS 作(zuo)為(wei)其(qi)基(ji)礎(chu)的存儲設施。

HBase 的上層(ceng)是訪問數(shu)據(ju)的  API 層,供(gong)應用(yong)訪問存儲在(zai) HBase 中的(de)數據(ju)。

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

具體模塊如圖 5 所示(shi)。

HBase的系統架構

                                                                 圖 5  HBase的(de)系統架構(gou)



1)Master

Master 主要負責表和 Region 的管理工作。

表(biao)的管理工作(zuo)主要(yao)是(shi)負責(ze)完成增加(jia)表(biao)、刪除(chu)表(biao)、修改表(biao)和查詢表(biao)等(deng)操作(zuo)。

Region 的(de)(de)管理工作(zuo)更(geng)復雜(za)一些,Master 需要負(fu)責分配 Region 給 Region Server,協調多個 Region Server,檢(jian)測各個 Region Server 的(de)(de)狀態,并平衡 Region Server 之間的(de)(de)負(fu)載。

當 Region 分裂或(huo)合并(bing)之后,Master 負責重新調整 Region 的(de)布(bu)局(ju)。如果某個 Region Server 發(fa)生故(gu)障,Master 需(xu)要負責把故(gu)障 Region Server 上(shang)的(de) Region 遷移到其他 Region Server 上(shang)。

HBase 允(yun)許(xu)多(duo)個 Master 結點共存,但是(shi)這(zhe)需要 Zookeeper 進行協調。當(dang)多(duo)個 Master 結點共存時,只有一個 Master 是(shi)提供服務(wu)的,其他的 Master 結點處(chu)于待(dai)命(ming)的狀態。

當正(zheng)在工作(zuo)的 Master 結點宕機(ji)時(shi),其(qi)他的 Master 則會接管 HBase 的集群。



2)RegionServer

HBase 有許多個 Region Server,每個 Region Server 又包(bao)含多個 Region。Region Server 是 HBase 最核心的模塊,負責維護 Master 分(fen)配給(gei)它的 Region 集合(he),并(bing)處理(li)對這些 Region 的讀寫操作。

Client 直接(jie)與 Region Server 連接(jie),并經過通信獲取 HBase 中的數據。

HBase 釆用 HDFS 作為底層存儲文件系(xi)統,Region Server 需(xu)要向 HDFS 寫入數據,并利用 HDFS 提供可靠(kao)穩定的數據存儲。

Region Server 并(bing)不(bu)需要提供數據復制和維護數據副(fu)本的功能。


3)Zookeeper

Zookeeper 的(de)作用對 HBase 很(hen)重要(yao)。


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

也就是說(shuo),Zookeeper 保(bao)證了至(zhi)少(shao)有一個(ge) HBase Master 處于運(yun)行狀態(tai)。

Zookeeper 同時負責 Region 和 Region Server 的注冊。

HBase 集群的 Master 是整個(ge)集群的管(guan)理者,它必須(xu)知道每個(ge) Region Server 的狀態。

HBase 就是(shi)使用(yong) Zookeeper 來管理 Region Server 狀態的。

每(mei)個 Region Server 都(dou)向 Zookeeper 注冊,由 Zookeeper 實時監(jian)控每(mei)個 Region Server 的(de)狀態,并通(tong)知給 Master。


這樣,Master 就可以(yi)通過 Zookeeper 隨時感知各(ge)個 Region Server 的工(gong)作(zuo)狀態(tai)。


需要(yao)搭建 ZooKepper 集(ji)群 , 采取(qu)奇數作為基(ji)礎, 要(yao)不斷選取(qu)出唯一的領(ling)導(dao)者(zhe) 。


然(ran)后在搭建(jian) Hbase 集群。



image.png

image.png



Hlog = Mysql 中的(de) bingLog

image.png



Hbase 邏輯架構(gou)

image.png


image.png



安(an)裝 Hbase


1、下(xia)載軟件(jian)從   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

我(wo)們上(shang)課(ke)說(shuo)的:    start-hbase.sh

              查(cha)看:     jsp                         或者     


              安裝一個插件 Phoenix , 就可以(yi)用 mysql 數據庫的命令(ling)看了   , 等(deng)于是一個 shell .

              API可以(yi)在 Java后端做軟(ruan)件查看 。

              

           

第四周(zhou), 盧老(lao)師筆記--------------------------------------------------------------------------------------------------


HBase 是一個(ge)高可靠性、高性能(neng)、面向列(lie)、可伸(shen)縮的分布式存儲系統。

利(li)用PC搭建大規模的(de)結(jie)構(gou)化(hua)存(cun)儲集群。


HBase -> Google Bigtable開源實現。GFS <- HDFS 2006 powerset jim

2008  Apache Hadoop 


Facebook

Intel

Yahoo

baidu

alibaba

tencent

360


回顧一下傳統關系型數據庫

1、有事務的保障(zhang) ACID 原(yuan)子性(xing)、一(yi)治(zhi)性(xing)、隔離性(xing)、持久性(xing)

2、豐富(fu)的數(shu)據(ju)類型和sql操(cao)作

3、嚴(yan)格的(de)數據類(lei)型,及(ji)行(xing)式(shi)存(cun)儲


關系型數據庫在(zai)高并發(fa)、大數據應對方式:

高并發:

措施:分(fen)庫分(fen)表(biao) 、讀寫分(fen)離

帶來數據一致性問題

海量數據:

措施:分庫分表

實現復雜(za)(za),后(hou)期遷移復雜(za)(za)

路由自定義

高可(ke)用、可(ke)靠、可(ke)伸縮(suo)、

措施:主(zhu)(zhu)備、主(zhu)(zhu)從(cong)、多主(zhu)(zhu)

本身擴展性(xing)差,增加節點宕機需要做數據(ju)遷移


HBase特點:

大表:一個表有上億(yi)行(xing),上百(bai)萬(wan)列

面向列(lie):面向列(lie)族(zu)的存儲,列(lie)族(zu)獨立檢索

稀疏:對(dui)于空(null)的(de)列(lie),不占用空間

。。。



分布式數據庫(ku)hbase特點:

基于列式高效存儲

強一致數據訪問

高可靠

高性能

可伸縮,自由切分、遷移

Schema free


RowKey

:與nosql數(shu)據庫一樣,row key是用來(lai)檢索記錄的主鍵。

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

1、通過(guo)單(dan)個row key進行訪問(wen)

2、通(tong)過row key的range進行訪問(wen)

3、全表掃描

row key行鍵,64kb,實際應(ying)用(yong)長度(du)一般10~100ytes,在hbase內部,row key保存為字節數組。存儲(chu)(chu)時(shi),數據按row key的字典順(shun)序(xu)排序(xu)存儲(chu)(chu)。



Columns family

列族:

hbase表中的每個列,都歸屬于某個列族。

列(lie)族是(shi)表的(de)schema的(de)一(yi)部分,而(er)列(lie)不是(shi),必須(xu)在使用表之前進行定義。

列(lie)名都以列(lie)族作(zuo)為前綴。

courses:history, courses:math都屬于courses這個列(lie)族(zu)。



Time Stamp

時間戳:

hbase中通過row和columns確定(ding)的為一個存儲單(dan)元:cell

每(mei)個cell都保存(cun)著(zhu)同一份數據(ju)的多個版本(ben)。版本(ben)通過(guo)時間戳(chuo)來做索引(yin)。時間戳(chuo)的類型是64位整型。

時間戳也可(ke)(ke)(ke)以由(you)(you)hbase系統(tong)進行賦值,可(ke)(ke)(ke)以精(jing)確到毫秒,當然也可(ke)(ke)(ke)以由(you)(you)客戶顯示賦值。

每(mei)個(ge)cell中,不同版本(ben)的數據(ju)按時間(jian)倒序(xu)排序(xu),最新的數據(ju)排在最前面(mian)。為了避(bi)免數據(ju)存(cun)(cun)在過多版本(ben)造成的管理負(fu)擔,hbase提供兩種回收方式(shi),一是保存(cun)(cun)數據(ju)最后的n個(ge)版本(ben),二保存(cun)(cun)最近一段時間(jian)內版本(ben)(比如最近7天),用戶可以針對每(mei)個(ge)列族(zu)進行設置(zhi)。




Cell

由row key + column ,version唯一確定單元(yuan),cell中(zhong)的(de)數(shu)據是沒(mei)有類型的(de),全是字(zi)節碼形式存儲。

Cell的(de)內容(rong)是不可分割的(de)字節(jie)數(shu)組。

無類型、字節碼。



物理存儲

在(zai)hbase table中(zhong)所有的行都按(an)row key的字典序(xu)排列。

table在(zai)行的方(fang)向上分割為多個hregion


Region按大小分(fen)割(ge)的,每個表一開始(shi)只有一個region,隨著數據(ju)不斷(duan)插入表,region不斷(duan)增(zeng)大,當(dang)增(zeng)大到一定閥值時候,Hregion就會(hui)分(fen)成兩個新(xin)hregion



HRegion是(shi)Hbase中分(fen)布式(shi)存儲(chu)和負(fu)載均衡的(de)(de)最小(xiao)單元,最小(xiao)單元就表示不(bu)同(tong)的(de)(de)Hregion可(ke)以分(fen)布在(zai)不(bu)同(tong)的(de)(de)hregion server上,但一個(ge)hregion是(shi)不(bu)會折分(fen)到多個(ge)server


Store:

Hregion雖(sui)然是分布式存儲的最(zui)小(xiao)單(dan)元,但并(bing)不是存儲的最(zui)小(xiao)元,在(zai)下層(ceng)還有store,而store是以hfile的格(ge)式保存在(zai)hdfs上(shang)。





HFile:

1、Data Block

保存表中(zhong)的數據,這(zhe)部(bu)分可以被壓縮。


2、Meta Block

保存用戶自定(ding)義的(de)kv對(dui),可以被壓縮


3、Data Block Index

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


4、Meta Block Index

Meta Block索引.


5、Trailer

是定(ding)長的,保(bao)存每一(yi)(yi)段的偏(pian)移(yi)量。在讀(du)(du)取一(yi)(yi)個(ge)(ge)hfile時,會首先讀(du)(du)取Trailer,Trailer保(bao)存了每個(ge)(ge)段的起始(shi)位置,然(ran)后,DataBlockIndex會被讀(du)(du)取到(dao)內(nei)存中,這樣,當檢索某個(ge)(ge)key時,不需(xu)(xu)(xu)要掃描整個(ge)(ge)HFile,而只需(xu)(xu)(xu)要從內(nei)存中找到(dao)key所在的blok,通過一(yi)(yi)次磁盤io,可(ke)以將整個(ge)(ge)block讀(du)(du)取到(dao)內(nei)存中,再找到(dao)需(xu)(xu)(xu)要的key。DataBlockInde采用(yong)LRu機制淘汰。

HFile的DataBlock,MetaBlock通(tong)常(chang)采用(yong)壓縮方(fang)式(shi)進(jin)行(xing)存儲,壓縮后可以減少(shao)磁盤io,相應的cpu的開支也會減少(shao)。


6、File Info

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


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


Hlog:

Hlog類似(si)于mysql 中(zhong)的(de)(de)binlog,用來做災難恢復(fu),hlog記錄了所有數(shu)據的(de)(de)變更(geng),一但數(shu)據修改,都(dou)可以在log里(li)面進(jin)行恢復(fu)。


注意(yi):每個(ge)Region Server維護一(yi)個(ge)Hlog,而不是每個(ge)Region一(yi)個(ge)


這樣不同的(de)Region的(de)日(ri)志(zhi)會混合(he)在一起,這樣做的(de)目(mu)的(de),是不斷追加單個文(wen)件(jian)相對(dui)于同時寫(xie)多個文(wen)件(jian)而言,可以(yi)減少磁盤尋址(zhi)次數。所(suo)以(yi)可以(yi)提(ti)高對(dui)table的(de)寫(xie)的(de)性能。


Hlog 文(wen)件就是一個hadoop squence file ,squence file的key是hlogkey的對象,hlogkey記(ji)錄了寫(xie)入數據的歸屬信(xin)息。除(chu)了table和(he)region名字之外,同(tong)時還(huan)包括(kuo)sequence number和(he)time stamp,time stamp是寫(xie)入時間(jian),sequence number和(he)的起始值為(wei)0,或者是最(zui)近一次存儲文(wen)件 系統的sequence number。



Client:

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


Zookeeper:

保證任何時候,集群中(zhong)只有一個master

存儲所有Region的尋(xun)址入(ru)口。

實時監控Region Server的狀(zhuang)態(tai),將上下線信息通知master

存儲hbase的schema,包括有哪(na)些(xie)table,每個(ge)table有哪(na)些(xie)column family


Master

為Region Server分配(pei)region

負(fu)載region server的負(fu)載均衡

發現失(shi)效的(de)region server并重(zhong)新分析其上(shang)的(de)region

GFS上的(de)垃圾文件回收

處理(li)schema更(geng)新請求。




Region Server

維護(hu)master分(fen)配給(gei)它的region,處理io請求(qiu)

負責切分過大(da)的(de)region,可(ke)以看到client訪問hbase上(shang)數據的(de)過程并(bing)不需要master參(can)與。



HBase安裝部(bu)署與配置(zhi):

單機、集群

1、上傳hbase安裝包

2、解壓(ya)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、配置(zhi)region servers文件及hbase環境變量

regionservers文件增(zeng)加集群節點ip

192.168.1.119

192.168.1.120

192.168.1.121


配置hbase環(huan)境變量

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

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


source /etc/profile



7、啟動hbase  

start-hbase.sh


8、查看hbase進(jin)程(cheng)

jsp

DataNode

SecondaryNamenode

NameNode

ResourceManger

NodeManager

HRegionServer

Hmaster

JobTracker

TaskTracker

QuorumpeerMain


9、通過http頁面進行查看(kan)

//192.168.1.119:16030


hbase shell基本(ben)用法:

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

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


2、查(cha)看hbase中的所有的表:

list


3、查看表結構:

describe 'scores'


4、按設計的表結構(gou)插入值(zhi):

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

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

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

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


5、根據鍵值查詢(xun)數據

get 'scores','Jim'

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


6、查看表中所(suo)有(you)數(shu)據(ju)

scan 'scores'


7、刪除指定數據

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



8、修改表結構

disable 'scores'

alter 'scores', NAME=>'info'

enable 'scores'


9、統計行數

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、創建一張表



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、插入一條數據


4、刪除一行數據


5、查詢一條記錄


6、查詢所有數據


3、刪除一張表


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