PHP调用SHELL上传本地文件到Hadoop的hdfs中
本来是用thrift进行上传,但其上传效率之低,另人发指,只好选用其它方法。
?
立即学习“PHP免费学习笔记(深入)”;
环境:
php 运行环境为nginx + php-fpm
?
立即学习“PHP免费学习笔记(深入)”;
因为hadoop开启了权限控制,所以直接使用php调用shel进行上传时,没有权限。通过php执行命令看来,php运行的帐户和级均为nobody。因此,解决方法有两个:一,在hadoop的shell中创建目录,并把目录的所有者赋给nobody组的nobody用户。二,原来的目录权限放开,使用777。下面详讲操作步骤:
?
立即学习“PHP免费学习笔记(深入)”;
方法一:./hadoop fs -chown -R nobody:nobody /resources
注:/resources是用户目录,需要根据情况改变
?
立即学习“PHP免费学习笔记(深入)”;
方法二:./hadoop fs -chomod -R 777 /resources
1.) 将所有文件解压到php环境中,本程序才用smarty+php+mysql设计。如果运行不了,请修改hhy文件夹下的smarty.php文件改法请看说明2.) 修改configs下的config.inc.php下的连接数据库的密码和用户名3.) 本程序没有做安全页面,人工导入sql.inc到mysql数据库。管理员初始化帐号为admin,密码为hhy。后台地址:http://你的网站地址/h
注:/resources是用户目录,需要根据情况改变
?
立即学习“PHP免费学习笔记(深入)”;
php调用shell的方式:
public function uploadByShell($local, $hdfs) { $shell = "sh /usr/local/hadoop/hadoop-0.20.2/bin/hadoop fs -copyFromLocal " . $local ." " . $hdfs; $shell .= "; sh /usr/local/hadoop/hadoop-0.20.2/bin/hadoop fs -chmod 777 " . $hdfs; $res = null; system($shell, $res); $flag = false; if ($res == "0") { $flag = true; } return $flag; }??
立即学习“PHP免费学习笔记(深入)”;
?
立即学习“PHP免费学习笔记(深入)”;
?
立即学习“PHP免费学习笔记(深入)”;
?
立即学习“PHP免费学习笔记(深入)”;










