天天看點

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

注:maxcompute原名odps,是阿裡雲自研的大資料計算平台,文中出現的maxcompute與odps都指代同一平台,不做區分

由于hiveserver2本質上是一個thrift server,是以天然擁有跨語言的支援,而大量的hive生态的工具也是基于hiveserver2的thrift api實作的,比如最常見的hive odbc和hive jdbc,以及基于這兩套實作之上的其他工具。

顧名思義,hiveserver2 proxy是一個代理,它是在原有hiveserver2的基礎之上定制開發後得到的。它完成的工作就是接受用戶端送出的的thrift請求,将其反序列化并轉換成maxcompute能夠識别的請求,然後送出給maxcompute處理,并在maxcompute處理完後将響應再次轉換成用戶端能夠識别的符合hive接口規範的thrift響應,進而實作hive生态工具到maxcompute的互通。簡而言之,它的功能就是在使用者無需修改hive生态工具的情況下,為這些工具與maxcompute的互動提供了一條通路,進而使我們能在複用已有的hive工具的同時,也能使用上maxcompute強大的計算引擎。

hiveserver2 proxy的原理圖如下所示:

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

下面我們将通過兩個執行個體來示範hiveserver2 proxy的功效。

首先,部署hiveserver2 proxy的前置條件是安裝好java1.7和hadoop2.x(如果你不想安裝hadoop也可以跳過這一步),此處不做贅述,請參考這兩者的官方文檔。筆者在以下内容中将以macbook pro的os x來作為示範系統。其他作業系統的使用者在配置上大同小異。

将下載下傳到的壓縮包解壓,得到名為apache-hive-2.1.0-odps-proxy的檔案夾。設定好hive_home環境變量,如筆者的配置:

如果你安裝了hadoop請配置環境變量hadoop_home,如果跳過沒有安裝的,可以使用proxy自帶的hadoop依賴,即根目錄下的hadoop目錄。可以在根目錄下執行如下指令:

完成環境變量的配置之後進入根目錄下的conf檔案夾,修改hive-site.xml中的相關配置項,樣例如下所示,其中每一項的說明已在description标簽中有所描述:

對于大部分使用者來說,隻需要修改odps.accessid、odps.accesskey、odps.project及odps.projects四項即可,其餘項可以保留預設配置。如果20000端口已被占用,可以通過hive.server2.thrift.port更換端口配置。

完成相關配置之後,請回到根目錄,執行bin/hiveserver2啟動proxy。

可以通過檢視日志來确定服務是否啟動成功,如下所示:

如果所有服務正常啟動,沒有報任何異常,則表明proxy已經部署成功。

tableau是一款商用的bi分析軟體,它支援添加各種類型的資料源以供資料分析之用,包括oracle、mysql以及hive等。同時它也提供了豐富酷炫的可視化功能。我們将選擇tableau desktop來示範其通過hiveserver2是如何與maxcompute互通的,本次示範的tableau示範系統是windows 7。

打開tableau後首先需要建立資料源,由于我們需要連接配接的是hiveserver2,是以需要建立一個連接配接到hive的資料源。在tableau 9.3中,支援三種hive資料源,分别對接的是來自cloudera、hortonworks及mapr的hive發行版。

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

根據hiveserver2 proxy所在的ip及配置的端口來完成hive資料源的配置,如下如圖:

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

其中“類型“選擇hiveserver2,“身份驗證”選擇使用者名密碼,“使用者名”和“密碼”随便填,但是必須要有值,而真正的身份驗證走的accessid和accesskey。完成配置後按“确定”按鈕。

正常情況下,我們将順利連接配接上hiveserver2 proxy,并進入tableau的工作簿頁面。然後在“架構“處選擇我們的project,并點選“放大鏡”圖示羅列出所有table。如圖所示:

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

可以選擇一張表,并點選表名後的“檢視資料”按鈕,tableau就會開始查詢資料了:

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通
原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

也可以選擇“新自定義sql”,并輸入自定義的maxcompute sql查詢語句,并進而在工作表頁面通過“智能顯示”來完成資料的可視化處理,如下圖所示:

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通
原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

通過以上示範,已經向你展示了通過hiveserver2 proxy,tableau可以以hive資料源的方式通過hive的odbc直接連接配接到maxcompute,并完成對maxcompute資料的查詢和分析,更多tableau的功能請通路其官網擷取進一步了解。

hive beeline是随hive一起釋出的,是以可以使用hive 2.x以上的發行版來進行嘗試。而hiveserver2 proxy的壓縮包裡就包含了beeline,我們可以直接使用它來進行示範。

進入hive的根目錄,必要情況下配置hive_home和hadoop_home環境變量,然後執行如下指令連接配接hiveserver2 proxy,請讀者自行替換jdbc url中的相關參數,比如ip、端口以及project名:

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

上圖顯示,我們已經成功連接配接到maxcompute的hiveserver2 proxy。同時,預設project所對應的控制叢集的maxcompute版本也在連接配接成功的相關資訊裡列印出來了。

接着,我們便可以指定sql來進行查詢了:

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

也可以通過set指令來完成對相應flag的設定

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通

由于beeline還有部分與資源相關的功能需要分布式檔案系統支援,目前這些功能尚未完全實作。

借助于hiveserver2 proxy,我們可以完成hive生态的工具與maxcompute的互通,更多可以玩的可能性等待你去發現。由于目前hiveserver2 proxy還處于測試階段,希望大家将發現的問題與期望的需求回報給我們,以幫助我們更好地完善産品來服務好更多的maxcompute使用者。

原來MaxCompute還能這麼玩系列(2)—— 利用HiveServer2 Proxy實作MaxCompute與Hive生态工具的互通