1. 程式人生 > >hbase-0.98學習筆記

hbase-0.98學習筆記

hbase-0.98版已經出了,主要的改變有以下幾點:
1、修復了一些bug,添加了cell視覺化標籤、cell ACLs和透明的伺服器端加密。
2、一些效能改進包括:預寫式日誌執行緒模型,在高負載下提高了事務吞吐量;反向掃描;在快照檔案上的mapreduce;striped compaction
HBase 0.98主要基於單元格的安全在安全性上趨同於Apache Accumulo(和hbase類似,參照bigtable,基於hadoop,zookeeper和thrift構建)
許可權控制:table -> column family -> cell.

R (read), W (write), C (create),  A (admin). 

Permission Operation
Read Get
Exists
Scan
Write Put
Delete
Lock/UnlockRow
IncrementColumnValue
CheckAndDelete/Put
Flush
Compact
Create Create
Alter
Drop
Admin Enable/Disable
Snapshot/Restore/Clone
Split
Major Compact
Grant
Revoke
Shutdown
許可權的授予範圍如下:
create和admin許可權僅僅在表的範圍內有效
表:
read:使用者能從表中的任何列簇讀取資料
write:使用者可以寫入資料到表中的任何列簇中
create:使用者可以更改表的屬性:add,alter或者drop列簇,還可以drop一個表
admin:使用者可以更改表屬性:add,alter或者drop列簇;還可以enable或者disable,drop一個表,還可以出發region的重新分配和定位。
列簇:
read:使用者能從列簇中讀資料
write:使用者可以寫資料到列簇中
hbase中有一個隱含的超級使用者,在hbase的configuration檔案中配置。類似於linux系統中的root。僅僅超級使用者才被允許建立表,開啟或者關閉balancer或者進行其他影響全域性的操作。超級使用者負責分配所有資源。
hbase的表有了新的元資料屬性:owner,指明那個使用者擁有該表。預設的擁有者是建立該表的使用者。一個給定時間僅僅有一個使用者能擁有該表,一個表的擁有者有對於該表操作的所有許可權。
伺服器端的訪問控制配置:
      <property>
        <name>hbase.coprocessor.master.classes</name>
        <value>org.apache.hadoop.hbase.security.access.AccessController</value>
      </property>
      <property>
      <name>hbase.coprocessor.region.classes</name>
        <value>org.apache.hadoop.hbase.security.token.TokenProvider,
        org.apache.hadoop.hbase.security.access.AccessController</value>
      </property>
使用Tags進行cell級別的訪問控制
0.98引入了tags機制實現了cell級別的訪問控制。可以使用如下API來設定cell的ACLs。
Mutation.setACL(String user, Permission perms)
Mutation.setACL(Map<String, Permission> perms)
例如,對於使用者user1提供一個讀許可權,則可以進行如下設定:
put.setACL(“user1”, new Permission(Permission.Action.READ))
表和列簇的ACL優先權要高於cell級別的ACL。為了應用cell級別的優先權,需要使用如下API:
Mutation.setACLStrategy(boolean cellFirstStrategy)
例如,對於put操作設定,如下:
put.setACLStrategy(true);
另外,要記得想要正常使用這個特性,還需要將HFile V3開啟,在configuration檔案中做如下設定:
  <property>
   <name>hfile.format.version</name>
   <value>3</value>
  </property>
注意:ACL的刪除沒有任何影響。ACLs對當前Put做的操作不會印象到之前的Put。
通過shell進行訪問控制
許可權授予:
grant <user|@group> <permissions> [ <table> [ <column family> [ <column qualifier> ] ] ]
<user|@group>代表使用者或組別(以 '@'開始),組別通過hadoop組別對映服務來建立和管理。
<permissions> 是0或1個字母從"RWCA"中選取,分別代表: READ('R'), WRITE('W'), CREATE('C'), ADMIN('A').
許可權收回:
revoke <user|@group> [ <table> [ <column family> [ <column qualifier> ] ] ]
許可權更改:
alter 'tablename', {OWNER => 'username|@group'}
許可權檢視:
檢視一個使用者對某個表的許可權可以使用如下命令:
user_permission <table>
安全的bulkload:
bulkload有一個安全模式,客戶端傳輸檔案所有者的資訊是使用mapreduce任務到hbase的。安全的bulkload是通過協處理器(coprocessor),命名為SecureBulkLoadEndpoint。staging使用目錄,"hbase.bulkload.staging.dir",預設為/tmp/hbase-staging/。
演算法如下:
1、建立一個hbase擁有者的目錄,/tmp/hbase-staging/並設定許可權(-rwx--x--x, 711)
2、使用者寫入輸出資料到他的安全輸出目錄 /user/foo/data
3、呼叫hbase建立一個私密目錄,將其許可權設定為readable/writable (-rwxrwxrwx, 777),目錄為:/tmp/hbase-staging/averylongandrandomdirectoryname
4、使用者將全域性資料設為可讀和可寫,緊接著將他們移動到隨機的STAGING目錄,然後呼叫bulkLoadHFiles()
為了能讓bulk load更好的工作,需要修改hbase-site.xml檔案(所有的機器上的)並且新增SecureBulkLoadEndpoint到regionserver協處理器中:
      <property>
        <name>hbase.bulkload.staging.dir</name>
        <value>/tmp/hbase-staging</value>
      </property>
      <property>
        <name>hbase.coprocessor.region.classes</name>
        <value>org.apache.hadoop.hbase.security.token.TokenProvider,
        org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint</value>
      </property>
