<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

    開場白:
    Hive與HBase的整合功能的實現是利用兩者本身對外的API接口互相進行通信,相互通信主要是依靠hive_hbase-handler.jar工具類 (Hive Storage Handlers), 大致意思如圖所示:
    hive-hbase

    口水:
     對 hive_hbase-handler.jar 這個東東還有點興趣,有空來磋磨一下。

    一、2個注意事項:
    1、需要的軟件有 Hadoop、Hive、Hbase、Zookeeper,Hive與HBase的整合對Hive的版本有要求,所以不要下載.0.6.0以前的老版本,Hive.0.6.0的版本才支持與HBase對接,因此在Hive的lib目錄下可以看見多了hive_hbase-handler.jar這個jar包,他是Hive擴展存儲的Handler ,HBase 建議使用 0.20.6的版本,這次我沒有啟動HDFS的集群環境,本次所有測試環境都在一臺機器上。
         
    2、運行Hive時,也許會出現如下錯誤,表示你的JVM分配的空間不夠,錯誤信息如下:
    Invalid maximum heap size: -Xmx4096m
    The specified size exceeds the maximum representable size.
    Could not create the Java virtual machine.

    解決方法:
    /work/hive/bin/ext# vim util/execHiveCmd.sh 文件中第33行
    修改,
    HADOOP_HEAPSIZE=4096

    HADOOP_HEAPSIZE=256

    另外,在 /etc/profile/ 加入 export $HIVE_HOME=/work/hive

    二、啟動運行環境
    1啟動Hive
    hive –auxpath /work/hive/lib/hive_hbase-handler.jar,/work/hive/lib/hbase-0.20.3.jar,/work/hive/lib/zookeeper-3.2.2.jar -hiveconf hbase.master=127.0.0.1:60000
    加載 Hive需要的工具類,并且指向HBase的master服務器地址,我的HBase master服務器和Hive運行在同一臺機器,所以我指向本地。

    2啟動HBase
    /work/hbase/bin/hbase master start

    3啟動Zookeeper
    /work/zookeeper/bin/zkServer.sh start

    三、執行
    在Hive中創建一張表,相互關聯的表
    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");

    在運行一個在Hive中建表語句,并且將數據導入
    建表
        CREATE TABLE pokes (foo INT, bar STRING);
    數據導入
        LOAD DATA LOCAL INPATH '/work/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;

    在Hive與HBase關聯的表中 插入一條數據
        INSERT OVERWRITE TABLE hbase_table_1 SELECT * FROM pokes WHERE foo=98;
    運行成功后,如圖所示:
    hive

    插入數據時采用了MapReduce的策略算法,并且同時向HBase寫入,如圖所示:
    Map-Reduce Job for INSERT

    在HBase shell中運行 scan 'xyz' 和describe "xyz" 命令,查看表結構,運行結果如圖所示:
    hive

    xyz是通過Hive在Hbase中創建的表,剛剛在Hive的建表語句中指定了映射的屬性 "hbase.columns.mapping" = ":key,cf1:val"  和 在HBase中建表的名稱 "hbase.table.name" = "xyz"

    在hbase在運行put命令,插入一條記錄
        put 'xyz','10001','cf1:val','www.javabloger.com'

    在hive上運行查詢語句,看看剛剛在hbase中插入的數據有沒有同步過來,
        select * from hbase_table_1 WHERE key=10001;
    如圖所示:
    hive

    最終的效果
        以上整合過程和操作步驟已經執行完畢,現在Hive中添加記錄HBase中有記錄添加,同樣你在HBase中添加記錄Hive中也會添加, 表示Hive與HBase整合成功,對海量級別的數據我們是不是可以在HBase寫入,在Hive中查詢 喃?因為HBase 不支持復雜的查詢,但是HBase可以作為基于 key 獲取一行或多行數據,或者掃描數據區間,以及過濾操作。而復雜的查詢可以讓Hive來完成,一個作為存儲的入口(HBase),一個作為查詢的入口(Hive)。如下圖示。
        hive mapreduce
        
        呵呵,見笑了,以上只是我面片的觀點。

    先這樣,稍后我將繼續更新,感謝你的閱讀。

     

    相關文章:
     Apache Hive入門2 
     Apache Hive入門1

     HBase入門篇4 
     HBase入門篇3 
     HBase入門篇2 
     HBase入門篇

    –end–

     

    豆瓣讀書  向你推薦有關 HBase、 Hadoop、 Hive、 MapReduce、 云計算、 架構設計、 類別的圖書。

    posted on 2011-01-10 15:22 ivaneeo 閱讀(4551) 評論(1)  編輯  收藏 所屬分類: bi(商務智能)

    Feedback

    # re: Hive與HBase的整合[未登錄] 2015-04-13 19:18 bill
    hive集成hbase數據同步過程中如果出現異常,會是什么結果? 例如往hive的表中插入100w記錄,往hbase同步的到一半的時候出現一個異常,會回滾掉所有hive的更新以及hbase的更新嗎  回復  更多評論
      

    主站蜘蛛池模板: 久久受www免费人成_看片中文| 四虎国产精品免费视| 亚洲中文字幕AV在天堂| 色播在线永久免费视频| 国产精品无码免费专区午夜| 亚洲成人免费网址| 亚洲AV无码乱码在线观看| 无码人妻丰满熟妇区免费| 午夜亚洲乱码伦小说区69堂| 亚洲va无码专区国产乱码| 日韩免费观看的一级毛片| 两性色午夜视频免费播放| 亚洲欧美一区二区三区日产| 亚洲人成色77777| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲V无码一区二区三区四区观看| 午夜福利不卡片在线播放免费| 一区二区免费电影| 亚洲午夜无码久久久久小说| 国产亚洲精AA在线观看SEE| 日韩免费三级电影| 16女性下面无遮挡免费| 国产精品成人啪精品视频免费| 亚洲粉嫩美白在线| 亚洲人成电影亚洲人成9999网| 国产99视频精品免费视频7| 精品国产免费人成电影在线观看| 国产精品1024在线永久免费 | 亚洲中文无码亚洲人成影院| 国产成人无码综合亚洲日韩| 免费人成视频x8x8入口| 无码人妻一区二区三区免费手机 | 亚洲综合色区在线观看| 猫咪社区免费资源在线观看| 日本一道本不卡免费| 男性gay黄免费网站| 亚洲视频一区二区三区四区| 亚洲五月六月丁香激情| 亚洲精品成人无限看| 亚洲国产精品无码久久久久久曰 | 亚洲av日韩综合一区二区三区 |