乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Hive HBase 集群整合

       funson 2012-03-18
      Hive HBase 集群整合
      1)啟動Hbase,
       
      要求hbase-0.20.3,zookeeper-3.2.2
      如果使用的不是hbase-0.20.3需要重新編譯hive_hbase-handler.jar

      2)單節(jié)點HBase的連接
      ./bin/hive -hiveconf hbase.master=master:60000

      3)集群HBase的連接
      1.啟動zookeeper
      2.啟動hbase
      3.啟動hive,添加zookeeper的支持
       
      ./bin/hive -hiveconf hbase.zookeeper.quorum= master,slave-A,slave-B  
       

      //所有的zookeeper節(jié)點

      插入數(shù)據(jù)
      啟動
       
      ./bin/hive --auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  -hiveconf hbase.zookeeper.quorum=slave-001,slave-002,slave-003  
       


      hive
      1.創(chuàng)建hbase識別的數(shù)據(jù)庫
       


      Java代碼  
       CREATE TABLE hbase_table_1(key int, value string)   
       STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
       WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")  
       TBLPROPERTIES ("hbase.table.name" = "xyz");  
       

      hbase.table.name 定義在hbase的table名稱
      hbase.columns.mapping 定義在hbase的列族



      2.使用sql導(dǎo)入數(shù)據(jù)
      i.預(yù)先準備數(shù)據(jù)
      a)新建hive的數(shù)據(jù)表
       


      Java代碼  
       CREATE TABLE pokes (foo INT, bar STRING);   
       

      b)批量插入數(shù)據(jù)
       


      Java代碼  
       hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;   
       

      這個文件位于hive的安裝目錄下,examples/files/kv1.txt


       


      Java代碼  
       ii.使用sql導(dǎo)入hbase_table_1  
       
       
       


      Java代碼  
       INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=86;  
       

      注意,默認的啟動會報錯的
      FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.ExecDriver
      啟動的時候要添加
       


      Java代碼  
       -auxpath /data/soft/hive/lib/hive_hbase-handler.jar,/data/soft/hive/lib/hbase-0.20.3.jar,/data/soft/hive/lib/zookeeper-3.2.2.jar  
       


      3查看數(shù)據(jù)
       


      Java代碼  
       hive> select * from  hbase_table_1;  
       

      會顯示剛剛插入的數(shù)據(jù)
      86      val_86

      hbase
      1.登錄hbase
       


      Java代碼  
       [root@master hbase]# ./bin/hbase shell  
       


      2.查看表結(jié)構(gòu)
       


      Java代碼  
       hbase(main):001:0> describe 'xyz'  
       DESCRIPTION                                                             ENABLED                                 
        {NAME => 'xyz', FAMILIES => [{NAME => 'cf1', COMPRESSION => 'NONE', VE true                                    
        RSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY =>                                         
         'false', BLOCKCACHE => 'true'}]}                                                                              
       1 row(s) in 0.7460 seconds  
       


      3.查看加載的數(shù)據(jù)
       


      Java代碼  
       hbase(main):002:0> scan 'xyz'  
       ROW                          COLUMN+CELL                                                                                         
        86                          column=cf1:val, timestamp=1297690405634, value=val_86    
       
                                                           
      1 row(s) in 0.0540 seconds
      可以看到,在hive中添加的數(shù)據(jù)86,已經(jīng)在hbase中了

      4.添加數(shù)據(jù)
       


      Java代碼  
       ' hbase(main):008:0> put 'xyz','100','cf1:val','www.360buy.com'    
       0 row(s) in 0.0630 seconds  
       


      Hive
      參看hive中的數(shù)據(jù)
       


      Java代碼  
       hive> select * from hbase_table_1;                                              
       OK  
       100     www.360buy.com  
       86      val_86  
       Time taken: 8.661 seconds  
       

      剛剛在hbase中插入的數(shù)據(jù),已經(jīng)在hive里了

      hive訪問已經(jīng)存在的hbase
      使用CREATE EXTERNAL TABLE
       


      Java代碼  
       CREATE EXTERNAL TABLE hbase_table_2(key int, value string)   
       STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
       WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cf1:val")  
       TBLPROPERTIES("hbase.table.name" = "some_existing_table");  
       




      三、多列和多列族(Multiple Columns and Families)
      1.創(chuàng)建數(shù)據(jù)庫
       


      Java代碼  
       CREATE TABLE hbase_table_2(key int, value1 string, value2 int, value3 int)   
       STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
       WITH SERDEPROPERTIES (  
       "hbase.columns.mapping" = ":key,a:b,a:c,d:e"  
       );  
       

      2.插入數(shù)據(jù)
       


      Java代碼  
       INSERT OVERWRITE TABLE hbase_table_2 SELECT foo, bar, foo+1, foo+2   
       FROM pokes WHERE foo=98 OR foo=100;  
       


      這個有3個hive的列(value1和value2,value3),2個hbase的列族(a,d)
      Hive的2列(value1和value2)對應(yīng)1個hbase的列族(a,在hbase的列名稱b,c),hive的另外1列(value3)對應(yīng)列(e)位于列族(d)

      3.登錄hbase查看結(jié)構(gòu)
       


      Java代碼  
       hbase(main):003:0> describe "hbase_table_2"  
       DESCRIPTION                                                             ENABLED                                 
        {NAME => 'hbase_table_2', FAMILIES => [{NAME => 'a', COMPRESSION => 'N true                                    
        ONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_M                                         
        EMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'd', COMPRESSION =>                                          
        'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN                                         
        _MEMORY => 'false', BLOCKCACHE => 'true'}]}                                                                    
       1 row(s) in 1.0630 seconds  
       


      4.查看hbase的數(shù)據(jù)
       


      Java代碼  
       hbase(main):004:0> scan 'hbase_table_2'  
       ROW                          COLUMN+CELL                                                                        
        100                         column=a:b, timestamp=1297695262015, value=val_100                                 
        100                         column=a:c, timestamp=1297695262015, value=101                                     
        100                         column=d:e, timestamp=1297695262015, value=102                                     
        98                          column=a:b, timestamp=1297695242675, value=val_98                                  
        98                          column=a:c, timestamp=1297695242675, value=99                                      
        98                          column=d:e, timestamp=1297695242675, value=100                                     
       2 row(s) in 0.0380 seconds  
       


      5.在hive中查看
       


      Java代碼  
       hive> select * from hbase_table_2;  
       OK  
       100     val_100 101     102  
       98      val_98  99      100  
       Time taken: 3.238 seconds  
       
      使用HIVE的WEB界面:HWI
       

      HWI是Hive Web Interface的簡稱,是hive cli的一個web替換方案。
       
      關(guān)于如何搭建Hive平臺,可以參考:搭建Hive平臺
       
      但是目前這個功能做的比較簡陋,這篇文章我們一起來看看如何使用hive中自帶的hwi來進行操作。
       
      打開HWI
       
      假設(shè)hive部署在10.20.151.7機器上,conf/hive-default.xml文件都是默認值,那么我們直接在瀏覽器中輸入:http://10.20.151.7:9999/hwi/ 就可以訪問了。
       


      訪問SCHEMA信息(BROWSE SCHEMA)
       
      我們在web界面點擊Browsers Schema或者輸入:http://10.20.151.7:9999/hwi/show_databases.jsp,就可以瀏覽了:
       


      界面中顯示的是當前可以使用的數(shù)據(jù)庫信息,只包含一個數(shù)據(jù)庫(default),我們再點擊default,就可以看到default數(shù)據(jù)庫中包含的所有表的信息了。
       


      我們可以看到,有3個表的信息,繼續(xù)點擊表名,就可以看到更加詳細的表結(jié)構(gòu)信息了,如我們點擊pokes:
       


      這就是瀏覽schema信息的功能,用于替換cli中的show tables的功能。
       
      查看系統(tǒng)診斷信息(DIAGNOSTICS)
       
      我們點擊Diagnostics,就可以看到系統(tǒng)的相關(guān)診斷信息,如:
       


      用戶認證(AUTHORIZE),創(chuàng)建會話(CREATE SESSION)與會話管理(LIST SESSIONS)
       
      在講解這些功能之前,我們需要先了解一下用戶認證與會話之間的關(guān)系。
       
      在hwi中的用戶認證需要輸入用戶名和用戶組,如:
       


      每一個用戶認證(Authorize)信息對應(yīng)著一組會話(session)。這些數(shù)據(jù)在hive重啟后,session信息都會丟失。
       
      在創(chuàng)建Hive查詢之前,我們需要創(chuàng)建一個會話(session),點擊Create Session即可。
       
      我們再點擊List Sessions,就可以看到該用戶認證(Authorize)上所對應(yīng)的所以的會話組了。
       
      執(zhí)行查詢
       
      絕大多數(shù)情況下,我們不需要設(shè)置用戶認證(Authorize)信息,假設(shè)我們沒有設(shè)置用戶認證(Authorize)信息,然后創(chuàng)建了一個session為s1
       
      點擊List Sessions后,可以看到如下界面:
       


      點擊Manager后,我們就進入到查詢界面了:
       


      我們可以直接在Query中填寫查詢語句,然后在Result中執(zhí)行輸出文件名稱,同時將Start Query設(shè)置為Yes,如:
       


      注意,這里的查詢語句與cli有一點點不同,查詢語句最后沒有分號(;)。
       
      點擊“提交查詢內(nèi)容”后,我們可以看到如下界面:
       


      這個時候,我們可以點擊View File查看結(jié)果信息:
       


      這樣,我們就完成查詢了。
       
      同時我們可以在hive的安裝目錄的更目錄下找到這個s1_result文件。
       
      HWI與CLI對比
       
      如果使用過cli的朋友看了上面的介紹,一定會發(fā)現(xiàn)一個很嚴重的問題:執(zhí)行的過程沒有提示。我們不知道某一個查詢執(zhí)行是什么時候結(jié)束的。
       
      總結(jié)一下HWI與CLI對比的優(yōu)缺點:
       
      優(yōu)點:HWI支持瀏覽器的方式瀏覽,方便直觀。
       
      缺點:無執(zhí)行過程提示。
       
      我個人還是更傾向于使用cli的方式:)

       從此學(xué)習網(wǎng) http://www./item/hive-hbase-jiqun-combin

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多