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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Hadoop集群的基本操作(二:HBase的基本操作)

發布時間:2023/11/27 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop集群的基本操作(二:HBase的基本操作) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗

目的

要求

?

目的:

1、HBase的基本應用

要求:

  1. 完成HBase的高可用完全分布模式的安裝;
  2. HBase的相關服務進程能夠正常的啟動;
  3. HBase控制臺能夠正常使用;
  4. 表創建、數據查詢等數據庫操作能夠正常進行;

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  1. 五臺獨立PC式虛擬機;
  2. 主機之間有有效的網絡連接;
  3. 每臺主機內存2G以上,磁盤50G。;
  4. 所有主機上安裝CentOS7-64位操作系統。;
  5. 所有主機已完成網絡屬性配置;
  6. 所有主機已安裝JDK;
  7. 已完成Zookeeper集群的安裝和部署;
  8. 已完成Hadoop集群的安裝配置;
  9. 已完成HBase數據庫的安裝;

?

軟件版本:

??????? 選用HBase的1.2.3版本,軟件包名hbase-1.2.3-bin.tar.gz

?

集群規劃:

????? ????* HBase有主節點和Region節點2類服務節點,高可用完全分布模式中需要滿足主節點有備用的基本要求,所以需要兩臺或以上的主機作為主節點,而完全分布模式中需要滿足Region有備份和數據處理能夠分布并行的基本要求,所以要求兩臺或以上的主機作為Region節點,具體規劃如下:

主機名

IP地址

服務描述

Cluster-01

192.168.10.111

HBase主控節點

Cluster-02

192.168.10.112

HBase備用主控節點

Cluster-03

192.168.10.113

HBase Region服務

Cluster-04

192.168.10.114

HBase Region服務

Cluster-05

192.168.10.115

HBase Region服務

?

?

練習內容

步驟一:HBase集群的啟動

注:1、該項的所有操作步驟使用專門用于集群的用戶admin進行;

? ? ? ?2、啟動HBase集群之前首先確保Zookeeper集群已被開啟狀態(五臺虛擬主機)。Zookeeper的啟動需要分別在每個計算? 機的節點上手動啟動。如果家目錄下執行啟動報錯,則需要進入Zookeeper/bin目錄執行啟動命令;

? ? ? ? 3、啟動HBase集群之前首先確保Hadoop集群已被開啟狀態(五臺虛擬主機)Hadoop和HBase只需要在主節點執行啟動命令;

?

1、啟動Zookeeper集群:

命令:

???? ?$zkServer.sh status????? //查看Zookeeper狀態

????? $zkServer.sh start?????? //啟動Zookeeper

?

2、在主節點使用此命令,查看java進程信息,若有名為“NameNode”、“ResourceManager”、“DataNode”和“NodeManager”這幾個進程,則表示Hadoop集群的主節點及數據節點啟動成功。

命令:

???? $jps??? ??????????????????//查看進程狀態

???? $start-all.sh???????????? //啟動Hadoop

???? $yarn-daemon.sh start resourcemanager //備用主節點執行

主節點及備用主節點:

通信節點:

3、確定Hadoop集群已啟動狀態,然后再主節點使用此命令,啟動HBase集群;

命令:

???? $start-hbase.sh

?

4、如果每項啟動出錯,那么一次檢查相應的配置文件和環境變量。

$source ~/.bash_profile

$echo $ZOOKEEPER_HOME

$echo $PATH

$echo $HADOOP_HOME

$echo $PATH

$echo $HBASE_HOME

$echo $PATH

5、使用命令“ssh 目標主機名或IP地址”遠程登錄到集群中所有Region節點主機,在Region節點使用命令“jps”查看java進程信息,若有名為“HRegionServer”的進程,則表示HBase集群的Region節點啟動成功。

?

步驟二:HBase基本命令練習(DDL/DML)

??

?????? 示例:某位學生成績表scores

?????

name

grad

course

math

art

Tom

5

97

87

Jim

4

89

80

1、在Cluster-01主機上使用admin用戶進入HBase命令界面;

命令:

#su -admin

$hbase shell

?

2、新建表空間

???? 命令:

??????? ??> create_namespace ‘testDB’

????????? >list_namespace

????????? >drop_namespace ‘testDB’????? //表空間為空才能刪除

