Hadoop 単一ノード環境の構築手順(Ubuntu 22.04)

Ubuntu 22.04 環境の初期設定

まず、Ubuntu 22.04 をインストールし、root ユーザーで作業を開始します。

export LANG=C.UTF-8
echo "root:111111" | chpasswd -m
apt update
apt install -y openssh-server iproute2 ufw

ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ''
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart ssh
systemctl enable ssh

ssh-copy-id -i /root/.ssh/id_rsa.pub root@localhost
ufw allow 22/tcp

Java のインストールと設定

Oracle JDK 8(例:jdk-8u401-linux-x64.tar.gz)をダウンロードし、展開します。

tar -xzf jdk-8u401-linux-x64.tar.gz
mv jdk1.8.0_401 java

cat <<EOF >> ~/.bashrc
export JAVA_HOME=\$(realpath ~/java)
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

source ~/.bashrc
java -version

Hadoop 3.3.6 の設定

Hadoop アーカイブを展開し、環境変数を設定します。

tar -xzf hadoop-3.3.6.tar.gz
mv hadoop-3.3.6 hadoop

cat <<EOF >> ~/.bashrc
export HADOOP_HOME=\$(realpath ~/hadoop)
export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin
EOF

source ~/.bashrc
hadoop version

次に、Hadoop の主要設定ファイルを編集します。

core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>\${HADOOP_HOME}/tmp</value>
  </property>
</configuration>

hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file://\${HADOOP_HOME}/data</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address</name>
    <value>localhost:9000</value>
  </property>
  <property>
    <name>dfs.namenode.http-address</name>
    <value>localhost:9870</value>
  </property>
</configuration>

yarn-site.xml

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
  </property>
</configuration>

mapred-site.xml

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.application.classpath</name>
    <value>\$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:\$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
  </property>
</configuration>

最後に、hadoop-env.shJAVA_HOME を明示的に設定します。

sed -i "s|# export JAVA_HOME=|export JAVA_HOME=\$JAVA_HOME|" $HADOOP_HOME/etc/hadoop/hadoop-env.sh

HDFS をフォーマットし、サービスを起動します。

hdfs namenode -format
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
jps
hdfs dfs -ls /

MySQL 8.3 のインストール

必要な依存パッケージをインストールし、MySQL を展開します。

apt install -y xz-utils libaio1 libnuma1
tar -xf mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz
mv mysql-8.3.0-linux-glibc2.28-x86_64 mysql

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
ln -s ~/mysql /usr/local/mysql

cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 2> init.log
temp_pass=\$(grep 'temporary password' init.log | awk '{print \$NF}')

bin/mysqld_safe --user=mysql &

# 初期パスワードでログインし、パスワードを変更
mysql -uroot -p"\$temp_pass" -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '111111';"

Hive 4.0.0-beta-1 の設定

Hive を展開し、MySQL JDBC ドライバを配置します。

tar -xzf apache-hive-4.0.0-beta-1-bin.tar.gz
mv apache-hive-4.0.0-beta-1-bin hive
cp mysql-connector-j-8.3.0.jar hive/lib/

MySQL に Hive 用のデータベースとユーザーを作成します。

mysql -uroot -p111111 -e "
CREATE DATABASE hivemeta;
CREATE USER 'hive'@'%' IDENTIFIED BY '111111';
GRANT ALL PRIVILEGES ON hivemeta.* TO 'hive'@'%';
FLUSH PRIVILEGES;"

hive-site.xml を作成します。

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hivemeta?useSSL=false&amp;allowPublicKeyRetrieval=true</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>111111</value>
  </property>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/usr/hive/warehouse</value>
  </property>
  <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>0.0.0.0</value>
  </property>
  <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
  </property>
  <property>
    <name>hive.users.in.admin.role</name>
    <value>root</value>
  </property>
</configuration>

Hive メタストアスキーマを初期化し、Beeline で接続します。

$HIVE_HOME/bin/schematool -dbType mysql -initSchema
nohup $HIVE_HOME/bin/hive --service metastore &
nohup $HIVE_HOME/bin/hive --service hiveserver2 &

# Beeline 接続
beeline -u jdbc:hive2://localhost:10000 -n root

タグ: Hadoop Hive Ubuntu MySQL Java

7月16日 23:38 投稿