hive安裝

1 前提

  1. 安裝java
  2. 安裝hadoop

2 下載安裝

2.1 下載

從這裏下載,這裏以apache-hive-2.3.5爲例。 https://hive.apache.org/downloads.htmlhtml

2.2 解壓 & 配置環境變量

tar -xzvf hive-2.3.5.tar.gz
export HIVE_HOME=/home/xxx/hive-2.3.5
export PATH=$HIVE_HOME/bin:$PATH

3 配置

3.1 前提

  1. 必須在path中有hadoop,或者
  2. export HADOOP_HOME=<hadoop-install-dir>

3.2 修改配置文件

cd HIVE_HOME/conf
cp hive-default.xml.template hive-default.xml
cp hive-log4j2.properties.template hive-log4j2.properties
  1. 默認狀況下hive從hive-default.xml中獲取配置,因此這個最好不要改動,當作是hive的默認配置
  2. 能夠在hive-site.xml中定義或者重定義配置。重定義能夠覆蓋hive-default.xml中的配置。因此有新的修改能夠改在hive-site.xml中
  3. hive-site.xml默認是空白的,在添加配置項的時候須要在<configuration></configuration>中添加,不然啓動hive會報錯。

3.3 配置日誌文件(可選)

hive的日誌默認在/tmp/<user.name>/下,能夠經過修改配置文件來改變:java

  1. 在$HIVE_HOME/conf/hive-log4j2.properties中添加 hive.log.dir=<other_location>
  2. 修改query log位置:在hive-site.xml中添加以下配置:
<property>
    <name>hive.querylog.location</name>
    <value>other_location</value>
</property>

3.4 建立hdfs文件

在hdfs中建立以下目錄:shell

$ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

/user/hive/warehouse 是在$HIVE_HOME/conf/hive-default.xml 中指定的(hive.metastore.warehouse.dir), 如3.2所述,若是要修改該路徑,能夠在hive-site.xml中修改。數據庫

4 運行

4.1 修改內置derby配置

hive默認使用內嵌的derby數據庫來存儲元數據,這樣有個缺點:apache

  1. derby會在運行hive命令的本地目錄生成metastore_db文件,若是換一個目錄就看不到以前的元數據了
  2. 每次切換目錄都須要運行$HIVE_HOME/bin/schematool -dbType -initSchema 來初始化metastore_db

緣由就是在hive-default.xml的默認配置下,metastore_db是生成在當前目錄:cookie

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>

因此咱們能夠配置下內置的derby,讓其metastore_db只生成在一個目錄下: 在hive-site.xml中添加以下配置,來覆蓋默認配置:oop

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:/home/xxx/metastore_db;create=true</value>
</property>

4.2 初始化derby

運行命令日誌

$HIVE_HOME/bin/schematool -dbType derby -initSchema

運行結果最後是 schemaTool completed,則表示成功,這個時候能夠看到在/home/xxx/下有metastore_db存在。code

若是出現相似Error: FUNCTION 'NUCLEUS_ASCII' already exists的錯誤,則說明在/home/xxx/下存在有metastore_db,則刪除掉metastore_db,從新運行以上命令便可。xml

4.3 啓動hive

配置好外置的derby後,咱們就能夠啓動hive了。運行show tables 驗證安裝。

參考

  1. https://cwiki.apache.org/confluence/display/Hive/GettingStarted
  2. https://cwiki.apache.org/confluence/display/Hive/HowToContribute#HowToContribute-UnderstandingHiveBranches
  3. https://stackoverflow.com/questions/43947930/unable-to-initialize-hive-with-derby-from-brew-install
相關文章
相關標籤/搜索