⑴ 如何清空hbase中meta中無效的數據
由於操作HBase比較粗獷,有時直接在Hadoop中刪除hbase對應的表,導致.META.中還記錄著表項,但實際存儲空間中卻沒找到。這樣就會導致HBase的log中總在報錯,說找不到xxx表,而且log在飛快增長。
辦法是刪除.META.中對應表項。
原來,.META.和-ROOT-其實也是hbase的兩個特殊的表,這就是說,我們可以scan、delete等對其進行操作。
1. scan 『.META.'
可以看到,本來已經刪除的表,還在這里存在記錄。而且每個表,會分別對應3行記錄。
2. delete對應的行。
刪除.META.表項與刪除table中一行一樣,輸入:
delete '.META.',row,column
delete後加上3個參數,分別是:表、行、列(如 a:b)就能刪除對應行。
之後重啟hbase,報錯就會消失。
⑵ hbase 什麼時候會刪除舊的數據
過了TTL(有效期)時期就會自動刪除
⑶ hbase是怎樣刪除和修改數據的,和oracle這類傳統的rdbms有什麼區別
簡單來說,傳統關系型資料庫的修改與刪除,可以快速通過主鍵、列或索引直接鎖定到某一行或某些行,進行物理刪除。
而對於Hbase來說,受到hdfs文件系統的局限(hdfs文件系統不能修改,添加也很不方便),進行CRUD的操作就會變得相對復雜。
Hbase的修改,是根據某個行鍵添加一行數據,並未這行數據生成一個較新的時間戳來實現,每個行鍵都會對應多個時間戳的數據,那麼最新的時間戳就是最終修改後的內容。
而刪除則是通過標記來實現,如果要刪除某行記錄,Hbase會添加一個帶有刪除標記的行,通過這個刪除標記來辨認該行建的數據是否刪除。
Hbase與關系型資料庫的區別:
1、場景
Hbase是面向列的資料庫,適合大量的插入的同時又要具備不俗的讀功能,而Oracle或其他關系型資料庫適合處理比較復雜的業務關系或事務處理,而且,在數據在一定量級下都會有良好的表現,並不是所有業務的數據壓力都會發生比較極端的情況。
2、索引
Hbase只能做主鍵索引,而關系型資料庫可以根據需求不同加入適合的索引機制,供用戶查詢。
3、瓶頸
Hbase的瓶頸是硬碟的傳輸速度,Oracle的瓶頸是硬碟的尋道時間(可以看做是硬碟的轉數)。
4、業務
Hbase適合按照時間排序的業務,而Oracle或其他關系型資料庫應用比較廣泛,如OLTP或OLAP
⑷ 而依賴HDFS的HBase如何完成數據的增刪改查
早期版本的HDFS不支持任何的文件更新操作,一旦一個文件創建、寫完數據、並關閉之後,這個文件就再也不能被改變了。為什麼這么設計?是為了與MapRece完美配合,MapRece的工作模式是接受一系列輸入文件,經過map和rece處理,直接產生一系列輸出文件,而不是在原來的輸入文件上做原位更新。為什麼這么做?因為直接輸出新文件比原位更新一個舊文件高效的多。
在HDFS上,一個文件一直到它的close方法成功執行之後才會存在,才能被其他的client端所看見。如果某個client端在寫文件時或者在close文件時失敗了,那麼這個文件就不會存在,就好像這個文件從來沒寫過,唯一恢復這個文件的方法,就是從頭到尾重新再寫一遍。
⑸ 如何修改hbase
刪除數據通過刪除列或列簇 沒有修改數據,要更改數據,將對應行鍵、列簇、列下的值重新寫入就行了。他虎同時保存多個時間版本的值,使用的時候直接取最新的數據就行了。
⑹ hbase清理數據 用setTimeRange 方法怎麼腳本實現
HBase是Google Bigtable的開源實現,它利用Hadoop HDFS作為其文件存儲系統,利用Hadoop MapRece來處理HBase中的海量數據,利用Zookeeper作為協同服務。
1. 簡介
HBase是一個分布式的、面向列的開源資料庫,源於google的一篇論文《bigtable:一個結構化數據的分布式存儲系統》。HBase是Google Bigtable的開源實現,它利用Hadoop HDFS作為其文件存儲系統,利用Hadoop MapRece來處理HBase中的海量數據,利用Zookeeper作為協同服務。
2. HBase的表結構
HBase以表的形式存儲數據。表有行和列組成。列劃分為若干個列族/列簇(column family)。
Row Key column-family1 column-family2 column-family3
column1 column2 column1 column2 column3 column1
key1
key2
key3
如上圖所示,key1,key2,key3是三條記錄的唯一的row key值,column-family1,column-family2,column-family3是三個列族,每個列族下又包括幾列。比如column-family1這個列族下包括兩列,名字是column1和column2,t1:abc,t2:gdxdf是由row key1和column-family1-column1唯一確定的一個單元cell。這個cell中有兩個數據,abc和gdxdf。兩個值的時間戳不一樣,分別是t1,t2, hbase會返回最新時間的值給請求者。
這些名詞的具體含義如下:
(1) Row Key
與nosql資料庫們一樣,row key是用來檢索記錄的主鍵。訪問hbase table中的行,只有三種方式:
(1.1) 通過單個row key訪問
(1.2) 通過row key的range
(1.3) 全表掃描
Row key行鍵 (Row key)可以是任意字元串(最大長度是 64KB,實際應用中長度一般為 10-100bytes),在hbase內部,row key保存為位元組數組。
存儲時,數據按照Row key的字典序(byte order)排序存儲。設計key時,要充分排序存儲這個特性,將經常一起讀取的行存儲放到一起。(位置相關性)
注意:
字典序對int排序的結果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要保持整形的自然序,行鍵必須用0作左填充。
行的一次讀寫是原子操作 (不論一次讀寫多少列)。這個設計決策能夠使用戶很容易的理解程序在對同一個行進行並發更新操作時的行為。
(2) 列族 column family
hbase表中的每個列,都歸屬與某個列族。列族是表的chema的一部分(而列不是),必須在使用表之前定義。列名都以列族作為前綴。例如courses:history , courses:math 都屬於 courses 這個列族。
訪問控制、磁碟和內存的使用統計都是在列族層面進行的。實際應用中,列族上的控制許可權能幫助我們管理不同類型的應用:我們允許一些應用可以添加新的基本數據、一些應用可以讀取基本數據並創建繼承的列族、一些應用則只允許瀏覽數據(甚至可能因為隱私的原因不能瀏覽所有數據)。
(3) 單元 Cell
HBase中通過row和columns確定的為一個存貯單元稱為cell。由{row key, column( =<family> + <label>), version} 唯一確定的單元。cell中的數據是沒有類型的,全部是位元組碼形式存貯。
(4) 時間戳 timestamp
每個cell都保存著同一份數據的多個版本。版本通過時間戳來索引。時間戳的類型是 64位整型。時間戳可以由hbase(在數據寫入時自動 )賦值,此時時間戳是精確到毫秒的當前系統時間。時間戳也可以由客戶顯式賦值。如果應用程序要避免數據版本沖突,就必須自己生成具有唯一性的時間戳。每個cell中,不同版本的數據按照時間倒序排序,即最新的數據排在最前面。
為了避免數據存在過多版本造成的的管理 (包括存貯和索引)負擔,hbase提供了兩種數據版本回收方式。一是保存數據的最後n個版本,二是保存最近一段時間內的版本(比如最近七天)。用戶可以針對每個列族進行設置。
3. HBase shell的基本用法
hbase提供了一個shell的終端給用戶交互。使用命令hbase shell進入命令界面。通過執行 help可以看到命令的幫助信息。
以網上的一個學生成績表的例子來演示hbase的用法。
name grad course
math art
Tom 5 97 87
Jim 4 89 80
這里grad對於表來說是一個只有它自己的列族,course對於表來說是一個有兩個列的列族,這個列族由兩個列組成math和art,當然我們可以根據我們的需要在course中建立更多的列族,如computer,physics等相應的列添加入course列族。
⑺ hbase2.0強制刪除一張表
由於內網測試環境hbase並沒有安裝「SNAPPY」壓縮,而建表時執行了
alter 'TrojanInfo', {NAME => 'i', COMPRESSION => 'SNAPPY'}
強制刪除表:
1、強制刪除該表在hdfs上的所有文件(路徑根據實際情況而定):
./hadoop fs -rmr /hbase/TrojanInfo
2、刪除該表在HBase系統表.META.中的記錄:
A、首先從.META.中查詢出表 TrojanInfo在.META.中的rowkey,這可以通過scan '.META.',然後手動篩選;
B、然後刪除該rowkey下的3個欄位(假設查詢出的rowkey為TrojanInfo,,1361433390076..)
delete 'TrojanInfo','TrojanInfo,,1361433390076..','info:server'
delete 'TrojanInfo','TrojanInfo,,1361433390076..','info:serverstartcode'
delete 'TrojanInfo','TrojanInfo,,1361433390076..','info:regioninfo'
C、重啟hbase即可刪除表 TrojanInfo
⑻ hbase是怎樣刪除和修改數據的
hbase提供了對hbase進行一系列的管理涉及到對表的管理、數據的操作java
api。
常用的api操作有:
1、
對表的創建、刪除、顯示以及修改等,可以用hbaseadmin,一旦創建了表,那麼可以通過htable的實例來訪問表,每次可以往表裡增加數據
⑼ hbase刪除標簽的數據什麼時候徹底刪除
可以使用如下兩個jquery方法來實現:$(selector).remove(); // 除被選元素,包括所有文本和子節點$(selector).attr(); // 返回被選元素的屬性值。實例演示:點擊圖標刪除li,同時獲取被刪除圖片的信息創建Html元素點擊刪除圖標刪除li,同時獲取被刪除圖片的信息:設置css樣式div.box{width:300px;padding:20px;margin:20px;border:4px dashed #ccc;}div.box>span{color:#999;font-style:italic;}div.content{width:250px;margin:10px 0;padding:20px;border:2px solid #ff6666;}li{list-style: none;}img.show_i{width:100px;}img.del_i{width:20px;cursor:pointer;}編寫jquery代碼$(function(){ $("ul#del img.del_i").click(function() {var name = $(this).siblings('img').attr("src"); // 被刪除圖片名稱$(this).parent("li").remove(); // 刪除父元素lialert(name);});});觀察效果初始樣式點擊刪除第二個li