中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase學習小節v1.2

發布時間:2020-06-16 23:52:55 來源:網絡 閱讀:970 作者:退而結網ZP 欄目:關系型數據庫

1. HBase

    一個構建在HDFS上的高可靠、高性能、面向列、可伸縮、分布式列存儲開源數據庫,主要用于存儲海量數據,同時使用mapreduce處理HBase中的數據,利用zookeeper作為協同服務。讀寫相對簡單,不支持條件查詢

2. HBase與HDFS對比

    都具有良好的容錯性和擴展性

    HDFS適合批處理場景,但是不支持數據隨即查找,不適合增量數據處理,不支持數據更新

3. HBase的特點:

    海量數據:可支持上百萬列,分成多個region

    無模式:每行都有一個可排序的主鍵和任意多的列,列可以根據需要動態的增加,同一張表中不同的行可以有截然不同的列

    面向列存儲:面向列的存儲和權限控制,列獨立檢索

    記錄稀疏:列為空(NULL),并不占用存儲空間

    數據多版本:每個單元的數據可以有多個版本,通過timestamp區分

    數據類型單一:所有數據都是字符串

4. HBase結構組成

    Row key:

        Byte array

        表中每條記錄的“主鍵”

        方便快速查找

    Timestamp:

        每次數據操作對應的時間戳,看作數據的version number

    Column Family:

        擁有一個名稱(string)

        包含一個或者多個相關列(Column)

    Column:

    value:

5. 支持的操作

    所有操作基于rowkey的

    支持CRUD(create、read、update、delete)以及put、get、multiput、scan

    沒有內置join操作,可使用MapReduce實現

6. HBase為每個值維護了多級索引,即<key,column family,column name,timestamp>

    Table中的所有行都按照row key的字典序排列,在行的方向上分割為多個region,region是HBase中分布式存儲與負載均衡的最小單元,不同的Region分布到不同RegionServer上;

    region增大到一個閥值的時候,region就會分為兩個新的region,之后會有越來越多的region

    region由一個或多個store組成,每個store保存一個columns family

    每個store又由一個memStore和0至多個StoreFile組成;

    memStore存儲在內存中,StoreFile存儲在HDFS上

7. HBase的基本組件

    Client:通過RPC與HMaster及HRegionServer進行通信,并維護cache加快對HBase的訪問

    Zookeeper:

        保證集群中總是存在一個HMaster

        存儲所有Region的尋址入口

        實時監控Region server的上線和下線信息,并實時通知給Master

        存儲HBase的schema和table元數據

    HMaster:

        為Region server分配region

        復雜Region server的負載均衡

        發現失效的Region server并重新分配其上的region

        管理用戶對table的增刪改查操作

    HRegionServer:

        維護region,處理對region的I/O請求

        負責切分在運行過程中變得過大的region

8.HBase容錯機制

    HMaster:zookeeper重新選擇一個新的Master

        無Master過程中,數據讀取仍照常進行

        無Master過程中,region切分、負載均衡等無法進行

    HRegionServer容錯:定時向Zookeeper匯報心跳,如果一定時間內未出現心跳

    HMaster將該HRegionServer上的Region重新分配到其他RegionServer上

    失效服務器上“預寫”日志由主服務器進行分割并派送給新的RegionServer上

9. HBase訪問方式

    Native Java API:常規高效

        創建一個Configuration對象(包含各種配置信息hbase-default.xml,hbase-site.xml)

            Configuration conf=HbaseConfiguration.create()

        構建一個HTable句柄(提供Configuration對象,提供待訪問Table的名稱)

            HTable table=new HTable(conf,tableName)

            僅提供行級事務,嚴格的行一致性,并發讀,順序寫

        執行操作(支持put,get,delete,scan等的批處理)

            table.getTableName();

        關閉HTable句柄(內存數據刷新到磁盤上,釋放資源)

            table.close()

    HBase Shell:用于管理

    Thrift Gateway:序列化,支持C++,Python等語言

        啟動thrift server:hbase-daemon.sh start thtift

        生成Hbase thrift client接口文件

        thrift --gen xxx Hbase.thrift

        編寫客戶端代碼

    eg:1. thrift --gen py hbase.thrift

      2. ${HBASE_HOME}/src/examples/thrift/DemoClient.py

      3. python DemoClient.py

    Rest Gateway:Rest風格的Http API

    Mapreduce:使用Mapreduce作業處理Hbase數據

        提供TableMapper、TableReducer、TableInputFormat、TableOutputFormat等api

10.HBase Shell的主要用法

    進入控制臺:bin/hbase shell

    創建表:create TABLE_NAME,COLUMN_Family1, COLUMN_Family2,...COLUMN_FamilyN

    添加記錄:put TABLE_NAME,ROW_NAME,COLUMN_Family:COLUMN_NAME,VALUE

    查看記錄:get  TABLE_NAME,ROW_NAME  #默認返回最近的值

    統計記錄數:count TABLE_NAME

    刪除表:

        disable TABLE_NAME

        drop TABLE_NAME

    刪除記錄:

        delete  TABLE_NAME,ROW_NAME,COLUMN_Family:COLUMN_NAME  #刪除一條

        delete  TABLE_NAME,ROW_NAME  #刪除所有

    刪除一個列簇

        disable TABLE_NAME      

         alter TABLE_NAME, {NAME=>'tab1_add', METHOD=>'delete'} 

         enable TABLE_NAME

    全表掃描:

        scan TABLE_NAME

    指定列中的所有數據:scan TABLE_NAME,COLUMN_Family

    查看所有表:list

    查看服務器狀態:status

    查看hbase版本:version

    查看表結構:descirbe TABLE_NAME

    判斷表是否存在:exists TABLE_NAME

    判斷表是否為enable is_enabled TABLE_NAME

    清空表:truncate TABLE_NAME


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汤原县| 寿阳县| 绥德县| 紫云| 潮州市| 浦县| 太湖县| 成都市| 隆昌县| 张家口市| 宁强县| 鲜城| 泰州市| 湛江市| 扎赉特旗| 封开县| 舒城县| 黄梅县| 繁昌县| 建始县| 湛江市| 兴业县| 清涧县| 仁寿县| 安岳县| 宜章县| 开封市| 安徽省| 长子县| 洛隆县| 绥江县| 宁阳县| 大同市| 合川市| 和顺县| 铁岭市| 城口县| 临颍县| 且末县| 磴口县| 彭州市|