【HBase】HBase的環境搭建及基本使用
1、HBase體系結構
2、HBase功能
HBase是一種Hadoop 資料庫,用於儲存資料和檢索資料。與RDBMS 相比,HBase可以儲存海量資料,資料條目數可達上億條,可以準實時檢索,檢索的速度達到秒級別。HBase是基於HDFS的,具有HDFS的優勢:存在多個副本,資料安全性高,普通商用PC或Server就可以,而RDBMS的伺服器都很貴。
3、HBase表的設計
HBase是一種列式儲存的資料庫,也是一種NOSQL資料庫(NOSQL = Not Only SQL),每一列可以存放多個版本的值,表中每條資料有唯一的識別符號,即rowkey,就是這一條資料的主鍵。
每條資料的構成格式:rowkey + columnfamily + column01 + timestamp : value => cell。cell中用位元組陣列進行儲存,可使用工具類Bytes進行位元組陣列和其他型別的轉換。
4、HBase的安裝
(1)進入/opt/software/目錄,將hbase安裝包上傳虛擬機器。
(2)對HBase安裝包賦予執行許可權:
software]$ chmod u+x hbase-0.98.6-hadoop2-bin.tar.gz
(3)解壓HBase安裝包:
software]$ tar -zxf hbase-0.98.6-hadoop2-bin.tar.gz -C /opt/modules/
(4)進入/opt/modules/hadoop-2.5.0目錄,啟動namenode和datanode。
(5)修改配置檔案/opt/modules/hbase-0.98.6-hadoop2/conf/hbase-site.xml。
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://hadoop-senior.ibeifeng.com:8020/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop-senior.ibeifeng.com</value> </property> </configuration>
(6)修改配置檔案/opt/modules/hbase-0.98.6-hadoop2/conf/hbase-env.sh。
export JAVA_HOME=/opt/modules/jdk1.7.0_67
# export HBASE_MANAGES_ZK=true
(7)修改配置檔案/opt/modules/hbase-0.98.6-hadoop2/conf/regionservers。
hadoop-senior.ibeifeng.com
(8)進入/opt/modules/hbase-0.98.6-hadoop2/lib目錄,hbase-0.98.6預設hadoop-2.2.0,換成我使用的hadoop版本hadoop-2.5.0。刪除lib目錄下的hadoop-2.2.0版本的所有jar包(以hadoop開頭的所有jar包都刪除),上傳hadoop-2.5.0版本,並將zookeeper-3.4.6.jar替換為zookeeper-3.4.5.jar:
[[email protected] lib]$ rm -rf ./hadoop-annotations-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-auth-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-common-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-hdfs-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-mapreduce-client-app-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-mapreduce-client-common-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-mapreduce-client-core-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-mapreduce-client-jobclient-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-mapreduce-client-shuffle-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-yarn-api-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-yarn-client-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-yarn-common-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-yarn-server-common-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-yarn-server-nodemanager-2.2.0.jar
[[email protected] lib]$ rm -rf ./hadoop-client-2.2.0.jar
[[email protected] lib]$ rm -rf ./zookeeper-3.4.6.jar
(9)hbase啟動方式之一:進入/opt/modules/hbase-0.98.6-hadoop2目錄,啟動hbase程序,使用hbase自帶的zookeeper(我們已經將zookeeper-3.4.6.jar替換為zookeeper-3.4.5.jar):
hbase-0.98.6-hadoop2]$ bin/start-hbase.sh
檢視hbase程序:
[[email protected] hbase-0.98.6-hadoop2]$ jps
2813 HRegionServer
3162 Jps
2724 HMaster
2670 HQuorumPeer
2196 DataNode
2137 NameNode
(10)hbase啟動方式之二:啟動我們自己安裝的zookeeper,並分別啟動master和regionserver:
zookeeper-3.4.5]$ bin/zkServer.sh start
hbase-0.98.6-hadoop2]$ bin/hbase-daemon.sh start master
hbase-0.98.6-hadoop2]$ bin/hbase-daemon.sh start regionserver
檢視hbase程序:
[[email protected] hbase-0.98.6-hadoop2]$ jps
6283 QuorumPeerMain
6483 Jps
6334 HMaster
2196 DataNode
2137 NameNode
6431 HRegionServer
(11)停止hbase程序:
hbase-0.98.6-hadoop2]$ bin/stop-hbase.sh
5、HBase的基本使用
(1)啟動hbase shell命令列:
hbase-0.98.6-hadoop2]$ bin/hbase shell
(2)列出hbase中的表:
hbase(main):001:0> list
TABLE
2018-07-22 11:46:58,921 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
0 row(s) in 3.0660 seconds
=> []
(3)建立表,表名user,列簇info:
hbase(main):002:0> create 'user','info'
0 row(s) in 0.6260 seconds
=> Hbase::Table - user
(4)查詢表user的資訊:
hbase(main):003:0> describe 'user'
DESCRIPTION ENABLED
'user', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICA true
TION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL =
> 'FOREVER', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false
', BLOCKCACHE => 'true'}
1 row(s) in 0.0700 seconds
(5)向表user中插入資料。表名user,rowkey為10001,列簇info,列名name等,cell值為zhangsan:
hbase(main):004:0> put 'user','10001','info:name','zhangsan'
hbase(main):005:0> put 'user','10001','info:age','25'
hbase(main):006:0> put 'user','10001','info:sex','male'
hbase(main):007:0> put 'user','10001','info:address','shanghai'
HBase中的資料查詢有三種方式:
1)依據rowkey查詢,這是最快的,使用get命令;
2)依據範圍查詢,這是最常用的,使用scan range命令;
3)全表掃描,這是最慢的,使用scan命令。
(6)查詢user表中列簇為10001的資訊:
hbase(main):008:0> get 'user','10001'
COLUMN CELL
info:address timestamp=1532231767144, value=shanghai
info:age timestamp=1532231729180, value=25
info:name timestamp=1532231687833, value=zhangsan
info:sex timestamp=1532231746853, value=male
4 row(s) in 0.0300 seconds
查詢user表中列簇為10001,列名為name的資訊:
hbase(main):009:0> get 'user','10001','info:name'
COLUMN CELL
info:name timestamp=1532231687833, value=zhangsan
1 row(s) in 0.0160 seconds
(7)插入rowkey為10002的資訊:
hbase(main):010:0> put 'user','10002','info:name','wangwu'
hbase(main):011:0> put 'user','10002','info:age','30'
hbase(main):012:0> put 'user','10002','info:tel','25354212'
hbase(main):013:0> put 'user','10002','info:qq','232523551'
全表掃描user表:
hbase(main):014:0> scan 'user'
ROW COLUMN+CELL
10001 column=info:address, timestamp=1532231767144, value=shanghai
10001 column=info:age, timestamp=1532231729180, value=25
10001 column=info:name, timestamp=1532231687833, value=zhangsan
10001 column=info:sex, timestamp=1532231746853, value=male
10002 column=info:age, timestamp=1532232249589, value=30
10002 column=info:name, timestamp=1532232223162, value=wangwu
10002 column=info:qq, timestamp=1532232294714, value=232523551
10002 column=info:tel, timestamp=1532232273419, value=25354212
2 row(s) in 0.0450 seconds
(8)插入user表中列簇為10003的資訊:
hbase(main):015:0> put 'user','10003','info:name','zhaoliu'
(9)範圍查詢:查詢user表中的name列和age列的資訊:
hbase(main):016:0> scan 'user',{COLUMNS => ['info:name','info:age']}
ROW COLUMN+CELL
10001 column=info:age, timestamp=1532231729180, value=25
10001 column=info:name, timestamp=1532231687833, value=zhangsan
10002 column=info:age, timestamp=1532232249589, value=30
10002 column=info:name, timestamp=1532232223162, value=wangwu
10003 column=info:name, timestamp=1532232516020, value=zhaoliu
3 row(s) in 0.0410 seconds
(10)範圍查詢:查詢user表中起始rowkey為10002開始的行資訊:
hbase(main):017:0> scan 'user', {STARTROW=>'10002'}
ROW COLUMN+CELL
10002 column=info:age, timestamp=1532232249589, value=30
10002 column=info:name, timestamp=1532232223162, value=wangwu
10002 column=info:qq, timestamp=1532232294714, value=232523551
10002 column=info:tel, timestamp=1532232273419, value=25354212
10003 column=info:name, timestamp=1532232516020, value=zhaoliu
2 row(s) in 0.0340 seconds
(11)刪除user表中rowkey為10001,列簇為info,列名為name的列資料:
hbase(main):018:0> delete 'user','10001','info:name'
(12)全表掃描user表:
hbase(main):019:0> scan 'user'
ROW COLUMN+CELL
10001 column=info:address, timestamp=1532231767144, value=shanghai
10001 column=info:age, timestamp=1532231729180, value=25
10001 column=info:sex, timestamp=1532231746853, value=male
10002 column=info:age, timestamp=1532232249589, value=30
10002 column=info:name, timestamp=1532232223162, value=wangwu
10002 column=info:qq, timestamp=1532232294714, value=232523551
10002 column=info:tel, timestamp=1532232273419, value=25354212
10003 column=info:name, timestamp=1532232516020, value=zhaoliu
3 row(s) in 0.0340 seconds
(13)刪除user表中rowkey為10001的全部資訊:
hbase(main):020:0> deleteall 'user','10001'
全表掃描user表:
hbase(main):021:0> scan 'user'
ROW COLUMN+CELL
10002 column=info:age, timestamp=1532232249589, value=30
10002 column=info:name, timestamp=1532232223162, value=wangwu
10002 column=info:qq, timestamp=1532232294714, value=232523551
10002 column=info:tel, timestamp=1532232273419, value=25354212
10003 column=info:name, timestamp=1532232516020, value=zhaoliu
2 row(s) in 0.0230 seconds
(14)禁用user表:
hbase(main):022:0> disable 'user'
(15)啟用user表:
hbase(main):023:0> enable 'user'
(16)刪除user表:
hbase(main):024:0> drop 'user'
(17)退出hbase shell命令列:
hbase(main):025:0> exit
相關推薦
【Kafka】kafka環境搭建及使用
Kafka是一個分散式的、可分割槽的、可複製的訊息系統。它提供了普通訊息系統的功能,但具有自己獨特的設計 Kafka將訊息以topic為單位進行歸納。將向Kafka topic釋出訊息的程式成為producers.將預訂topics並消費訊息的程式成為consumer.K
【docker】docker環境搭建及使用
理論部分: 1.docker的三個概念:Docker是一個開源的引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器 Docker 映象 - Docker images: Docker 映象是 Docker 容器執行時的只讀模板 Docker 倉庫 - D
【HBase】HBase的環境搭建及基本使用
1、HBase體系結構 2、HBase功能 HBase是一種Hadoop 資料庫,用於儲存資料和檢索資料。與RDBMS 相比,HBase可以儲存海量資料,資料條目數可達上億條,可以準實時檢索,檢索的速度達到秒級別。HBase是基於HDFS的,具有HDFS的優勢
【Flutter 系列——1】Flutter環境搭建及配置這一篇就夠了(Windows)
最近正式入坑Flutter,首先從環境搭建開始,看了網上好多關於Windows環境搭建的資料,基本都是按官方文件寫的,看完的感受是,還不如直接去看官方文件。 本文主要總結我實際搭建的過程,最後發現不一定按網上那些部落格或者官方文件寫的來也可以搭建成功。 總的來說需要的
【Linux】LAMP環境搭建(簡易版)
freetype 軟件 系統 解壓縮 net done .gz 輔助 one 一. 輔助軟件包安裝 準備工作:1.Linux系統準備 恢復快照(初始化安裝) 設置IP 關閉SELINUX 配置yum源 2.yum -y install gcc
ionic3 入門【1】建立Ionic專案及基本配置
製作手機app基本配置 要建立Ionic專案,您需要安裝最新版本的CLI和Cordova。 npm install -g ionic cordova 完成之後,建立第一個Ionic應用程式: ionic start MyIonicProject tabs|sidemenu|
【Python3.6+Django2.0+Xadmin2.0系列教程一】環境搭建及項目創建
添加 tran div 先來 ans 好的項目 tty 文件 mac 由於工作需要,接觸了大半年時間的Django+xadmin框架,一直沒空對這塊對進行相關的梳理。最近在同事的慫恿下,就在這分享下筆者的學習及工作經驗吧。 好了,話不多說,下面開始進入正題: 環境
高併發-【搶紅包案例】之一:SSM環境搭建及復現紅包超發問題
概述 電商的秒殺、搶購,春運搶票,微信QQ搶紅包,從技術的角度來說,這對於Web 系統是一個很大的考驗. 高併發場景下,系統的優化和穩定是至關重要的. 網際網路的開發包括 Java 後臺、 NoSQL、資料庫、限流、CDN、負載均衡等內容, 目前並沒有權威性
【HBase】HBase各功能元件、整合MapReduce的方式及資料遷移
1、HBase體系架構 各個功能元件闡述如下: (1)Client 整個HBase叢集的訪問入口; 使用HBase RPC機制與HMaster和HRegionServer進行通訊; 與HMaster進行通訊進行管理類操作; 與HRegionServer進行資
【MyBatis】3:MyBatis環境搭建及入門程式示例
MyBatis開發環境搭建: 1 建立Java Project 使用什麼IDE無所謂,eclipse、myeclipse、idea等等都可以,jdk版本好像也沒什麼限制,只是有些東西低版本的不支援,比如MyBatis的核心xml
Spark+ECLIPSE+JAVA+MAVEN windows開發環境搭建及入門例項【附詳細程式碼】
前言 本文旨在記錄初學Spark時,根據官網快速入門中的一段Java程式碼,在Maven上建立應用程式並實現執行。 首先推薦一個很好的入門文件庫,就是CSDN的Spark知識庫,裡面有很多spark的從入門到精通的形形色色的資料, 1.開發軟體恭喜你,拿到spark駕考
【Node JS環境搭建及sublime Text 3配置Node Js環境】
1.Node Js 安裝(windows環境下) 安裝後進入控制檯輸入node -v即可檢視node js的版本,能正常檢視則表示安裝成功。如下圖所示: 2. sublime text 3安裝及配置nodejs環境 安裝好sublime t
hbase:偽分佈環境搭建及常見錯誤解決方法
配置注意事項 1、 ssh 必須安裝ssh , sshd 也必須執行,這樣Hadoop的指令碼才可以遠端操控其他的Hadoop和HBase程序。ssh之間必須都打通,不用密碼都可以登入,詳細方法可以Google一下 ("ssh passwordless login").
HBase單機環境搭建及入門
一、安裝環境 1、 VM:VMware-workstationl-v10 2、 OS:centos6.5 3、 JDK:jdk1.8.0_91 4、 HBase:hbase-0.98.20.tar.gz 二、下載並解壓HBase發行包 1、本文使用HBase穩定版:hbas
【Qt學習筆記之一】初識Qt、環境搭建及hello world的實現
初識Qt Qt,簡單來說就是一個跨平臺的C++圖形使用者介面應用程式開發框架。因此,相比很多開發框架,Qt的特點更多體現在GUI程式的開發上。我們平時使用的QQ(介面越來越花哨)、微信、瀏覽器等等,只要是你作為使用者,能夠看到一個介面去操作,那麼它就可以
kotlin web開發教程【一】從零搭建kotlin與spring boot開發環境
1.8 jre cond utf8 erro 2.0 .com 就會 一個tomcat IDEA中文輸入法的智能提示框不會跟隨光標的問題我用的開發工具是IDEA這個版本的IDEA有一個問題;就是中文輸入法的智能提示框不會跟隨光標解決這個問題的辦法很簡單,只有在安裝目錄下把J
【C++】向量(vector) 基本使用方法及注意事項
介紹: 向量(Vector)是一個封裝了動態大小陣列的順序容器(Sequence Container)。跟任意其它型別容器一樣,它能夠存放各種型別的物件。可以簡單的認為,向量是一個能夠存放任意型別的動態陣列。 特點: 1.順序序列 順序容器中的元素按照嚴格的線性順序排序。可以通過元素
HBase+Hadoop+Zookeeper環境搭建的錯誤排查
確認hbase下的hbase-site.xml中的hbase.rootdir的埠和hadoop下的core-site.xml中的fs.defaultFS共用一個埠,否則在進入hbase shell的時候輸入list會報Can't get master address from Z
【ERP】安裝pip,及odoo環境配置
pip 是一個現代的,通用的 Python 包管理工具。提供了對 Python 包的查詢、下載、安裝、解除安裝的功能 安裝pip 1、進入Python安裝目錄並找到Python應用程式 2、拖動Python主應用程式到命令列視窗,直至命令列視窗增加了地址 3、在命令列視窗輸入“空
【核心】四、搭建完整的mini2440開發板驅動開發環境(仿照JZ2440驅動開發環境搭建)
一、mini2440開發板驅動環境搭建: 《mini2440使用者手冊》說明原文>>注意:本開發板提供的 linux 核心並不能直接用於 u-boot ,因為我們公司是不使用u-boot的,並且對其各個引數設定並不瞭解,關於 U-Boot 的使用方法使用者可以參考網上的資料。 我了個。。。鑑於