红联Linux门户
Linux帮助

ubuntu使用PHP访问Hadoop,利用WebHDFS

发布时间:2016-07-22 15:35:37来源:linux网站作者:cptbtptpss
Hadoop是使用JAVA语言编写的,有时候为了方便,需要使用PHP来访问Hadoop的文件系统,我们可以利用WebHDFS来访问,核心是利用curl命令。
确保ubuntu安装了curl。
然后有美国人写的方法,https://github.com/simpleenergy/php-WebHDFS
还有一个日本人写的方法,这两种方法都行,链接https://github.com/Yujiro3/WebHDFS,下载他们的代码。
 
我这里使用的是美国人写的,文件结构目录如下:
ubuntu使用PHP访问Hadoop,利用WebHDFS
 
然后写访问方法。testHDFS.php
<?php  
/** 
* Created by PhpStorm. 
* User: ss 
* Date: 16-7-20 
* Time: 下午4:39 
*/
require_once('../HDFS/org/apache/hadoop/WebHDFS.php');  
require_once('../HDFS/org/apache/hadoop/tools/Curl.php');  
require_once('../HDFS/org/apache/hadoop/WebHDFS/Exception.php');
$host = '192.168.111.73';
$hdfs = new org\apache\hadoop\WebHDFS(  
$host,  
'50070',  
'hadoop',  
'Master00',  
'9000',  
false);
echo $hdfs->getHomeDirectory(); 
//  
echo "<br>";  
//  
$response = $hdfs->getFileStatus('/user/hadoop/input/capacity-scheduler.xml');  
echo "<br>";  
print_r('hahahahaaha' . $response);  
echo "<br>";
print_r($hdfs->open("/user/hadoop/input/test.txt"));  
echo '<br>';  
print_r($hdfs->append("/user/hadoop/input/test.txt", "lalalaalalal"));  
echo '<br>';  
print_r($hdfs->open("/user/hadoop/input/test.txt"));  
echo '<br>';
print_r($hdfs->append("/user/hadoop/input/test.txt", "\0a\32\12\77"));  
echo '<br>';  
print_r($hdfs->open("/user/hadoop/input/test.txt"));  
 
然后访问结果如下:
ubuntu使用PHP访问Hadoop,利用WebHDFS
成功。
 
有的时候catch报错显示不出来是因为namenode解析的访问的地址找不到,就会报错,但是又找不到错误在哪,只能自己手动利用curl命令找错误。我是在我的ubuntu下装了3台虚拟机Master00,Slave00,Slave01.有的时候我的ubuntu主机找不到Slave00和Slave01的网址,需要在我的ubuntu下配置/etc/hosts里面配置Master00,Slave00,Slave01的网址。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/22619.html