はじめに
これまで構築したHadoopクラスタ&Hive環境に対し、利用するZeppelinを構築してみました。
全体構成(今回追加するもの)
[ Zeppelinホスト(zeppelin1) ]
└─ Apache Zeppelin
└─ JDBC (HiveServer2)
└─ Hive on Hadoop Cluster
Zeppelin は Hadoop ノードには入れない
Hive とは HiveServer2 (10000) で接続
0. 前提条件(Hadoop/Hive 側)
master1にてHiveServer2 が起動していること
jps | grep HiveServer2
ポート確認
sudo ss -lntp | grep 10000
1. Zeppelin 用ホストの準備(新規ホスト)
1-1. hosts 設定
sudo tee -a /etc/hosts << 'EOF'
10.0.0.11 master1
10.0.0.12 master2
10.0.0.13 master3
10.0.0.21 worker1
10.0.0.22 worker2
EOF
1-2. Java 11 インストール
sudo apt update
sudo apt install -y openjdk-11-jdk
java -version
2. Apache Zeppelin のインストール
2-1. zeppelinユーザー作成
sudo useradd -r -m -d /opt/zeppelin -s /bin/bash zeppelin
2-2. ダウンロード & 配置
sudo su - zeppelin
wget https://dlcdn.apache.org/zeppelin/zeppelin-0.10.1/zeppelin-0.10.1-bin-all.tgz
tar xzf zeppelin-0.10.1-bin-all.tgz
mv zeppelin-0.10.1-bin-all/* ./
rm -rf zeppelin-0.10.1-bin-all*
mkdir /opt/zeppelin/logs
mkdir /opt/zeppelin/run
exit
3. Zeppelin 基本設定
3-1. zeppelin-env.sh
sudo -u zeppelin tee /opt/zeppelin/conf/zeppelin-env.sh << 'EOF'
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export ZEPPELIN_PORT=8080
export ZEPPELIN_ADDR=0.0.0.0
EOF
3-2. zeppelin-site.xml
sudo -u zeppelin tee /opt/zeppelin/conf/zeppelin-site.xml << 'EOF'
<configuration>
<property>
<name>zeppelin.server.addr</name>
<value>0.0.0.0</value>
</property>
<property>
<name>zeppelin.server.port</name>
<value>8080</value>
</property>
</configuration>
EOF
4. Hive 用 Interpreter作成
4-1. Zeppelin Service作成、起動
sudo tee /etc/systemd/system/zeppelin.service << 'EOF'
[Unit]
Description=Apache Zeppelin
After=network.target
[Service]
Type=forking
User=zeppelin
ExecStart=/opt/zeppelin/bin/zeppelin-daemon.sh start
ExecStop=/opt/zeppelin/bin/zeppelin-daemon.sh stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now zeppelin
Zeppelin管理画面にアクセスできること。
http://zeppelin1:8080
4-2. Interpreter 設定画面
右上ユーザー → Interpreter → 右上のcreate
Interpreter Name
hive
Interpreter group
jdbc
properties:
以下のパラメータを編集する。
default.url
jdbc:hive2://master1:10000/default
以下のパラメータを追記する。
hive.driver
org.apache.hive.jdbc.HiveDriver
hive.user
hive
5.hive jdbc入手
sudo su - zeppelin
cd /opt/zeppelin/interpreter/jdbc
wget -O hive-jdbc-3.1.3-standalone.jar \
https://repo1.maven.org/maven2/org/apache/hive/hive-jdbc/3.1.3/hive-jdbc-3.1.3-standalone.jar
exit
sudo systemctl restart zeppelin
6. 動作確認(HiveQL)
6-1. 新規 Notebook 作成
Notebook → Create new note
Note Name:hive-test
Default Interpreter:hive
6-2. Hive クエリ実行
以下の処理を順々に行う。
エラーが出ず動かせること。
%hive
SHOW DATABASES;
%hive
USE default;
SHOW TABLES;
%hive
SELECT * FROM t1 LIMIT 10;
→前のコマンドで何もテーブルが出てない場合、実施しないこと。
%hive
drop table t1;
→前のコマンドを実施していない場合、実施しないこと。
%hive
CREATE TABLE t1 (
col1 INT,
col2 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
%hive
set mapreduce.map.memory.mb=256;
set mapreduce.reduce.memory.mb=256;
set yarn.app.mapreduce.am.resource.mb=256;
INSERT INTO t1 VALUES (1,'a'),(2,'b');
%hive
SELECT * FROM t1 LIMIT 10;