ubuntu使用PHP访问Hadoop,利用WebHDFS
2016-07-20 17:33
465 查看
Hadoop是使用JAVA语言编写的,有时候为了方便,需要使用PHP来访问Hadoop的文件系统,我们可以利用WebHDFS来访问,核心是利用curl命令。
确保ubuntu安装了curl
然后有美国人写的方法,https://github.com/simpleenergy/php-WebHDFS
还有一个日本人写的方法,这两种方法都行,链接https://github.com/Yujiro3/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"));然后访问结果如下:
成功。
有的时候catch报错显示不出来是因为namenode解析的访问的地址找不到,就会报错,但是又找不到错误在哪,只能自己手动利用curl命令找错误。我是在我的ubuntu下装了3台虚拟机Master00,Slave00,Slave01.有的时候我的ubuntu主机找不到Slave00和Slave01的网址,需要在我的ubuntu下配置/etc/hosts里面配置Master00,Slave00,Slave01的网址。
确保ubuntu安装了curl
然后有美国人写的方法,https://github.com/simpleenergy/php-WebHDFS
还有一个日本人写的方法,这两种方法都行,链接https://github.com/Yujiro3/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"));然后访问结果如下:
成功。
有的时候catch报错显示不出来是因为namenode解析的访问的地址找不到,就会报错,但是又找不到错误在哪,只能自己手动利用curl命令找错误。我是在我的ubuntu下装了3台虚拟机Master00,Slave00,Slave01.有的时候我的ubuntu主机找不到Slave00和Slave01的网址,需要在我的ubuntu下配置/etc/hosts里面配置Master00,Slave00,Slave01的网址。
相关文章推荐
- php集成动态口令认证
- PHPMyadmin 配置
- php中的$_SERVER['SERVER_NAME']
- PHP编码规范整理,很全很实用(图文版)
- 功能强大的php分页函数
- PHP查询数据库中表是否存在 方法
- php第一次无法获取cookie问题处理
- php发送get、post请求的6种方法代码示例
- 用php实现一个敏感词过滤功能
- PHP-无限级分类
- PHP转换文本框内容为HTML格式的方法
- PHP 如何查看数据库中数据表是否存在
- PHP中cookie、localStorage、session、的用法
- php如何一起查询多个数据库的所有表?
- PHP购物车类Cart.class.php定义与用法示例
- php用chuanzhi的mvc模式增删改查分析
- 如何在虚拟机搭建ftp服务器供宿主机下载文件
- 从0开始一步一步用Laravel5.2集成原生微信支付
- PHP之:随机抽取一个数&&随机函数
- thinkphp中分页类改写,实现类似ajax效果;