近年、事業またはコンピューターが関わるあらゆる業務が複数のコンピューターで処理する必要があるほど大規模になると、単一のネットワークの一部として複数のコンピューターを使用し、ワークロードを効率的に処理し始めます。これは当たり前になり、現在ではデータサイエンスなどの分野での業務のほぼ全てが、これらのネットワーク化されたコンピューターで実行されています。要求の多いコンピューター処理をこのように実行する方が効率的であることは疑いの余地ありませんが、非常に複雑でもあります。各コンピューターを個別に設定し、タスク実行中にネットワーク全体を管理する必要があります。このような状況で、Hadoop のようなプログラムが大いに役立つのです。
HadoopはApacheがリリースしたツールとプログラムのスイートで、複数のコンピュータをネットワークでつなぐプロセス全体をより効率的かつ簡単に実行できます。この記事では、Hadoopの概要を説明し、その使用例、利点と欠点を紹介し、高度なアーキテクチャの概要を提供してから、Ubuntu 20.04へのインストール手順を説明することで、この2024年のHadoopチュートリアルを完成させます。
Apache Hadoop とは
Apacheが提供するツールスイートであるHadoopは、15年以上にわたってネットワーク構築と利用に革新をもたらしています。ユーザーはHadoopのリソース効率を活用することで、高額なハードウェア投資なしに既存のコンピューティング能力で要求の厳しいタスクを処理できます。このスイートはHDFS、YARN、MapReduce、Hadoop Commonの4つのモジュールで構成されており、それぞれが特定の用途に設計されています。
Hadoopの優れた点は、個人と組織の両方が既存のコンピューティング能力を結集し、大規模な計算課題に対応する統合的な力を作り出せることにあります。Hadoopがなければ、こうした企業は絶えず高性能なコンピュータ機器を購入し続けるしかありません。
Hadoopの使用例
Hadoopが何かはわかりました。しかし、その使用例は実際にどのように適用されるのでしょうか。理論を理解することは良いことですが、実際の運用での可能性を実感することには及びません。ここではいくつかの例を示してからHadoopチュートリアルに進みます。
リスク分析
既に説明したように、Hadoopを使用することで、複数のコンピュータシステムをネットワークユニットとして結合し、大量のデータを効率的に処理して通常より高速に分析できます。すべてのビジネスには分析と評価が必要なリスクが存在します。Hadoopはここで非常に有用です。実際、多くの信頼性の高い病院が異なる治療のリスクを分析し、患者の治療成果と統計情報を予測するためにHadoopを使用しています。Hadoopがヘルスケア分野で果たす役割についてさらに詳しく知ることができます。
セキュリティ侵害の検出
ネットワークやビジネス内で通信機器やデバイスが増えると、セキュリティ侵害のリスクも増えます。Hadoopの重要な役割の一つは、大量のデータを分析して操作全体を評価し、システムの潜在的な問題点を見つけることです。
レビューマッピング
多くの企業は製品レビューを参考にして製品を改善したり、新しいマーケティング戦略を立てています。人間が大量のレビューファイルを処理するのに時間がかかるのに対し、Hadoopはネットワーク上の複数コンピュータを使ってはるかに高速に結果を得られます。
市場分析
マーケティング戦略の話ですが、新製品がいざ市場に投入されるとなった場合、必要なリソースの量はレビュー分析の比ではありません。ここがHadoopの出番です。複数のコンピュータを使うことで、たとえ成長途上の小規模企業でも効率的かつ短時間に市場を分析できます。
ログファイルの評価
企業が成長するにつれ、使用するソフトウェアの数も増えていきます。ソフトウェアが増えるとバグや問題も増え、ログファイルを管理し対応するために専任の従業員が必要になります。これには時間がかかりますが、Hadoopと簡単なプロトコルを組み合わせれば、ログファイルを素早く確認して問題を特定し解決できます。
Hadoopにはこの他にも多くのユースケースと用途がありますが、この記事の目的を考慮して、ここではこれ以上の説明は省略します。
Hadoopアーキテクチャ概要
Hadoopについて、そのユースケースと機能について聞いたことがあるかもしれません。聞いたことがなくても、この記事でここまで説明してきたはずです。ここからは、Hadoopが実際にどのように構成されており、各部がどのように連携しているかについて詳しく理解する必要があります。前述の通り、Hadoopには4つの主要レイヤーがあります。このHadoopチュートリアルのこの部分では、HDFS(Hadoop分散ファイルシステム)、YARN(Yet Another Resource Negotiator)、MapReduce、およびHadoop Commonについて学びます。ただしHadoop Commonは説明が必要な機能がそこまで多くないため、その本質は次の通りです。 Zookeeperこのセクションでは、複雑で高度なHadoopアーキテクチャとエコシステムの4つのセクションを基本的な用語で説明してから、最後にUbuntu 20.04へのHadoopインストール方法に進みます。
HDFS
HadoopエコシステムのHDFSは、すべてのHadoopサブシステムとアプリケーションがデータの評価、転送、保存に使用する全体的なストレージシステムです。HDFSアーキテクチャの重要な点は、オープンソースプログラムであるHadoop自体とは異なり、Hadoopの中のHDFSは実際には単一のHadoopクラスタのすべての基盤操作を実行するファイルシステムであることです。HDFSは非常に耐性の高いファイルシステムで、データを128MBの単位に分割し、シーケンスベースの処理に最適化します。
HadoopにおけるHDFSの主な役割は、データをデータラックの一部として提供することです。その後、異なるネームノードとセカンダリラックを使用してデータを分析操作用のサブセクションに分割できます。さらにJournalラック、QJM、HA、fsimageとeditログファイル、および全体的なlegendログなどのオプションを使用して、操作を追跡し他のタスクを実行できます。
YARN
YARNはHadoopのもう一つの主要なコンポーネントで、Hadoopエコシステム内の特定アプリケーションに必要な計算リソースを割り当てるのに使用されます。本質的には、リソースマネージャーを使用してクライアント用のリソースを複数のノードを通じてさまざまなタスクとアプリケーションに割り当てることができます。YARNにはHDFSと同様のlegendもあり、割り当てたリソースと操作を追跡できます。YARNは3つのサブセクションに分かれています:リソースマネージャー、アプリケーションマスター、ノードマネージャーです。
これら3つのサブセクション各々は、クラスタ、アプリケーション、ノードごとに新しいインスタンスを作成します。YARNを使用してリソースをさまざまなタスクに割り当てるだけでなく、時間とともにリソースをスケジュール変更して高度なアルゴリズムワークフローを作成することもできます。YARNはそのサブセクションに限定されません。HDFSやZookeeperなどの他のアーキテクチャレイヤーと組み合わせてYARNを使用し、リソースを割り当てたり操作全体を評価したりする場面が多くあります。
Hadoop MapReduce
Hadoop MapReduceはHadoopエコシステムのもう一つの主要なコンポーネントです。Ubuntu上にHadoopをインストール後、この機能を使用して大量のデータを複数のコンピュータで分散的に処理できます。基本的にHadoop MapReduceはこのように機能します。大量のデータマップをプログラムに入力します。このデータマップはシャッフルされ、分割され、ネットワークコンピュータ全体に分散されます。その後、reducerと呼ばれる特定のプロトコルを使用してデータを最も本質的なコンポーネントに短縮します。これらの操作それぞれをJobと呼びます。
MapReduceで分析したい3語の文があるとしましょう。例えば「Bear Hunt Rabbit」という文です。Hadoop MapReduceはこの文を3つの異なるバッチに分割・短縮し、各バッチに1語ずつ含めます。次にこれらの単語を使用して、他のジョブの類似データ入力と組み合わせて、不要なデータが削除された最終的な統一データバッチを作成し、簡単に分析できるようにします。
Zookeeper
ZookeeperはHadoopエコシステムのもう一つのサブセクションで、Hadoop 2.0のリリースとともに広く使われるようになりました。Zookeeperの主なサービスは、単一のHadoopインスタンスの一部として実行している異なる操作間で調整を行うことです。そのため、ZookeeperはほぼYARNのリソースマネージャーとHDFSのさまざまな機能と組み合わせて使用されます。これらの操作における主な用途は、潜在的な障害点を検出して対応することです。これを行うために、ZKFiloverControerとZookeeper Quorumという2つの異なるツールを使用します。
これらの手順では、Hadoopアーキテクチャの他のコンポーネントで管理されているデータノードはユーザーによって監視されるアクティブネームノードとして分類されます。その後、これらのネームノード各々はZookeeperの前述の2つのサブセクション内で精査されます。これは困難な領域を指摘し、潜在的な障害を特定するために行われます。
Ubuntu 20.04へのHadoopインストール - ステップバイステップガイド
最後に、Hadoopアーキテクチャについて学んだ後、このHadoopチュートリアルの最終部分であるUbuntu 20.04へのHadoopインストール方法について説明します。ステップバイステップガイドに進む前に、前提条件を確認しましょう。このガイドはUbuntu 18.04にも適用できることに注意してください。
前提条件
UbuntuにHadoopをインストールするための前提条件は非常にシンプルです。必要なのは、ローカルアクセスまたはVPSサーバー経由でのリモートアクセスが可能な、ルートアクセス権を持つUbuntu対応コンピュータです。前提条件プログラムについては、Java 11とSSHがすでにインストールされていることを確認してください。インストールされていない場合は、次のコマンドを1つずつ実行してインストールしてください。
sudo apt update && sudo apt upgrade -y
sudo apt install openssh-server openssh-client -y
sudo apt install openjdk-11-jdk -y
ライセンスについては、Hadoopは無料でオープンソースですので、必要ありません。以上が必要なものの全てです。ステップ1に進みましょう。
ステップ1: Hadoop用の非rootユーザーを作成
次のコマンドを使用してHadoop用の非ルートユーザーを作成します。これはHadoopを実際にダウンロードしてインストールする前に行う必要がある事前設定の一部です。
sudo adduser hdoop
su - hdoop
ステップ2: SSHキーをセットアップ
次に、UbuntuにHadoopをインストールするために、作成したHadoopユーザーを使用してSSH接続を行います。このコマンドを使用してSSHキーペアを生成し、保存します。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
キーが生成されたら、次のコマンドでそれらをマークします。 authorized_keys SSHディレクトリに保存します。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
このコマンドを使用して、SSH接続に必要なすべての権限があることを確認します。
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
変更を確認すれば、作成したユーザーでいつでも簡単にlocalhostに接続できるようになります:
ssh localhost
ステップ3: UbuntuにHadoopをダウンロードしてインストール
こちらから Apache Hadoop ウェブサイト にアクセスして、バージョン一覧と最新の変更ログを確認できます。好きなバージョンを選ぶと、次のコマンドで Ubuntu に Hadoop をダウンロード・インストールするためのリンクが表示されます。ここではバージョン 3.3.6 を選択しています。必要に応じて '3.3.6' を最新の安定版に置き換えてください:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
ダウンロードが完了したら、次のコマンドで展開とインストールを完了させます:
tar xzf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop
sudo chown -R hdoop:hdoop /usr/local/hadoop
ステップ4: Hadoop環境を設定
設定 JAVA_HOME in /usr/local/hadoop/etc/hadoop/hadoop-env.sh:
echo 'export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")' | sudo tee -a /usr/local/hadoop/etc/hadoop/hadoop-env.sh
ステップ5: 設定ファイルを編集
Hadoop の XML 設定ファイルをクラスタ設定で更新します。
nano /usr/local/hadoop/etc/hadoop/core-site.xml
ステップ6: HDFSをフォーマット
Hadoop ファイルシステムのネームスペースを初期化します。
/usr/local/hadoop/bin/hdfs namenode -format
ステップ7: Hadoopサービスを開始
HDFS と YARN サービスを起動します。
/usr/local/hadoop/sbin/start-dfs.sh
/usr/local/hadoop/sbin/start-yarn.sh
ステップ8: インストールを確認
実行中の Java プロセスを確認して、Hadoop が動作しているか検証します。
jps
ステップ9: Webインターフェースにアクセス
ウェブブラウザで Hadoop の NameNode と ResourceManager インターフェースを開きます。
NameNode: http://localhost:9870
ResourceManager: http://localhost:8088
ステップ10: MapReduceの例を実行
サンプル MapReduce ジョブを実行してセットアップを検証します。
/usr/local/hadoop/bin/hdfs dfs -mkdir /input
/usr/local/hadoop/bin/hdfs dfs -put localfile.txt /input
/usr/local/hadoop/bin/hadoop jar
/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep /input /output 'dfs[a-z.]+'
/usr/local/hadoop/bin/hdfs dfs -cat /output/*
ステップ11: 環境変数を設定
Hadoopを追加 bin と sbin ディレクトリをシステム PATH に追加します。
echo 'export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin' >> ~/.bashrc
source ~/.bashrc
完了です!これで Ubuntu 20.04 上に Apache Hadoop を正常に設定・インストールできました。
結論
要約すると、Ubuntu 20.04 への Hadoop のインストールは、注意深い作業と設定の細部を探索する準備が必要なプロセスです。このガイドの手順に従うことで、Ubuntu ユーザーは Hadoop の強力な機能を活用し、データ分析の可能性を最大限に引き出すことができます。
学習や試験的な使用に限定する場合は、限定配布を使用したシングルノードデプロイとして Hadoop をデプロイすることをお勧めします。この目的には、VPS が最適です。Cloudzy はさまざまな機能を提供しており、 Linux VPSサービス 堅牢で信頼できる Ubuntu VPS を含んでいます。これはすぐに設定して、完璧な Hadoop 学習環境にできます。月額 $4.95 から始めて、12 以上のロケーションと 24/7 のサポートを備えた Ubuntu VPS を手に入れることができます!
明らかな選択肢
Linuxを実行するサーバーの大多数がUbuntuを使用しています。あなたはどうですか?みんなになぜUbuntuが好まれているのか、最適化されたUbuntu VPSを発見してください
あなたのUbuntu VPSを取得よくあるご質問
HDFSとMapReduceの違いは何ですか?
HDFS と MapReduce はどちらも Hadoop エコシステムに属していますが、役割は異なります。HDFS は分散ファイルシステムとして機能し、データへのアクセスを可能にします。一方、MapReduce は大量のデータを分割し、効率的に分析することに優れています。
Hadoopはデータベースと考えられていますか?
Hadoop はデータベースではありません。ただし、この誤解は一般的です。実際には、相互接続されたコンピュータのネットワークを使用して膨大なデータの保存と処理を可能にする分散ファイルシステムとして機能しています。従来のデータベースシステムの直接的な代替品として使用すべきではありません。
Hadoopの4つの主要コンポーネントは何ですか?
Hadoop は 4 つのコアコンポーネントで構成されています: HDFS (Hadoop Distributed File System)、YARN (Yet Another Resource Negotiator)、MapReduce、および Hadoop Common です。加えて、ZooKeeper を含める資料もありますが、公式には認定されていません。
Hadoopは通常どこで使われていますか?
Hadoop は、大規模データの管理、保存、処理、分析が必要な様々な領域で活用されています。中堅企業や病院から急成長するスタートアップまで、様々な規模の組織にデータ駆動ソリューションを提供しています。