備注:于建表,和RDBMS類似,HBase也有namespace的概念,可以指定表空間創建表,也可以直接創建表,進入default表空間。HBase系統默認定義了兩個缺省的namespace:hbase:系統內建表,包括namespaceImeta表default:用戶建表時未指定namespace的表都創建在此

3、建立一個表和列族(默認表空間)

???? 命令:

????????? >create ‘scores’,‘grade’, ‘course’

????????? >list

????????? >describe ‘scores’

????

??? 練習:

???????? >create ‘testDB:scores’,‘grade’,‘course’

?

?4、按設計的表結構插入值

命令:??

??   >put ‘scores’,’Tom’,’grade:’,’5’>put ‘scores’,’Tom’,’course:math’,’97’>put ‘scores’,’Tom’,’course:art’,’87’>put ‘scores’,’Jim’,’grade:’,’4’>put ‘scores’,’Jim’,’course:math’,’89’>put ‘scores’,’Jim’,’course:art’,’80’>put ‘scores’,’Jim’,’course:’,’90’>put ‘scores’,’Jim’,’course:’,’91’

代碼解析:

??? Hbase>put ‘t1’,’r1’,’c1’,’value’,’ts1’

t1指表名,r1指行鍵名,c1指列名,value指單元格值,ts1指時間戳,一般都省略掉了。

?

5、根據鍵值查詢數據

?? 命令:

??????? >get ’scores’,’Jim’

??????? >get ‘scores’,’Jim’,’grade’

?? HBase的shell操作,一個大概順序就是操作關鍵詞后跟表明,行名,列名這樣的一個順序,如果有其他條件在用花括號加上。

???? 練習:

????????? >get ’scores’,’Tom’

6、掃描所有數據

??? ?命令:

????????? >scan ‘scores’

???? 掃描指定列:

????????? >scan ‘scores’,{COLUMNS => [‘grade’]}

???? 練習:

????????? >scan ‘scores’,[‘grade’]

7、統計行數

???? 命令:

????????? >count ‘scores’

?8、刪除指定數據

命令:

???? >get ‘scores’,’Jim’

???? >delete ‘scores’,’Jim’,’course:art’

???? >get ‘scores’.’Jim’

如果需要進行全表刪除操作,就是用truncate命令,其實沒有直接的全表刪除命令,這命令也是disable,drop,create三個命令組合出來的。

?9、刪除整行

命令:

??? ?>get ‘scores’,’Jim’

???? >deleteall ‘scores’,’Jim’

???? >get ‘scores’,’Jim’

練習:

??? ?>get ‘scores’,’Tom’

???? >deleteall ‘scores’,’ Tom’

???? >get ‘scores’,’ Tom’

?10、將整張表清空

???? 命令:

????????? >truncate ‘scores’

?

11、表的刪除操作

???? a)先進行disable和enable

?????? 命令:

??????????? >disable ‘scores’

??????????? >enable ‘scores;

?????? 很多操作需要先暫停表的可用性,比如刪除表操作,disable_all和enable_all能夠操作更多的表

???? b)表的刪除

???? ??命令:

????????? ??>disable ‘scores’

??????????? >drop ‘scores’

??????????? >scan ‘scores’

步驟三:HBase練習作業(DDL/DML)

?

name

grad

Course

yingyu

shuxun

daolun

Yewei

1

99

92

98

Maxiao

1

94

97

99

Zhaoying

1

95

96

89

yuanyang

1

93

95

97

?

?

?? 命令:

>create?'scores','grade','course'
>list
>put?'scores','yewei','grade:','1'
>put?'scores','yewei','course:yingyu','99'
>put?'scores','yewei','course:shuxue','92'
>put?'scores','yewei','course:dailong','98'
>put?'scores','maxiao','grade:','1'
>put?'scores','maxiao','course:yingyu','94'
vput?'scores','maxiao','course:shuxue','97'
>put?'scores','maxiao','course:dailong','99'
>put?'scores','zhaoying','grade:','1'
>put?'scores','zhaoying','course:yingyu','95'
>put?'scores','zhaoying','course:shuxue','96'
>put?'scores','zhaoying','course:dailong','89'
>put?'scores','yuanyang','grade:','1'
>put?'scores','yuanyang','course:yingyu','93'
>put?'scores','yuanyang','course:shuxue','95'
>put?'scores','yuanyang','course:dailong','97'