視覺化標籤
這個特徵用被標記的視覺化功能提供了cell級別的安全。cells與視覺化表達相關聯。視覺化的表達可以通過‘&’,'|'和"!"聯絡在一起。也使用‘,’指定其優先順序。例如,一個標籤集{ confidential, secret, topsecret, probationary },其中前三個是敏感性分類,最後一個介紹了員工試用與否。如果一個cell使用這樣的視覺化表示式( secret | topsecret ) & !probationary, 那麼任何secret 或topsecret 標籤的使用者都能看到這個cell,只要使用者不與probationary標籤關聯。此外,任何使用者只與保密的標籤相關,無論是否在實習期,都將看不到該cell,甚至不知道它的存在。
可以使用如下API來設定視覺化標籤:
Mutation#setCellVisibility(new CellVisibility(String labelExpession));
我們將都建使用者標籤集在rpc上下文請求被hbase regionserver第一次接收的時候。使用者與標籤的關聯是可插拔的。預設的外掛通過在認證中指定的標籤新增get或scan並且檢查使用者的許可權標籤列表看他們是否有相應的許可權。
Get#setAuthorizations(new Authorizations(String,...));
Scan#setAuthorizations(new Authorizations(String,...));
視覺化標籤管理
增加標籤:
1)通過java API:VisibilityClient#addLabels(Configuration conf, final String[] labels)
2)通過shell命令:add_labels [label1, label2]
有效的標籤可以包含字母、數字字元和字元 '-', '_', ':', '.'和 '/'。
使用者標籤關聯:
1)通過java API:
關聯,VisibilityClient#setAuths(Configuration conf, final String[] auths, final String user)
解除關聯,VisibilityClient#clearAuths(Configuration conf, final String[] auths, final String user)
2)通過shell命令:
關聯,set_auths user,[label1, label2].
解除關聯,clear_auths user,[label1, label2]
也可以通過VisibilityClient#getAuths(Configuration conf, final String user) 或者get_auths命令來檢視給定使用者關聯的標籤,標籤和使用者許可權資訊將被儲存在系統表“labels”中。
伺服器端配置:
hbase儲存cell級別的標籤作為cell tags。HFile的版本3增加了對cell tags的支援。需要確定配置檔案中加入瞭如下語句:
    <property>
      <name>hbase.coprocessor.master.classes</name>
   <value>org.apache.hadoop.hbase.security.visibility.VisibilityController</value>
    </property>
    <property>
      <name>hbase.coprocessor.region.classes</name>
   <value>org.apache.hadoop.hbase.security.visibility.VisibilityController</value>
    </property>

轉載請註明出處:http://blog.csdn.net/iAm333

相關推薦

hbase-0.98學習筆記

hbase-0.98版已經出了,主要的改變有以下幾點: 1、修復了一些bug,添加了cell視覺化標籤、cell ACLs和透明的伺服器端加密。 2、一些效能改進包括:預寫式日誌執行緒模型,在高負載下提高了事務吞吐量;反向掃描;在快照檔案上的mapreduce;stripe

node+webpack環境搭建 vue.js 2.0 基礎學習筆記

build tao 2.0 png 模板 gis mage tps 環境 npm install -g vue //全局安裝vue npm install -g webpack //全局安裝webpack npm install -g vue-cli

Vue 2.0學習筆記:Vue的過濾器

保持 computed title 添加 處理 顏色 一個 神奇 bubuko 轉自: https://www.w3cplus.com/vue/how-to-create-filters-in-vuejs.html 過濾器的介紹 1、在Vue中使用過濾器(Filters)

hbase 0.98.1叢集安裝

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

0 深度學習筆記

