インターネットの規模とデータ量が拡大し続けるにつれて、単一マシンのコンピューティングとストレージでは大規模なデータ処理のニーズを満たすことができなくなりました。現時点では、分散コンピューティングとデータ ストレージが必要なソリューションになります。オープンソースの分散コンピューティング フレームワークとして、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 サイトの他の関連記事を参照してください。