? 查看插入的信息:

????? 命令:

?????????? >scan ‘scores’

?

出現的問題與解決方案

排錯一:

出現問題:Zookeeper啟動不正常;

原 ???因:查看Zookeeper日志,發現錯誤信息:

ClientCnxn$SendThread@966] -?Opening socket connection to server slave1. Will not attempt to authenticate using SASL

通過百度搜索發現集群環境中環境變量為啟動。

解決方案:啟動每臺主機的環境變量,在admin用戶下使用命令

“source ~/.bash_profile”然后再查看環境變量。

$echo $ZOOKEEPER_HOME

$echo $PATH

$echo $HADOOP_HOME

$echo $PATH

$echo $HBASE_HOME

$echo $PATH

?

知識拓展

1、HBase是什么?

Apache HBase是運行在Hadoop集群上的數據庫。為了實現更好的可擴展性(scalability),HBase放松了對ACID(數據庫的原子性,一致性,隔離性和持久性)的要求。因此HBase并不是一個傳統的關系型數據庫。另外,與關系型數據庫不同的是,存儲在HBase中的數據也不需要遵守某種嚴格的集合格式,這使得HBase是用來存儲結構不嚴格的數據的理想工具。

HBase在大數據應用的架構中應用非常廣泛。但是基于其與關系型數據庫迥異的設計模式,實現這些應用也與基于關系型數據庫來實現非常不同。下文將會對比HBase和關系型數據庫,并淺析HBase的特性。

?

2、關系型數據庫與HBase的對比。

2.1、先了解一下關系型數據庫的優勢和缺點。

  • 關系型數據庫提供了標準的數據持久性模型
  • SQL語言是事實上的數據操作標準語言
  • 關系型數據庫內置了并發數據操作的管理機制
  • 關系型數據庫提供全面的數據操作工具

2.2、HBase的高效,分布式,可擴展性。

由于HBase在設計上不支持關系和Join這樣的概念,需要一起查詢的數據就被存在一起。因此也就避免了關系型數據庫的一些局限性。下圖表現了HBase和關系型數據庫在數據存儲模型上的不同。

由于HBase將所有需要一起查詢到數據存儲在一起這一特性,HBase集群就自然能夠根據key來組織數據。在水平分割的時候,key值的范圍就可以被用來分割數據。每一個服務器存儲全部數據的一個子集。同時分布式的數據還可以被同時訪問。這大大增強了HBase的可擴展性。HBase實際上是Google Big Table的一個實現。Big Table是Google提出的一個用來存儲大規模數據的一個分布式系統。

HBase是基于Column family data store的理念設計的:每一行根據一個row key索引。也就是我們用來查詢的主鍵。同時每一行中有若干column family。每一個column family中有若干相關的column。如下圖所示。

HBase是一種Hadoop數據庫,經常被描述為一種稀疏的,分布式的,持久化的,多維有序映射,它基于行鍵、列鍵和時間戳建立索引,是一個可以隨機訪問的存儲和檢索數據的平臺。HBase不限制存儲的數據的種類,允許動態的、靈活的數據模型,不用SQL語言,也不強調數據之間的關系。HBase被設計成在一個服務器集群上運行,可以相應地橫向擴展。

?

3、HBase的基本操作。

a)Java友好提供了全面的java客戶端庫;

b)HBase中所有數據都是作為原始數據,使用數組的形式存儲;

c)行健是唯一標識符,類似數據庫的主鍵;

d)表中確定一個單元的坐標是[rowkey,cloumn fanmily,column qualifier];

e)5個基本命令來訪問HBase;Get(讀)、Put(寫)、Delete(刪除)、Scan(掃描)、Increment(遞增);

f)HFile是存儲文件,對應列族,一個列族可以有多少HFile文件,但是一個HFile不能存多個列族的數據;

g)寫的操作會寫入預寫式日志(WAL)和稱為MemStore的內存寫入緩沖區,當兩者都確認寫入后才認為寫的動作成功完成;

h)不建議禁用WAL,禁用后RegionServer故障時會導致數據丟失;

4、使用瀏覽器訪問https://192.168.100.111:16010查看主節點HBase

總結

以上是生活随笔為你收集整理的Hadoop集群的基本操作(二:HBase的基本操作)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:Hadoop集群的基本操作(二:HBase的基本操作)