Hive(五):hive與hbase整合

来源:http://www.cnblogs.com/tgzhu/archive/2016/08/13/5764035.html
-Advertisement-
Play Games

配置 hive 與 hbase 整合的目的是利用 HQL 語法實現對 hbase 資料庫的增刪改查操作,基本原理就是利用兩者本身對外的API介面互相進行通信,兩者通信主要是依靠hive_hbase-handler.jar工具類。 但請註意:使用Hive操作HBase中的表,只是提供了便捷性,前面章節 ...


      配置 hive 與 hbase 整合的目的是利用 HQL 語法實現對 hbase 資料庫的增刪改查操作,基本原理就是利用兩者本身對外的API介面互相進行通信,兩者通信主要是依靠hive_hbase-handler.jar工具類。 但請註意:使用Hive操作HBase中的表,只是提供了便捷性,前面章節已經介紹,hiveQL引擎使用的是MapReduce,對於性能上,表現比較糟糕,在實際應用過程中可針對不同的場景酌情使用。

     註意:本文介紹的內容適用的版本見我前面章節,HDP2.4.2 ( HBase-1.1.2, hive-1.2.1, hadooop-2.7.1), 文章命令中的路徑根據你配置集群選擇的安裝路徑不同而可能不一樣,請根據實際安裝目錄進行調整。

目錄:

  • hive配置
  • dfs許可權
  • 測試

hive配置:


  • 在<HIVE_HOME>/lib 目錄需要有下麵的這些文件,其中(guava-14.0.1.jar、zookeeper-3.4.6.2.4.2.0-258.jar、hive-hbase-handler-1.2.1000.2.4.2.0-258.jar、htrace-core-3.1.0-incubating.jar)在hive安裝時已經包含,列表中的其它文件需要從 <HBASE_HOME>/lib 下copy. (註意: 如果 hive 安裝時自帶的文件版本與 hbase/lib 下的不一致時,應先刪除 hive/lib 下的文件,再從 hbase/lib 下copy 過來)
    guava-14.0.1.jar
    zookeeper-3.4.6.2.4.2.0-258.jar
    htrace-core-3.1.0-incubating.jar
    hbase-common-1.1.2.2.4.2.0-258.jar
    hbase-common-1.1.2.2.4.2.0-258-tests.jar
    hbase-client-1.1.2.2.4.2.0-258.jar
    hbase-server-1.1.2.2.4.2.0-258.jar
    hbase-protocol-1.1.2.2.4.2.0-258.jar
    hive-hbase-handler-1.2.1000.2.4.2.0-258.jar
  • 在 hbase master 主機 hdp4上,執行下麵的命令,將文件copy至 hdp1、hdp2、hdp3 的<HIVE_HOME>/lib 目錄
  • hdp4命令:cd /usr/hdp/2.4.2.0-258/hbase/lib  
  • hdp4命令:scp hbase-common-1.1.2.2.4.2.0-258.jar  hbase-common-1.1.2.2.4.2.0-258-tests.jar hbase-client-1.1.2.2.4.2.0-258.jar hbase-server-1.1.2.2.4.2.0-258.jar hbase-protocol-1.1.2.2.4.2.0-258.jar hdp1:/usr/hdp/2.4.2.0-258/hive/lib    (再次執行上面命令,修改紅色標註機器名更新文件至 hdp2,hdp3)
  • 在 ambari 管理界面修改 hive-site.xml 配置文件,hive --> advanced --> custom hive-site, 選擇 “ Add Property ... ", 彈出框中: key輸入:hive.aux.jars.path, Value的值就是 <HIVE_HOME>/lib 目錄下上面列出文件名(絕對地址),如下:
    /usr/hdp/2.4.2.0-258/hive/lib/guava-14.0.1.jar,/usr/hdp/2.4.2.0-258/hive/zookeeper-3.4.6.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hive-hbase-handler-1.2.1000.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hbase-common-1.1.2.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hbase-server-1.1.2.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hbase-client-1.1.2.2.4.2.0-258.jar,/usr/hdp/2.4.2.0-258/hive/hbase-common-1.1.2.2.4.2.0-258-tests.jar,/usr/hdp/2.4.2.0-258/hive/htrace-core-3.1.0-incubating.jar,/usr/hdp/2.4.2.0-258/hive/hbase-protocol-1.1.2.2.4.2.0-258.jar
  • 上一步實際就是在 hive-site.xml (/etc/hive/2.4.2.0-258/0) 配置文件中增加一個參數 ,不讓手工修改的原因是,hive服務重啟後,手工修改的配置會被衝掉。
  • 在ambari中修改完參數並保存時會生成新的配置版本,同時自動檢測此參數修改對其它主機和組件的影響,提示組件服務重啟,按提示操作即可。
  • 將 hdp4 主機上 hbase/conf 下的hbase-site.xml文件複製到所有hadoop節點的hadoop/conf