接下來將進行以下的學習: 深度前饋網路 深度學習中的正則化 深度模型中的優化 卷積網路 序列建模:迴圈和遞迴網路 實踐方法論 應用 線性因子模型 自編碼器 表示學習 深度學習中的結構化概率模型 蒙特卡羅方法 直面配分函式

AS3 0基礎學習筆記 3 認識類結構

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

AS3 0基礎學習筆記 2 物件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Hbase&Phoenix學習筆記(持續更新)

1. 檢視某張Hbase表在HDFS中的儲存情況 ``` hadoop fs -ls /apps/hbase/data/data/h3c/log_suspect_track_history_spark/hadoop fs - ls /apps/hbase/data/data/h3c/

0.react學習筆記-環境搭建與腳手架

0.環境搭建 筆者使用的是deepin/mac兩種系統,因為兩個電腦經常切換用。環境搭建沒什麼區別。 0.1 node安裝 按照node官網敘述安裝 # Using Debian, as root curl -sL https://deb.nodesource.com/setup_10.x | bas

ASP.NET Core 2.0系列學習筆記-NLog日誌配置檔案

一、新建ASP.NET Core 2.0 MVC專案,使用NuGet在瀏覽中搜索:NLog.Web.AspNetCore,如下圖所示:二、在專案的bin\Debug\netcoreapp2.0\下新建一個xml型別的nlog.config檔案,如下圖(結合上圖觀看):nlog

tp5.0學習筆記

專案目錄 tp5 ├─application 應用目錄 ├─extend 擴充套件類庫目錄(可定義) ├─public 網站對外訪問目錄 ├─runtime 執行時目錄(可定義) ├─vendor

【 專欄 】- Yii 2.0 框架學習筆記

Yii 2.0 框架學習筆記 介紹 Yii 2.0 框架的安裝、目錄結構,詳細講述 Yii 2.0 的 MVC 模式、元件、資料庫互動、session、cookie、幫助類,以及快取、日誌元件的用法,依賴注入的思想等等。

hbase-0.98.3小試牛刀

最近一直在考慮統計分析的基礎資料、中間資料、結果資料該怎麼存放才有利於寫入、讀取、彙總了,Mysql當然是不二人選,不過涉及到更新的時候,都要先select後update,效率比較低,另外一個就是不同維度的統計資料要是排序的話,那就慘了,到處都是索引,整一張表就是各種索引了

origin8.0 繪圖學習筆記

今天是第一次學習使用origin8.0來繪圖和進行資料分析,現將學習過程中的點滴紀錄在此,以便後續回顧學習。------------------------------------------------------------Origin製圖的最基本原則是“想要修改什麼就直

xUtils3.0框架學習筆記

xUtils 支援超大檔案(超過2G)上傳,更全面的http請求協議支援(11種謂詞)。 擁有更加靈活的ORM,更多的事件註解支援且不受混淆影響。 圖片繫結支援gif(受系統相容性影響, 部分gif檔案只能靜態顯示), webp; 支援圓角, 圓形, 方形

Spark 2.0 -SQL 學習筆記

概述 Spark SQL是Spark結構化資料處理模組,不同於基本的Spark RDD API,Spark SQL提供了更多資料結構和計算功能,並使用了這些豐富的資訊進行了額外的優化。 可以通過SQL和DataSet API和Spark SQL互動。

kinect 2.0 SDK學習筆記(三)--生成3D點雲

生成3D點雲 本文在上一教程座標對映基礎上,構建3D點雲並顯示出來。 1. 獲得深度幀和彩色幀: hr = m_pDepthFrameReader->AcquireLatestFra

Servlet3.0學習筆記

Shared libraries(共享庫) / runtimes pluggability(執行時外掛能力) 1、Servlet容器啟動會掃描,當前應用裡面每一個jar包的ServletContainerInitializer的實現 2、提供ServletConta

Hbase技術詳細學習筆記

最近在逐步跟進Hbase的相關工作,由於之前對Hbase並不怎麼了解,因此係統地學習了下Hbase,為了加深對Hbase的理解,對相關知識點做了筆記,並在組內進行了Hbase相關技術的分享,由於Hbase涵蓋的內容比較多,因此計劃分享2期,下面就是針對第一期Hbase技術分享整體而成,第一期的主要內容如下:一

Hbase-0.98.6原始碼分析--Put寫操作Client端流程

        客戶端程式寫資料通過HTable和Put進行操作,我們從客戶端程式碼開始分析寫資料的流程:        可以看到,客戶端寫資料最終的呼叫了HTableInterface的put()方法,因為HTableInterface只是一個介面,所以最終呼叫的是它的