搭建Hive平台

來源:互聯網
上載者:User

Hive是一個基於Hadoop的資料倉儲平台。通過hive,我們可以方便地進行ETL的工作。hive定義了一個類似於SQL的查詢語言:HQL,能夠將使用者編寫的QL轉化為相應的Mapreduce程式基於Hadoop執行。

本文講解如何搭建一個Hive平台。假設我們有3台機器:hadoop1,hadoop2,hadoop3。並且都安裝好了Hadoop-0.19.2(hive支援的Hadoop版本很多),hosts檔案配置正確。Hive部署在hadoop1機器上。

最簡單,最快速的部署方案

在Hadoop-0.19.2中內建了hive的檔案。版本為0.3.0。

我們首先啟動Hadoop:sh $HADOOP_HOME/bin/start-all.sh

然後啟動hive即可:sh $HADOOP_HOME/contrib/hive/bin/hive

這個時候,我們的Hive的命令列介面就啟動起來了,你可以直接輸入命令來執行相應的hive應用了。

這種部署方式使用derby的嵌入式模式,雖然簡單快速,但是無法提供多使用者同時訪問,所以只能用於簡單的測試,無法實際應用於生產環境。所以,我們要修改hive的預設配置,提高可用性。

搭建多使用者的,提供web介面的部署方案

目前只用比較多hive版本是hive-0.4.1。我們將使用這個版本來搭建hive平台。

首先,下載hive-0.4.1:svn co http://svn.apache.org/repos/asf/hadoop/hive/tags/release-0.4.1/ hive-0.4.1

然後,修改下載檔案裡面的編譯選項檔案shims/ivy.xml,將其修改為如下內容(對應的Hadoop版本為0.19.2)

<ivy-module version="2.0">
    <info organisation="org.apache.hadoop.hive" module="shims"/>
    <dependencies>
        <dependency org="hadoop" name="core" rev="0.19.2">
          <artifact name="hadoop" type="source" ext="tar.gz"/>
        </dependency>
        <conflict manager="all" />
    </dependencies>
</ivy-module>

接下來,我們使用ant去編譯hive: ant package

編譯成功後,我們會發現在build/dist目錄中就是編譯成功的檔案。將這個目錄設為$HIVE_HOME

修改conf/hive-default.xml檔案,主要修改內容如下:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby://hadoop1:1527/metastore_db;create=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.ClientDriver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

在hadoop1機器上下載並安裝apache derby資料庫:wget http://labs.renren.com/apache-mirror/db/derby/db-derby-10.5.3.0/db-derby-10.5.3.0-bin.zip

解壓derby後,設定$DERBY_HOME

然後啟動derby的network Server:sh $DERBY_HOME/bin/startNetworkServer -h 0.0.0.0

接下來,將$DERBY_HOME/lib目錄下的derbyclient.jar與derbytools.jar檔案copy到$HIVE_HOME/lib目錄下。

啟動Hadoop:sh $HADOOP_HOME/bin/start-all.sh

最後,啟動hive的web介面:sh $HIVE_HOME/bin/hive --service hwi

這樣,我們的hive就部署完成了。我們可以直接在瀏覽器中輸入: http://hadoop1:9999/hwi/ 進行訪問了(如果不行話,請將hadoop1替換為實際的ip地址,如:http://10.210.152.17:9999/hwi/)。

這種部署方式使用derby的c/s模式,允許多使用者同時訪問,同時提供web介面,方便使用。推薦使用這種部署方案。

關注Hive的schema

我們上面談到的2中部署方案都是使用derby資料庫來儲存hive中的schema資訊。我們也可以使用其他的資料庫來儲存schema資訊,如mysql。

可以參考這篇文章瞭解如果使用mysql來替換derby:http://www.mazsoft.com/blog/post/2010/02/01/Setting-up-HadoopHive-to-use-MySQL-as-metastore.aspx

我們也可以使用HDFS來儲存schema資訊,具體的做法是修改conf/hive-default.xml,修改內容如下:

<property>
  <name>hive.metastore.rawstore.impl</name>
  <value>org.apache.hadoop.hive.metastore.FileStore</value>
  <description>Name of the class that implements org.apache.hadoop.hive.metastore.rawstore interface. This class is used to store and retrieval of raw metadata objects such as table, database</description>
</property>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.