Hadoop은 Apache Foundation에서 개발한 분산 시스템 인프라입니다. 사용자는 배포의 기본 세부 사항을 알지 못해도 분산 프로그램을 개발할 수 있습니다. 고속 컴퓨팅 및 저장을 위해 클러스터의 기능을 최대한 활용하세요.
Hadoop은 Java로 작성되었지만 Hadoop 스트림은 사용자가 어떤 언어로든 작성할 수 있는 API를 제공합니다. 함수를 매핑하고 함수를 줄입니다. (추천 학습: PHP 비디오 튜토리얼)
Hadoop 흐름의 핵심은 UNIX 표준 흐름을 프로그램과 Hadoop 간의 인터페이스로 사용한다는 것입니다. 따라서 모든 프로그램이 표준 입력 스트림에서 데이터를 읽고 표준 출력 스트림에 데이터를 쓸 수 있는 한, MapReduce 프로그램의 map 기능과 축소 기능은 Hadoop 스트림을 통해 어떤 언어로든 작성할 수 있습니다.
예:
bin/hadoop jar contrib/streaming/hadoop-streaming-0.20.203.0.jar -mapper /usr/local/hadoop/mapper.php -reducer /usr/local/hadoop/reducer.php -input test/* -output out4
Hadoop 스트리밍에 의해 도입된 패키지: hadoop-streaming-0.20.203.0.jar, Hadoop 루트 디렉터리에 hadoop-streaming.jar이 없습니다. , 스트리밍이기 때문에 contrib에서 찾아야 합니다. hadoop-0.20.2를 예로 들면 다음과 같습니다.
-input: 입력 hdfs에 대한 경로를 지정합니다. file
- 출력: 출력 hdfs 파일의 경로를 지정합니다.
-mapper: 맵 함수를 지정합니다.
-reducer: 축소 함수를 지정합니다.
mapper 함수
mapper.php 파일에 다음 코드를 작성하세요.
#!/usr/local/php/bin/php <?php $word2count = array(); // input comes from STDIN (standard input) // You can this code :$stdin = fopen(“php://stdin”, “r”); while (($line = fgets(STDIN)) !== false) { // remove leading and trailing whitespace and lowercase $line = strtolower(trim($line)); // split the line into words while removing any empty string $words = preg_split('/\W/', $line, 0, PREG_SPLIT_NO_EMPTY); // increase counters foreach ($words as $word) { $word2count[$word] += 1; } } // write the results to STDOUT (standard output) // what we output here will be the input for the // Reduce step, i.e. the input for reducer.py foreach ($word2count as $word => $count) { // tab-delimited echo $word, chr(9), $count, PHP_EOL; } ?>
위 내용은 PHP에서 하둡을 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!