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

■ はじめに

https://dk521123.hatenablog.com/entry/2020/01/01/000000

の続き。

目次

【0】設定環境
 1)前提条件
【1】Derby のインストール
 1)Derby の ダウンロード
 2)Derby の インストール
 3)環境変数の設定
 4)環境変数の有効化
 5)動作確認
【2】Hive の設定
 1)Hive をダウンロード
 2)Hive のインストール
 3)環境変数の設定
 4)環境変数の有効化
【3】Hive の設定ファイルの修正
 1)hive-env.sh の修正
 2)hive-site.xml の修正
【Z】動作確認・Hello World

【0】設定環境

OS : Ubuntu v18.04.3 LTS (Bionic Beaver)
Java : openjdk version "1.8.0_232"
Hadoop : v3.2.1
Hive : v3.2.1
DB : Derby v10.14.2.0

1)前提条件

* Hadoop をインストールしていること
(以下の関連記事を参照のこと)

https://dk521123.hatenablog.com/entry/2020/01/01/000000

【1】Derby のインストール

1)Derby の ダウンロード

以下のサイトから、Derby をダウンロードする
 => 今回は、「db-derby-10.14.2.0-bin.tar.gz」

http://db.apache.org/derby/derby_downloads.html

以下のコマンドでもできる。
===
wget https://ftp.kddi-research.jp/infosystems/apache//db/derby/db-derby-10.14.2.0/db-derby-10.14.2.0-bin.tar.gz
===

2)Derby の インストール

1)でダウンロードしたモジュールを任意の場所に解凍する。
 
cd /opt
sudo tar xvzf ~/db-derby-10.14.2.0-bin.tar.gz

# 権限設定
cd /opt/db-derby-10.14.2.0-bin
sudo chown -R user:user /opt/db-derby-10.14.2.0-bin

3)環境変数の設定

 環境変数「DERBY_HOME」「DERBY_INSTALL」「PATH」を以下のように設定する

sudo vi /etc/profile.d/derby.sh

/etc/profile.d/derby.sh

export DERBY_HOME=/opt/db-derby-10.14.2.0-bin
export DERBY_INSTALL=$DERBY_HOME
export PATH=$DERBY_HOME/bin:$PATH

4)環境変数の有効化

source /etc/profile.d/derby.sh

5)動作確認

# バージョン情報を表示
sysinfo

【2】Hive の設定

1)Hive をダウンロード

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

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

または、以下のコマンドでダウンロード。
===
wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
===

2)Hive のインストール

任意の場所に解凍する

cd /opt
sudo tar xvzf ~/apache-hive-3.1.2-bin.tar.gz

# 権限設定
sudo chown -R user:user /opt/apache-hive-3.1.2-bin

3)環境変数の設定

環境変数「HIVE_HOME」「PATH」を以下のように設定する

sudo vi /etc/profile.d/hive.sh

/etc/profile.d/hive.sh

export HIVE_HOME=/opt/apache-hive-3.1.2-bin
export PATH=$HIVE_HOME/bin:$PATH

4)環境変数の有効化

source /etc/profile.d/hive.sh

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

1)hive-env.sh の修正

「$HIVE_HOME/conf/hive-env.sh.template」を
コピー&ペーストし、「hive-env.sh」とリネーム。

cp /opt/apache-hive-3.1.2-bin/conf/hive-env.sh.template /opt/apache-hive-3.1.2-bin/conf/hive-env.sh

以下を参考に修正。
===
vi /opt/apache-hive-3.1.2-bin/conf/hive-env.sh
source /opt/metastore_db
===

/opt/apache-hive-3.1.2-bin/conf/hive-env.sh

export HADOOP_HOME="/opt/hadoop-3.2.1"
export HIVE_HOME="/opt/apache-hive-3.1.2-bin"
export DERBY_HOME="/opt/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"

2)hive-site.xml の修正

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

cp /opt/apache-hive-3.1.2-bin/conf/hive-default.xml.template /opt/apache-hive-3.1.2-bin/conf/hive-site.xml

以下を参考に修正。
===
vi /opt/apache-hive-3.1.2-bin/conf/hive-site.xml
===

/opt/apache-hive-3.1.2-bin/conf/hive-site.xml

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=/opt/apache-hive-3.1.2-bin/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>hive.txn.xlock.iow</name>
    <value>true</value>
    <description>
      <!-- 特殊文字「&#8;」を削除 -->
    </description>
  </property>

  <property>
    <name>hive.druid.metadata.db.type</name>
    <!-- 「derby」に修正 -->
    <value>derby</value>
    <description>
      Expects one of the pattern in [mysql, postgresql, derby].
      Type of the metadata database.
    </description>
  </property>

  <!-- Add -->
  <property>
    <name>system:java.io.tmpdir</name>
    <value>/tmp</value>
  </property>
  
  <!-- Add -->
  <property>
    <name>system:user.name</name>
    <value>${user.name}</value>
  </property>

【Z】動作確認・Hello World

以下を参考に動かしてみる

https://www.atmarkit.co.jp/ait/articles/0902/27/news129_3.html

データ

vi /home/user/person.csv

/home/user/person.csv

1,Mike,28
2,Tom,32
3,Ken,43
4,Smith,23
5,Kevin,30

コマンド例

# HIVE_HOME に移動
cd $HIVE_HOME
hive

# テーブル作成
CREATE TABLE person(id BIGINT, name STRING, age INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

# テーブル一覧表示
SHOW TABLES;

# データ挿入
LOAD DATA LOCAL INPATH '/home/user/person.csv'
OVERWRITE INTO TABLE person;

# データ表示
SELECT * FROM person;

# 終了
exit;

トラブルシューティング

hive コマンドを実行時にでたトラブルシューティングは
以下の関連記事にまとめている

Hadoop / Hive 環境構築時のトラブルシューティング
https://dk521123.hatenablog.com/entry/2021/02/12/160221

関連記事

Apache Hadoop ~ 環境設定 / Linux編 ~
https://dk521123.hatenablog.com/entry/2020/01/01/000000
Apache Hive ~ 環境設定 / Windows編 ~
https://dk521123.hatenablog.com/entry/2019/12/28/021109
Apache Derby ~ 環境設定 / Windows編 ~
https://dk521123.hatenablog.com/entry/2019/12/31/193105
Docker Desktop / WSL2 ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/12/08/165505
Hadoop / Hive 環境構築時のトラブルシューティング
https://dk521123.hatenablog.com/entry/2021/02/12/160221