【Hive】Hive / HiveQL ~ 環境設定 / Windows編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2019/12/26/223506

の続き。
やっとこ、Apache Hadoop on Windows が終わったので
今度は、Hive環境を構築する

■ 設定環境

DBについては、サポートされているDB(※)から
選択すればいいが、今回は、Derby。

※ サポートDB
https://cwiki.apache.org/confluence/display/Hive/Hive+Schema+Tool

より抜粋
===
derby|mysql|postgres|oracle|mssql
===

今回行った環境

OS : Windows10
Cygwin : 3.1.2(0.340/5/3) 2019-12-21 15:25 x86_64
Java : jdk-8u231-windows-x64
Hadoop : v3.1.3
Hive : v3.1.2
DB : Derby v10.14.2.0

注意

* Hiveのバージョンで、v3.X系をインストールする場合、
  Hadoopのバージョンも、v3.X系で合わせる
  (Hive v3.Xで、Hadoop v2.Xは不可)

■ 設定手順

前提条件

以下を参考に、 Java / Hadoop  / Derby をインストールされていること

Java / Hadoop
https://dk521123.hatenablog.com/entry/2019/12/26/223506
Derby
https://dk521123.hatenablog.com/entry/2019/12/31/193105

【1】Cygwin の設定

[1-1] Cygwin のダウンロード&インストール

Cygwin(シグウィン)を以下からダウンロードし、
インストールする
 => 今回は、デフォルトの「C:\cygwin64」にインストール

https://cygwin.com/install.html

[1-2] 環境変数「PATH」の設定

Path = 「C:\cygwin64\bin」「C:\cygwin64\sbin」を追加

【2】Hive の設定

[2-1] Hive をダウンロード

以下のサイトからHiveをダウンロードする
 => 今回は、「apache-hive-3.1.2-bin.tar.gz」

https://hive.apache.org/downloads.html

[2-2] Hive のインストール

任意の場所に解凍する
 => tar.gzなので、7Zipなどの解凍ソフトやtarコマンドで解凍
 => 今回は、「C:\work\apache-hive-3.1.2-bin」

[1-2] 環境変数「HIVE_HOME」「PATH」の設定

HIVE_HOME = C:\work\apache-hive-3.1.2-bin
Path = 「%HIVE_HOME%/bin」を追加

【3】Hive の設定ファイルの修正

[3-1] hive-env.sh の修正

「%HIVE_HOME%\conf\hive-env.sh.template」を
コピー&ペーストし、「hive-env.sh」とリネーム。
以下を参考に修正。

【修正内容 : hive-env.sh】

export HADOOP_HOME="/cygdrive/c/work/hadoop-3.1.3"
export HIVE_HOME="/cygdrive/c/work/apache-hive-3.1.2-bin"
export DERBY_HOME="/cygdrive/c/work/db-derby-10.14.2.0-bin"
export DERBY_INSTALL=$DERBY_HOME
export PATH="$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin:$DERBY_HOME/bin"
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*.jar:$HADOOP_HOME/share/hadoop/**/*.jar
export HADOOP_OPTS="$HADOOP_OPTS -Djava.io.tmpdir=/tmp"

[3-2] hive-site.xml の修正

「%HIVE_HOME%\conf\hive-default.xml.template」を
コピー&ペーストし、「hive-site.xml」とリネーム。

以下を参考に修正。
なお、各パラメータの説明は、以下が参考になる。

https://software.fujitsu.com/jp/manual/manualfiles/m160007/j2ul2025/02z200/j2025-c-03-00.html

【修正内容 : hive-site.xml

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby://localhost:1527/metastore_db;create=true</value>
    <description>
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>admin</value>
    <description>Username to use against metastore database</description>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>password</value>
    <description>password to use against metastore database</description>
  </property>
  
    <property>
    <name>hive.txn.xlock.iow</name>
    <value>true</value>
    <description>
      Ensures commands with OVERWRITE (such as INSERT OVERWRITE) acquire Exclusive locks for transactional tables.  This ensures that inserts (w/o overwrite) running concurrently
      are not hidden by the INSERT OVERWRITE.
    </description>
  </property>
  
  <property>
    <name>hive.session.id</name>
    <value>hive_session_id</value>
    <description/>
  </property>
  
  <!-- Add -->
  <property>
    <name>system:java.io.tmpdir</name>
    <value>/cygdrive/c/tmp</value>
  </property>
  
  <!-- Add -->
  <property>
    <name>system:user.name</name>
    <value>${user.name}</value>
  </property>

【6】Hive HDFS フォルダの作成

[6-1] コマンドプロンプトを立ち上げて、以下のコマンドを行う

# hadoop サービス開始
start-all

# Hive HDFS フォルダの作成
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse

# Hive HDFS フォルダのパーミッション
hadoop fs -chmod 777 /tmp
hadoop fs -chmod 777 /user/hive/warehouse

【5】確認

[5-1] hive の起動確認

Cygwin を立ち上げて、以下のコマンドを行う

# 1
hive --help

# 2
hive

# トラブル時に詳細な情報を拾うためには...
hive -hiveconf hive.root.logger=DEBUG,console

参考文献

https://kontext.tech/column/hadoop/291/apache-hive-300-installation-on-windows-10-step-by-step-guide
https://www.zymr.com/hive-installation-windows-7/
https://qiita.com/Esfahan/items/a6f2107876e5a712a72c

トラブルシュート

https://stackoverflow.com/questions/28661285/hadoop-cluster-setup-java-net-connectexception-connection-refused

関連記事

Apache Hadoop ~ 環境設定 / Windows編 ~
https://dk521123.hatenablog.com/entry/2019/12/26/223506
Apache Hive ~ HiveQL / 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/25/231235
Hive / HiveQL ~ パーティション / Partition 機能 ~
https://dk521123.hatenablog.com/entry/2020/07/16/224332
Apache Hive ~ HiveQL / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2020/03/04/225943
Apache Derby ~ 環境設定 / Windows編 ~
https://dk521123.hatenablog.com/entry/2019/12/31/193105