ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発における分散コンピューティングとデータ ストレージに Apache Hadoop を使用する方法
インターネットの規模とデータ量が拡大し続けるにつれて、単一マシンのコンピューティングとストレージでは大規模なデータ処理のニーズを満たすことができなくなりました。現時点では、分散コンピューティングとデータ ストレージが必要なソリューションになります。オープンソースの分散コンピューティング フレームワークとして、Apache Hadoop は多くのビッグ データ処理プロジェクトの最初の選択肢となっています。
PHP 開発で分散コンピューティングとデータ ストレージに Apache Hadoop を使用するにはどうすればよいですか?この記事ではインストール、設定、実践の3つの側面から詳しく紹介します。
1. インストール
Apache Hadoop をインストールするには、次の手順が必要です:
はいApache Hadoop の公式 Web サイト (http://hadoop.apache.org/releases.html) から最新バージョンをダウンロードします。
Apache Hadoop は Java に基づいて作成されているため、最初に Java をインストールする必要があります。
Java と Hadoop をインストールした後、環境変数を構成する必要があります。 Windows システムでは、Java および Hadoop の bin ディレクトリ パスをシステム環境変数に追加します。 Linux システムでは、Java と Hadoop の PATH パスを .bashrc または .bash_profile に追加する必要があります。
2. 設定
Hadoop をインストールした後、通常に使用するにはいくつかの設定が必要です。以下にいくつかの重要な構成を示します:
構成ファイルのパス: $HADOOP_HOME/etc/hadoop/core-site.xml
このファイルでは、HDFS のデフォルトのファイル システム URI と、Hadoop の実行時に生成される一時ファイルのストレージ パスを定義する必要があります。
サンプル構成 (参照のみ):
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> </configuration>
構成ファイルのパス: $HADOOP_HOME/etc/hadoop/hdfs -site.xml
このファイルでは、HDFS のレプリカ数やブロック サイズなどの情報を定義する必要があります。
サンプル構成 (参照のみ):
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.blocksize</name> <value>128M</value> </property> </configuration>
構成ファイルのパス: $HADOOP_HOME/etc/hadoop/yarn -site.xml
このファイルでは、リソース マネージャーのアドレス、ノード マネージャーの数などの YARN 関連の構成情報を定義する必要があります。
サンプル構成 (参照のみ):
<configuration> <property> <name>yarn.resourcemanager.address</name> <value>localhost:8032</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>4</value> </property> </configuration>
構成ファイルのパス: $HADOOP_HOME/etc/hadoop/mapred -site.xml
MapReduceフレームワークの関連情報をこのファイルに設定します。
設定例 (参考のみ):
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value> </property> </configuration>
3. 実践
上記のインストールと設定作業が完了したら、PHP 開発分散コンピューティングで Apache Hadoop の使用を開始できます。そしてデータストレージ。
Hadoop では、データは HDFS に保存されます。 HDFSの操作にはPHPが提供するHdfsクラス(https://github.com/vladko/Hdfs)を利用できます。
サンプル コード:
require_once '/path/to/hdfs/vendor/autoload.php'; use AliyunHdfsHdfsClient; $client = new HdfsClient(['host' => 'localhost', 'port' => 9000]); // 上传本地文件到HDFS $client->copyFromLocal('/path/to/local/file', '/path/to/hdfs/file'); // 下载HDFS文件到本地 $client->copyToLocal('/path/to/hdfs/file', '/path/to/local/file');
Hadoop は通常、分散コンピューティングに MapReduce モデルを使用します。 MapReduce 計算は、PHP が提供する HadoopStreaming クラス (https://github.com/andreas-glaser/php-hadoop-streaming) を使用して実装できます。
サンプル コード:
(注: 次のコードは、Hadoop での単語カウントの操作をシミュレートします。)
Mapper PHP コード:
#!/usr/bin/php <?php while (($line = fgets(STDIN)) !== false) { // 对每一行数据进行处理操作 $words = explode(' ', strtolower($line)); foreach ($words as $word) { echo $word." 1 "; // 将每个单词按照‘单词 1’的格式输出 } }
Reducer PHPコード:
#!/usr/bin/php <?php $counts = []; while (($line = fgets(STDIN)) !== false) { list($word, $count) = explode(" ", trim($line)); if (isset($counts[$word])) { $counts[$word] += $count; } else { $counts[$word] = $count; } } // 将结果输出 foreach ($counts as $word => $count) { echo "$word: $count "; }
実行コマンド:
$ cat input.txt | ./mapper.php | sort | ./reducer.php
上記の実行コマンドは、input.txt データをパイプライン経由で mapper.php に入力して処理し、並べ替えて、最後に出力結果をパイプします。処理用reducer.php 処理を行い、最終的に各単語の出現回数を出力します。
HadoopStreaming クラスは、MapReduce モデルの基本ロジックを実装し、データをキーと値のペアに変換し、マッピングのために Map 関数を呼び出し、新しいキーと値のペアを生成し、マージ処理のために Reduce 関数を呼び出します。
サンプル コード:
<?php require_once '/path/to/hadoop/vendor/autoload.php'; use HadoopStreamingTokenizerTokenizerMapper; use HadoopStreamingCountCountReducer; use HadoopStreamingHadoopStreaming; $hadoop = new HadoopStreaming(); $hadoop->setMapper(new TokenizerMapper()); $hadoop->setReducer(new CountReducer()); $hadoop->run();
Apache Hadoop はオープンソースの分散コンピューティング フレームワークであるため、特定のアプリケーションで HBase、Hive、Pig などの他の多くの API やツールも提供します。ニーズに応じて選択できます。
概要:
この記事では、PHP 開発における分散コンピューティングとデータ ストレージに Apache Hadoop を使用する方法を紹介します。最初に Apache Hadoop のインストールと構成の詳細な手順を説明し、次に PHP を使用して HDFS を操作してデータ ストレージ操作を実装する方法を紹介し、最後に HadoopStreaming クラスの例を使用して、PHP 開発で MapReduce 分散コンピューティングを実装する方法を説明します。
以上がPHP 開発における分散コンピューティングとデータ ストレージに Apache Hadoop を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。