たまたま古いラップトップやマシンが横になっていてほこりがたまっている場合は、それを再利用することをお勧めします。分析処理 (アドホック レポートの生成など) 用の高速な SQL データベースは良さそうですか?もしそうなら、読み続けてください!
この記事では、古いラップトップをほこりから取り除き、Rocky Linux と Docker の上で分析専用のデータベース サーバーとして再利用する方法を紹介します。
Intel® Core™ i7 プロセッサ、8 GB DDR3L-SDRAM、および 256 GB SSD を搭載したこの Lenovo Thinkpad T440 を使用しました。
Rocky Linux は、Red Hat Enterprise Linux (RHEL) と互換性のあるオープンソースのエンタープライズ オペレーティング システムであるCentOSの継続です。
優れたセキュリティと管理機能を提供し、RHEL をベースにしているため、広大で活発なコミュニティが存在します。
Docker は、ハードウェアを仮想化せずに Linux システム上で実行される仮想化ソフトウェアです。これにより、分離された環境の利点を維持しながら、使用可能なリソースが最適化されます。
必要に応じて、通常の日常のマシンに Docker をセットアップすることもできますが、Rocky Linux を実行するために必要な最小限のハードウェアを備えた古いラップトップをお持ちの場合は、それを利用することをお勧めします。
開始する前に、古いマシンにある可能性のある重要なファイルを必ずバックアップしてください。
Google Drive、DropBox、外付けハード ドライブなどのオンライン ツールを使用します。このタスクだけに 1 ~ 2 時間を割り当てます。ファイルシステムを調べて、後で不愉快な驚きを避ける.
Rocky Linux のインストール方法については詳しく説明しません。詳細な手順を確認したい場合は、公式ドキュメントを参照してください。
ただし、インストール GUI で DHCP (または必要に応じてイーサネット) を使用して Wi-Fi 接続を構成するようにしてください。
追加のユーザーを作成する必要はありませんroot
で十分です。また、 GUI オプションを使用してサーバーをインストールしないでください。代わりに、カスタム オペレーティング システムを選択し、次のソフトウェアを追加することをお勧めします。
インストール手順に従ってプロセスを完了します。
インストール中に Wi-Fi 接続を構成した場合は、いくつかの追加手順を実行する必要があります。
イーサネットケーブルを使用して、マシンをルーターに接続します。
encli connection
を実行し、イーサネット接続名をメモします。私の場合はenp0s25 でした。
nmcli connection up enp0s25
実行して接続を有効にします (接続の名前を使用します)。
yum install NetworkManager-wifi
を実行して、不足している Wi-Fi ユーティリティをインストールします。
イーサネット ケーブルを取り外します。
reboot
を実行してマシンを再起動します。
マシンが再起動したら、 rootとしてログインし、 ping google.com
を実行して Wi-Fi 接続が機能していることを確認します。
dnf install NetworkManager-tui
を使用して、ネットワーク管理 UI をインストールします。
nmtui
を実行し、手動の静的 IP を使用するように Wi-Fi 接続を編集します。サーバーアドレスを192.168.1.200/24に設定し、 ifconfig
を使用して同じネットワーク内の別の (macOS) マシンから取得したゲートウェイと DNS サーバーを追加しました。 Linux ではip addr
を、Windows ではipconfig
を使用します。次に例を示します。
ふたを閉じたときにラップトップが自動的にサスペンド モードにならないようにするには、 /etc/systemd/logind.conf
ファイルを編集して次のプロパティを設定します ( vi
を使用するか、 yum install nano
を使用して GNU nano をインストールできます)。
[Login] HandleLidSwitch=lock LidSwitchIgnoreInhibited=no
再起動時に以前の変更を保持するには、 systemctl restart systemd-logind.service
を実行します。
マシンを再起動して、すべてが機能することを再確認します。
この時点で、日常のマシンに移動し、SSH を使用して新しいサーバーに接続できます。
ssh [email protected]
クライアント マシンにホスト名を割り当てることもできます。 /etc/hostsファイル (Unix 系のマシン) またはc:\Windows\System32\drivers\etc\hostsファイル (Windows の場合) を編集し、次の行を追加します (任意の名前を使用しますが、静的 IP アドレスを指定します)。前に設定したもの):
192.168.1.200 pickanyname.local
IP アドレスの代わりにホスト名を使用する場合は、サーバーへの接続に使用するすべてのマシンでこれを行う必要があります。この後、次のようにサーバーに接続できるようになります。
ssh [email protected]
SSH 経由でサーバーに接続した後、次のコマンドを実行して docker をインストールします。
yum install -y yum-utils yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce \ docker-ce-cli \ containerd.io \ docker-compose-plugin
マシンの再起動時に Docker サービスが自動的に開始されるようにするには、次のコマンドを実行します。
systemctl enable docker.service systemctl start docker.service
Docker に対応しているため、サーバーを整理しながらソフトウェアを簡単にインストールできます。ソフトウェアは、コンテナと呼ばれる隔離された環境で実行されます。カスタム イメージまたはすぐに使用できるイメージからコンテナを作成できます。
イメージは、コンテナの作成方法を説明するテンプレートです。コンテナーがシステムに不要になった場合は、コンテナーを開始、再始動、停止、さらには削除することもできます。ホスト オペレーティング システム (この記事では Rocky Linux) にゴミを残すことなく、これらすべてを行うことができます。
データベースは、隔離された環境で実行するのに適した候補です。次のコマンドを実行して、ColumnStore エンジンが含まれる MariaDB サーバーを実行するコンテナーを開始します。
docker run --detach \ --name mariadb-cs \ --restart unless-stopped \ --env MARIADB_ROOT_PASSWORD='password' \ --publish '3306:3306/tcp' \ --expose '3306' \ mariadb/columnstore
これにより、Docker Hub (Docker Inc. が管理する Docker イメージのパブリック レジストリ) からMariaDB/columnstoreイメージがダウンロードされます。
イメージをダウンロードした後、Docker はMariaDB-csという名前の新しいコンテナーを作成し、コンテナーの開始に進み、ポート 3306 で MariaDB データベース サーバーを効果的に開始します。
このコマンドは、たとえば開発マシンからデータベースに接続できるように、ポートを外部に公開します。
インストールしたものにより、テーブルを作成するときに MariaDB ColumnStore ストレージ エンジンを使用できるようになります。例えば:
CREATE TABLE some_table( ... column definitions here ... ) ENGINE=ColumnStore;
これにより、MariaDB データベースは、ColumnStore エンジンを使用してデータを列形式で格納するように指示されます。このエンジンは、ビッグ データのスケーリング用に設計されており、ペタバイト単位のデータを処理できるため、インデックスの定義と維持から解放されます。これにより、非常に大きなデータ セットに対するアドホック クエリに最適です。
必要に応じて、トランザクション ワークロードに適したデフォルトの InnoDB エンジンを引き続き使用できます。 ENGINE
オプションを省略してください。単一の SQL ステートメントで、ColumnStore を使用するテーブルと InnoDB を使用するテーブルを結合できます。
トランザクション ノード (InnoDB) と分析ノード (ColumnStore) の間でレプリケーションを使用して、ハイブリッド トランザクション分析処理 (HTAP) ワークロードを有効にすることもできます。
ColumnStore を試す最善の方法は、既存のデータ セットを使用して試すことです。
500 万行をテーブルにロードするこのGithub リポジトリを確認してください。このテーブルを使用して分析クエリを実行し、ColumnStore のパフォーマンスを自分で確認してください。