日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hbase集群部署与测试(2017)

發(fā)布時間:2025/3/19 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hbase集群部署与测试(2017) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

部署hbase的集群
首先我們要需要一個hadoop集群、至少要有一個hdfs的集群和zookeeper集群
用HA集群的可用性號,由于做實驗,沒必要這么多集群,那么就不用HA集群
第一步看一下hdfs是否正常
啟動hdfs
start-dfs.sh
啟動zookeeper看是否正常(每臺機器上都手動啟動zookeeper)
./zkServer.sh start
檢查zookeeper的工作狀態(tài)
./zkServer.sh status
我們可以輸入
hdfs dfsadmin -report 來查看集群的工作信息
前期工作準備好了,接下來就是搭建hbase
首先上傳hbase的安裝包(注意:這里hbase的安裝包必須要和之前安裝的hadoop的安裝包匹配要支持你所安裝的hadoop)
我安裝的hadoop是2系類的所有下載hbase時也要下載支持2系類的

上傳到主機上目錄上
解壓 tar -zxvf hbase文件名 -C app/

在運行的機器上docs文檔可以刪除來節(jié)省空間
rm -rf docs/

我們要到conf里面去修改配置文件
cd conf/
修改3個配置文件 hbase-env.sh hbase-site.xml regionservers
首先我們修改hbase-env.sh
vi hbase-env.sh
修改export JAVA_HOME=/usr/local/apps/jdk1.8.0_121修改成你安裝的jdk的安裝目錄
在另外一臺機器上執(zhí)行echo $JAVA_HOME 找到jdk的安裝目錄。
接下來我們找一下export HBASE_MANAGES_ZK=true(在鍵盤上按ESC:/ZK 就可以自動找到)
export HBASE_MANAGES_ZK=true(告訴hbase他內(nèi)部要不要管理zookeeper的管理實例hbase內(nèi)部自己自帶的zookeeper 因為hadoop組件里面各種各種的組件都需要zookeeper,在這里我們要把export HBASE_MANAGES_ZK=false,不要讓hbase管理自己的zookeeper,如果hbase停掉了,他不會去把我們的zookeeper去關掉)


接下來修改hbase-site.xml(最主要的配置文件)

vi hbase-site.xml <configuration> <!--指定hbase在HDFS上的存儲的路徑 --> <property> <name>hbase.rootdir</name> <value>hdfs://hadoop-server-00:9000/hbase</value> </property> <!--指定hbase是分布式的--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!--指定zkd 地址,多個用“,”分割--> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop-server-00:2181,hadoop-server-01:2181,hadoop-server-02:2181</value> </property> </configuration> 接下來修改regionserversvi regionservers修改為: hadoop-server-00 hadoop-server-01 hadoop-server-02 保存退出

**注意:我們要把hadoop中的hdfs-site.xml 和 core-site.xml 配置文件放到hbase/conf下

