ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発における分散コンピューティングとデータ ストレージに Apache Hadoop を使用する方法

PHP 開発における分散コンピューティングとデータ ストレージに Apache Hadoop を使用する方法

WBOY
WBOYオリジナル
2023-06-25 09:15:35864ブラウズ

インターネットの規模とデータ量が拡大し続けるにつれて、単一マシンのコンピューティングとストレージでは大規模なデータ処理のニーズを満たすことができなくなりました。現時点では、分散コンピューティングとデータ ストレージが必要なソリューションになります。オープンソースの分散コンピューティング フレームワークとして、Apache Hadoop は多くのビッグ データ処理プロジェクトの最初の選択肢となっています。

PHP 開発で分散コンピューティングとデータ ストレージに Apache Hadoop を使用するにはどうすればよいですか?この記事ではインストール、設定、実践の3つの側面から詳しく紹介します。

1. インストール

Apache Hadoop をインストールするには、次の手順が必要です:

  1. Apache Hadoop のバイナリ ファイル パッケージをダウンロードします

はいApache Hadoop の公式 Web サイト (http://hadoop.apache.org/releases.html) から最新バージョンをダウンロードします。

  1. Java のインストール

Apache Hadoop は Java に基づいて作成されているため、最初に Java をインストールする必要があります。

  1. 環境変数の構成

Java と Hadoop をインストールした後、環境変数を構成する必要があります。 Windows システムでは、Java および Hadoop の bin ディレクトリ パスをシステム環境変数に追加します。 Linux システムでは、Java と Hadoop の PATH パスを .bashrc または .bash_profile に追加する必要があります。

2. 設定

Hadoop をインストールした後、通常に使用するにはいくつかの設定が必要です。以下にいくつかの重要な構成を示します:

  1. core-site.xml

構成ファイルのパス: $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>
  1. hdfs-site.xml

構成ファイルのパス: $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>
  1. yarn-site.xml

構成ファイルのパス: $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>
  1. mapred-site.xml

構成ファイルのパス: $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 の使用を開始できます。そしてデータストレージ。

  1. データの保存

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');
  1. 分散コンピューティング

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。