dfs許可權:


  • 進入ambari管理界面,選擇 HDFS --> Advanced --> Advanced hdfs-site ,設置 dfs.permissions.enabled 屬性為: false 如圖:

 測試:


  • 使用 xshell 連接 hive 主機 hdp1
  • 命令: cd /usr/hdp/2.4.2.0-258/hive/bin   (切換至 hive/bin 目錄)
  • 單節點連接hbase命令: beeline -hiveconf  hbase.master=hdp4.60000    (hdp4是hbase的master節點,見hd2.4安裝第五部分)
  • 以集群連接hbase命令:beeline -hiveconf  hbase.zookeeper.quorum=R  (意思是由zookeeper來分配主機,HBase使用的zookeeper集群,預設埠是2181,可以不指定,如果修改過zookeeper埠,則為:zkNode1:2222,zkNode2:2222,zkNode3:2222)
  • beeline: !connect jdbc:hive2://hdp1:10000/default      (連接hive)
  • 測試: show databases;    (查看 hive 中所有的資料庫,驗證hive連接成功否)
  • 執行下麵的sql, 創建 hive 的擴展表與 hbase 資料庫 stocksInfo 表關聯。 (見 HBase(二): c#訪問HBase之股票行情Demo
    CREATE EXTERNAL TABLE if not exists StocksInfo(
             Rowkey  string,
             Code  string, 
             Name  string
      )
     STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
     WITH SERDEPROPERTIES('hbase.columns.mapping' = ':key,d:Code,d:Name')
     TBLPROPERTIES('hbase.table.name' = 'StocksInfo');
  • hbase.columns.mapping: Hive表和HBase表的欄位映射關係,分別為:Hive表中第一個欄位映射:key(rowkey),d:code (d 指hbase 資料庫 stocksInfo 表列族,code 列名) 
  • 表創建成功後,執行 : select * from stocksInfo; 查一下,如下則OK
  • hive 擴展表可理解為關係型資料庫裡面的視圖, 表刪除時,並不會刪除數據,我在應用過程中,大部分場景是與 hbase 數據關聯。
  • 如果創建 hive 實表與 hbase 關聯時,通過 hiveQL 進行的創建表、增加數據等操作均會影響到 hbase 資料庫中的數據,具體會在以後的章節介紹。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在公司中使用nodejs構建代理伺服器實現前後臺分離,代碼不能拿出來,然後出現httpProxy代理資源的時候老是出現404.明明被代理的介面是存在的。代碼大概如下: 然後報錯或者是404錯誤碼。 解決方案: 在代理請求中,把請求頭中的host給刪除,改進代碼如下: 然後如期運行正確。 http:/ ...
  • 一些常見的狀態碼為: 200 - 伺服器成功返回網頁 404 - 請求的網頁不存在 503 - 服務不可用 所有狀態解釋: 1xx(臨時響應)表示臨時響應並需要請求者繼續執行操作的狀態代碼。代碼 說明 100 (繼續) 請求者應當繼續提出請求。 伺服器返回此代碼表示已收到請求的第一部分,正在等待其餘 ...
  • Range對象基本用法 效果圖如下(在谷歌瀏覽器下的展示) 代碼如下 在火狐瀏覽器下的展示 為什麼會出現這種情況呢,因為火狐瀏覽器下可以針對不連續的內容多選. Range對象之SelectNode和selectNodeContents方法 效果圖如下 代碼內容如下: selectNodeConten ...
  • 本篇介紹如何創建一個ExtJS應用程式。並通過創建目錄、導入文件、編寫代碼及分析代碼等步驟來解釋第一個ExtJS程式。 ...
  • 最近在刷 fcc的題,跟升級打怪一樣,一關一關的過,還挺吸引我的。今天抽時間把 Basic Algorithm Scritping 這部分題做了,根據一些提示,還是比較簡單的。有些題的處理方式 方法,我想值得借鑒。比如在項目中有時候要處理一個字元,如果想不到一些相關的方法,還挺費事的,所以,在此記錄 ...
  • 很久之前就看了有關JavaScript繼承,都沒怎麼總結,剛好今天有空就來聊聊唄 (^o^)/ 通過不斷試驗 來檢驗自己理解的正確性。 首先JavaScript裡面所有的數據類型都是對象(object),其中的new命令引入Javascript,用來從原型對象生成一個實例對象。 (這裡請註意:在Ja ...
  • 這幾天有個工作需求,就是在富文本輸入區域(kindeditor)可以有@功能,能夠容易提示用戶名的(像在qq群組@人一樣)。在網上找了一個叫bootstrap-suggest的插件,卻不能滿足我的需求,於是我決定在該插件上改良,主要是下麵幾點: 1. @內容的輸入,能夠匹配多個屬性值。 2. 選中列 ...
  • PHPMyadmin配置文件config.inc.php內容如下,在需要設置的地方增加了相關註釋。 PHPMyadmin配置文件config.inc.php內容如下,在需要設置的地方增加了相關註釋。 非常適合對資料庫操作命令不熟悉的資料庫管理者,下麵我就說下怎麼安裝該工具: 1.先到網上下載phpm ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...