pwd/usr/local/apps/hbase-0.98.24-hadoop2/confcp /usr/local/apps/hadoop-2.6.5/etc/hadoop/hdfs-site.xml ./cp /usr/local/apps/hadoop-2.6.5/etc/hadoop/core-site.xml ./** 接下來我們要把在00上配置的hbase信息拷貝到01 02機器上 [root@hadoop-server-00 apps]# scp -r hbase-0.98.24-hadoop2/ hadoop-server-01:/usr/local/apps/ [root@hadoop-server-00 apps]# scp -r hbase-0.98.24-hadoop2/ hadoop-server-02:/usr/local/apps/

啟動hbase前必須保證hdfs的集群和zookeeper集群正常工作

啟動hbase,首先看一下bin目錄里面有上面腳本cd bin/在bin目錄下啟動hbase ./start-hbase.sh(在那臺機器上啟動,你就在那臺機器上出現(xiàn)Hmaster 其他的集群機器出現(xiàn)QuorumPeerMain)我們要在集群中實現(xiàn)高可用性(HA)就要再啟動一個Hmaster,那么隨便在那臺機器上都可以,只要你安裝了hbase的安裝包隨便在那臺機器上卻換到bin目錄下看到hbase-daemon.sh./hbase-daemon.sh statrt master(這樣就會有兩臺Hmaster)

hbase命令行客戶端簡單使用
在hbase的安裝包bin目錄下有一個hbase
./hbase shell
啟動一個shell這樣的交互的客戶端
進入了數(shù)據(jù)庫操作界面hbase(main):001:0> 可以再這后面進行hbase的命令操作
里面不可以用mysql的語句命令,他是不認識的,他有自己的一套語法,
第一次進入這個里面,你輸入的東西是不可以往回刪除的,我們需要在session Option做一個設置
點擊Emulation 選擇linux 在Mapped Keys 把Backspace sends delete前面的溝 溝上
可以用help查看命令

Group name: ddl 數(shù)據(jù)定義語言Group name: dml 數(shù)據(jù)操作語言Group name: namespace 名稱空間(也就是mysql中的庫的概念)Group name: tools 運維的工具Group name: replication 做副本備份的工具Group name: snapshots 快照的工具Group name: security 做安全驗證的工具命令status 查看狀態(tài)version 查看數(shù)據(jù)庫的版本號whoami 查看是哪個用戶操作的此數(shù)據(jù)庫list 查看哪些表 查找一個字段值的坐標表名---->rowkey---->列族名---->列----->版本號(版本號可以不指定,他默認返還給一個最新的值)

hbase表中,只支持一種數(shù)據(jù)類型:byte[]

hbase命令行客戶端創(chuàng)建表和插入數(shù)據(jù)以及表的排序特性hbase> create 't1', {NAME => 'f1',VERSIONS => 1}, {NAME => 'f2'}, {NAME => 'f3'}'t1'表示:表名 {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}表示:列族名VERSIONS 表示:f1這個列族里面最多可以保存幾個版本 現(xiàn)在我們來創(chuàng)建一個表create 'user_info', {NAME => 'base_info',VERSIONS => 3},{NAME => 'extra_info'} 創(chuàng)建好后可以用list來看,就有這張表的存在了(其實在網(wǎng)頁上也可以看到) 用put命令在插入數(shù)據(jù)直接按put看系統(tǒng)提供的例子hbase> put 't1', 'r1', 'c1', 'value', ts1't1' 表示:表名 'r1' 表示:行鍵 'c1' 表示:列名(列名屬于列族 列族和列名一起寫)'value' 表示:你所插入列名的值 ts1 表示:事件搓(一般不需要手動去定義) 比如 put 'user_info','rk0001','base_info:id','1'put 'user_info','rk0001','base_info:name','zhangsan'put 'user_info','rk0001','base_info:age','20'put 'user_info','rk0001','extra_info:address','beijing' (在第一行中插入了四個字段和值:分別是base_info中的id name age 和extra_info中的address)put 'user_info','rk0002','base_info:id','2'put 'user_info','rk0002','base_info:name','lisi'put 'user_info','rk0002','base_info:sex','male'

(插入了兩行數(shù)據(jù))
接下來我們來查詢一下
在dml中的get來查詢數(shù)據(jù)針對一行 scan對整個表的掃描
scan 'user_info'(查看的整個表)
scan也可以指定起始的范圍,不需要對整個表進行掃描 表很大的時候
scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
't1' 表示:表名 COLUMNS => ['c1', 'c2'] 表示:要返還哪些列 STARTROW => 'xyz' 表示:范圍起始的行 LIMIT => 10要查詢多少行

比如:scan 'user_info', {LIMIT => 2, STARTROW => 'rk0001'} hbase(main):030:0> scan 'mjh_shiyanshuju:mjh_hbase', {COLUMNS => ['b', 'ct'], LIMIT => 1, STARTROW => '001'} ROW COLUMN+CELL 001 column=b:balance, timestamp=1521192923285, value=10000.00 001 column=ct:email, timestamp=1521192923285, value=zhangsan@email.com 001 column=ct:tep, timestamp=1521192923285, value=123456789 1 row(s) in 0.0600 seconds hbase怎么查詢表里的總紀錄數(shù)呢? hbase(main):010:0> count 'vargo:vargo_hbase' 3 row(s) in 0.0300 seconds=> 3

他的排列的順序是不一定是我們插入時的順序,他的內(nèi)部會給我們自動排序,排序后會給我們存放進去,他不是按照我們插入的先后順序排序而是按照字段的名字來排序(他是按照字母的排序大小來排序的a~z)
(hbase的表中,列族和kv都會自動排序,排序的規(guī)律是按照列族名和列名的字典順序,行也會排序,根據(jù)行健的字典順序)
比如是按照以下順序排列
rk0001
rk0001
rk0001
rk0001
rk00010
rk00010
rk00010
rk0002
rk0002
rk0002

用get命令在查詢數(shù)據(jù)get 't1', 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}COLUMNS => 'c1' 表示:要返還哪些列 VERSIONS => 4 表示:返還的版本號 TIMERANGE => [ts1, ts2]:時間搓 比如: get 'user_info' ,'rk0001' get 'user_info' ,'rk0001',{COLUMN => 'base_info:name',VERSIONS => 3}

hbase命令行客戶端管理名稱空間
Group name: namespace 名稱空間(也就是mysql中的庫的概念)
我們可以在不同的名稱空間里創(chuàng)建不同的表
create_namespace 'orderdb'
create 'orderdb:t_order','f1','f2'

查看名稱空間list_namespace 刪除名稱空間disable 'orderdb:t_order'(禁用'orderdb:t_order'中的表)drop 'orderdb:t_order' (刪除'orderdb:t_order'中的表)drop_namespace 'orderdb'(刪除'orderdb'名稱空間) hbase(main):015:0> count 'vg_device' Current count: 1000, row: 948069935274401803 1586 row(s) in 0.3650 seconds=> 1586 hbase(main):016:0> truncate 'vg_device' (情況表語句) Truncating 'vg_device' table (it may take a while):- Disabling table...- Truncating table... 0 row(s) in 3.3790 secondshbase(main):017:0> count 'vg_device' 0 row(s) in 0.2500 seconds=> 0

lsdf命令重寫出現(xiàn)界面hbase(main)>圖標

Hbase 建表基本命令總結(jié):https://blog.csdn.net/kky2010_110/article/details/12616137

HBase scan shell操作詳解:https://blog.csdn.net/vaq37942/article/details/54949428

**Hbase在HDFS上的各個目錄作用** https://blog.csdn.net/jsjsjs1789/article/details/52739356 1、/hbase/.META. 就是存儲1中介紹的 META 表的存儲路徑。 2、/hbase/.archive HBase 在做 Split或者 compact 操作完成之后,會將 HFile 移到.archive 目錄中,然后將之前的 hfile 刪除掉,該目錄由 HMaster 上的一個定時任務定期去清理。 3、/hbase/.corrupt 存儲HBase做損壞的日志文件,一般都是為空的。 4、/hbase/.hbck HBase 運維過程中偶爾會遇到元數(shù)據(jù)不一致的情況,這時候會用到提供的 hbck 工具去修復,修復過程中會使用該目錄作為臨時過度緩沖。 5、/hbase/WAL 大家都知道 HBase 是支持 WAL(Write Ahead Log) 的,HBase 會在第一次啟動之初會給每一臺 RegionServer 在.log 下創(chuàng)建一個目錄,若客戶端如果開啟WAL 模式,會先將數(shù)據(jù)寫入一份到.log 下,當 RegionServer crash 或者目錄達到一定大小,會開啟 replay 模式,類似 MySQL 的 binlog。 6、/hbase/oldlogs 當.logs 文件夾中的 HLog 沒用之后會 move 到.oldlogs 中,HMaster 會定期去清理。 7、/hbase/.snapshot hbase若開啟了 snapshot 功能之后,對某一個用戶表建立一個 snapshot 之后,snapshot 都存儲在該目錄下,如對表test 做了一個 名為sp_test 的snapshot,就會在/hbase/.snapshot/目錄下創(chuàng)建一個sp_test 文件夾,snapshot 之后的所有寫入都是記錄在這個 snapshot 之上。 8、/hbase/.tmp 當對表做創(chuàng)建或者刪除操作的時候,會將表move 到該 tmp 目錄下,然后再去做處理操作。 9、/hbase/hbase.id 它是一個文件,存儲集群唯一的 cluster id 號,是一個 uuid。 10、/hbase/hbase.version 同樣也是一個文件,存儲集群的版本號,貌似是加密的,看不到,只能通過web-ui 才能正確顯示出來。

2019/1/16 星期三
HBase二級索引實現(xiàn)方案 https://blog.csdn.net/wypersist/article/details/79830811
HBase的局限性 : HBase本身只提供基于行鍵和全表掃描的查詢,而行鍵索引單一,對于多維度的查詢困難。
HBase的一級索引就是rowkey,我們只能通過rowkey進行檢索。如果我們相對hbase里面列族的列列進行一些組合查詢,就需要采用HBase的二級索引方案來進行多條件的查詢。

  • MapReduce方案
  • ITHBASE(Indexed-Transanctional HBase)方案
  • IHBASE(Index HBase)方案
  • Hbase Coprocessor(協(xié)處理器)方案
  • Solr+hbase方案

  • CCIndex(complementalclustering index)方案

  • 詳細解釋 hbase分布式存儲機制簡介 //見單獨文檔

    region server 可以由很多個 根據(jù)數(shù)據(jù)的規(guī)模來的
    regionserver01 regionserver02 regionserver03

    用戶具體創(chuàng)建的表是在hbase中具體怎么存儲的?

    當一個大表的若干行達到一定范圍的時候(若干行的數(shù)據(jù)量達到10G就劃分為一個region)

    每一個region會交給每一個regionserver去管理

    轉(zhuǎn)載于:https://blog.51cto.com/12445535/2351982

    總結(jié)

    以上是生活随笔為你收集整理的hbase集群部署与测试(2017)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。