Hadoop基盤 を Ubuntu 24.04 限定で構築する Ansible
前に提示したHadoop/Hive/Zeppelin構築についてまとまったため、
ansibleで構築自動化させました。
ソースは以下になります。
前提
site.yml と各 role の先頭で assert を行い、Ubuntu 24.04 以外では必ず失敗します。
メモリは2GBあれば動きます。
本playbookではシングルHadoop&Hive&Zeppelinまで構築できます。
hiveについては一緒にhadoopも導入する必要があります。
事前準備
git clone git@github.com:naritomo08/bigdata_kiban.git
cd bigdata_kiban
ansible-galaxy collection install community.postgresql
vi inventory
→ホスト名、IP部分を変更する。
実行
ansible-playbook -i inventory.ini single_site.yml
変数
group_vars/all.yml を環境に合わせて調整してください(IP/ホスト名、BigTop repo URL、メモリ等)。
動作確認(HDFS)
sudo su - hadoop
hdfs dfs -mkdir /input
echo "hello hadoop hadoop yarn" | hdfs dfs -put - /input/test.txt
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.3.6.jar \
wordcount \
-D mapreduce.map.memory.mb=256 \
-D mapreduce.reduce.memory.mb=256 \
-D yarn.app.mapreduce.am.resource.mb=512 \
-D mapreduce.map.java.opts="-Xmx200m" \
-D mapreduce.reduce.java.opts="-Xmx200m" \
-D yarn.app.mapreduce.am.command-opts="-Xmx400m" \
/input /output
結果確認:
hdfs dfs -cat /output/part-r-00000
→それぞれの単語と数が出てくること。
やり直す際は以下のコマンドを入れてまた実施する。
hdfs dfs -rm -r -skipTrash /output
以下の管理画面が参照できること。
| 管理画面 | URL |
|---|---|
| NameNode | http://ホストIPアドレス:9870 |
| DataNode | http://ホストIPアドレス:9864 |
| ResourceManager | http://ホストIPアドレス:8088 |
| NodeManager | http://ホストIPアドレス:8042 |
| TimelineService(API応答) | http://ホストIPアドレス:8188/ws/v2/timeline |
| YARN UI2 | http://ホストIPアドレス:8088/ui2 |
| zeppelin | http://ホストIPアドレス:8080 |
動作確認(Hive)
事前準備(初回のみ実施)
sudo su - hadoop
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chown -R hive:hive /user/hive
hdfs dfs -chmod 771 /user/hive
hdfs dfs -chmod 771 /user/hive/warehouse
hdfs dfs -chmod -R 1777 /tmp
exit
Beeline 接続(メモリ制限付き)
/usr/lib/hive/bin/beeline \
--hiveconf mapreduce.map.memory.mb=512 \
--hiveconf mapreduce.reduce.memory.mb=512 \
--hiveconf yarn.app.mapreduce.am.resource.mb=512 \
--hiveconf mapreduce.map.java.opts="-Xmx384m" \
--hiveconf mapreduce.reduce.java.opts="-Xmx384m" \
--hiveconf yarn.app.mapreduce.am.command-opts="-Xmx384m" \
-u 'jdbc:hive2://<hostname>:10000/default' \
-n hadoop
実行エンジン確認
set hive.execution.engine;
結果:
hive.execution.engine=mr
テーブル作成・INSERT・SELECT
CREATE TABLE t1 (
col1 INT,
col2 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;
INSERT INTO t1 VALUES (1,'a'),(2,'b');
SELECT * FROM t1;
結果:
1 a
2 b
YARN UI での確認(成功の裏取り)
http://ホストIPアドレス:8088
Application Type: MAPREDUCE
State: FINISHED
Logs に Exception がないこと
Zeppelin設定
Interpreter 設定画面
zeppelin URL
http://ホストIPアドレス:8080
右上ユーザー → Interpreter → 右上のcreate
Interpreter Name
hive
Interpreter group
jdbc
properties:
以下のパラメータを編集する。
default.url
jdbc:hive2://<hostname>:10000/default
以下のパラメータを追記する。
hive.driver
org.apache.hive.jdbc.HiveDriver
hive.user
hive
動作確認(Zeppelin/HiveQL)
新規 Notebook 作成
Notebook → Create new note
Note Name:hive-test
Default Interpreter:hive
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;