Hadoopのバージョン選択
本番環境での安定版の推奨
Hadoop 3.4
1.このリリースはApache Hadoop 3.xシリーズの安定リリースであり、ほとんどの本番シナリオのコア要件に対応する長期バグ修正と互換性サポートを提供します。ストレージ効率(削除、削除など)、リソース管理、YARNスケジューリングが大幅に最適化されており、エンタープライズ生産環境に適しています。 2.エコシステムコンポーネント互換性 Hadoop 3.4.0は、全体的な互換性を確保するために以下の安定バージョンのエコシステムコンポーネントを推奨します。
スパーク3.3
特長:メモリベースの汎用コンピューティングエンジンで、MapReduceをはるかに上回る性能を発揮します。Spark SQL(構造化データ処理)、Spark Streaming(ストリーム処理)、MLlib(機械学習)などのライブラリを提供し、統合されたスタックを形成します。
ハイブ3.1.1
機能:SQLクエリをHadoop(デフォルトのエンジンはMapReduceまたはTez)上で実行されるタスクに変換することで、ビッグデータクエリのしきい値を下げます。オフラインデータウェアハウスとバッチ処理のシナリオに適しています。
2.6.0から
特徴:HDFS 上に構築された分散型スケーラブルなNo SQLデータベースは、大量データへのランダムなリアルタイム読み書きアクセスをサポートし、HDFSの低遅延アクセスの欠点を補います。
ZooKeeper 3.8
分散調整サービスは、信頼性の高い分散ロック、リーダー選出、構成保守などのHadoopエコシステムの基本機能を提供し、HDFSの高可用性、HBaseなどのコンポーネントの安定した動作の礎石です。
カフカ3.4
高スループットの分散メッセージングシステムは、生産者と消費者を分離し、リアルタイムデータパイプラインのバックボーンとして機能することが多い。
Flume 1.9
機能:HDFSまたはHBaseにデータを確実に転送する分散型の高可用性ログ収集、集計、およびモバイルツール。
マフウ14.1
機能:拡張可能な機械学習アルゴリズムライブラリで、Sparkなどのエンジンに基づく分散機械学習アルゴリズムの後期バージョン。
アンバリ2.7
機能:Webインターフェイスを介してHadoopクラスタのインストール、デプロイ、構成、監視を簡素化し、教育や運用管理に最適です。
JDK 8
公式には JDK 8またはJDK 11 を推奨します。本番環境では、長期サポートされているJDK 8(1.8.0_202 以上など)を優先し、新機能の場合はJDK 11を推奨しますが、コンポーネント互換性の事前テストが必要です。
3ノードモデルの要件
ハードウェアの構成
各ノードは8コアCPU、16GB 及びそれ以上のメモリ、1TB SATA IIIハードディスク(或いはそれ以上の規格)を配置することを提案し、ノード間はギガビット及びそれ以上のイーサネット接続によって接続し、データ転送効率を確保する。データ量や計算圧力が大きい場合は、以下の拡張提案を参照してください。
- マスター NameNodeとResourceManagerを実行するには、32GBなどの大容量メモリを構成することを推奨します。
- データ/コンピューティングノードWorkerデータストレージ用に8TB HDDなどのディスク容量を増やすように構成します。
システムと依存性
オペレーティングシステムにはCentOS 7.x/8.xまたはUbuntu 18.0 4/20.0 4 LTSが必要です。JDK 8(互換バージョン1.8.0_202 以上を推奨)を事前にインストールし、以下の基本構成を完了します。
- 時間同期:NTPサービスをインストールして、クラスタノードの時間が一貫していることを保証する。
- ネットワーク構成:静的 IPを設定し、各ノードのホスト名(hadoop001、hadoop002、hadoop 00 3など)を変更し、
/etc/hostsでIPとホスト名のマッピングを構成します。 - SSH 秘密解除ログイン:ノード間にSSH 相互信頼を配置し、マスターノードがパスワードなしですべてのノードにアクセスできることを保証する。
- システムの最適化:ファイアウォールとSELinuxをオフにし(本番環境で有効にする必要がある場合はHadoop 関連ポートに例外を設定します)、カーネルパラメータを調整します(例:vm.swappiness =10、net.core.somaxconn = 655 3 5)。
ノードの役割割り当て
古典的な3ノードクラスタロール割り当ての例は次のとおりです。
| ノードホスト名 | アドレス例 | プライマリ·サービス·ロール | 注釈 |
|---|---|---|---|
| hadoop 001 | 192.168.30.131 | ode ResManager Secode | マスターノード(管理ノード) |
| Hadoop 002 | 192.168.30.132 | DataNode NodeManager | スレーブノードデータ/ノード |
| Hadoop 003 | 192.168.30.133 | DataNode NodeManager | スレーブノードデータ/ノード |
このアーキテクチャでは、管理サービスNameNode、ResourceManagerを1つのノードに集中させ、2つのスレーブノードが実際のデータストレージと計算タスクを担います。可用性を高めるには、SecondaryNameNodeを別のノードにデプロイするか、将来的にHDFS HAにスケールアップすることを検討してください(Standby NameNodeとJournalNodeを実行する追加のノードが必要)。
クラスタの導入と構成の要点
重要なプロファイルの調整
$HADOOP_HOME/etc/hadoop/ディレクトリで、以下のファイルを設定します。
- JVMヒープメモリの調整:
hadoop-env.sh、yarn-site.xmlなどの設定ファイルで、各デーモンのヒープメモリの上限を大幅に下げ(たとえば、デフォルトの1 GBまたは2 GBを512MBまたは256MBに設定)、適用タスクのためのスペースを確保します。 core-site.xmlデフォルトのファイルシステムfs.defaultFSの場合はhdfs//hadoop001 8020などとHadoop 一時ディレクトリhadoop.tmp.dirを設定します。hdfs-site.xml擬似分散モードではDataNodeが1つしかないため、ストレージスペースが節約されるため、hdfs-site.xmlではレプリカの数 dfs.replicationを1に設定します。yarn-site.xml:ResourceManagerのホスト名(yarn.resourcemanager.hostname)を指定し、—Node Managerのセカンダリサービス(yarn.nodemanager.aux-servicesの場合はmapreduce shuffle)を設定して、Node Managerで利用可能な物理メモリとCPUコアの数を厳しく制限し、1つのタスクですべてのリソースを消費しないようにします。workersファイル2つのスレーブノードのホスト名 hadoop002とhadoop003を追加します。
クラスターの初期化と起動
- HDFSのフォーマット:マスターノードで
hdfs namenode -formatを1 回だけ実行します。 - クラスタの起動マスターノードで
start-dfs.shとstart-yarn.shを実行します。 - サービス
本番の
- データバランシング:初期デプロイまたは大量のデータ書き込み後、HDFSバランサーを実行してデータ分散をバランシングします。
- ログとモニタリング:集中型のログ収集(ELKなど)を構成し、PrometheusとGrafanaを統合してクラスタの主要なメトリック(CPU、メモリ、HDFS 使用率など)を監視します。
- 定期的なメンテナンス:ローリング再起動ポリシーを策定し、公式の脆弱性情報に従い、パッチを更新します。
バージョン選択のまとめ
安定性を追求する本番環境では、Hadoop 3.4.0+JDK 8*+互換のエココンポーネントバージョン(Hive 3.1.3、Spark 3.4.3 など)は、実績のある信頼性の高い組み合わせです。3ノードクラスタは、学習と中小規模生産の共通の出発点であり、上記のハードウェア、システム構成、役割割り当ての原則に従って、安定した効率的なHadoop 実行環境を構築することができます。
気に入ったならばコメントを残してくださいね~