`

PHP调用SHELL上传本地文件到Hadoop的hdfs中

    博客分类:
  • php
 
阅读更多

本来是用Thrift进行上传,但其上传效率之低,另人发指,只好选用其它方法。

 

环境:

php 运行环境为nginx + php-fpm

 

因为hadoop开启了权限控制,所以直接使用php调用shel进行上传时,没有权限。通过php执行命令看来,php运行的帐户和级均为nobody。因此,解决方法有两个:一,在hadoop的shell中创建目录,并把目录的所有者赋给nobody组的nobody用户。二,原来的目录权限放开,使用777。下面详讲操作步骤:

 

方法一:./hadoop fs -chown -R nobody:nobody /resources

注:/resources是用户目录,需要根据情况改变

 

方法二:./hadoop fs -chomod -R 777 /resources

注:/resources是用户目录,需要根据情况改变

 

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;
		}
 

 

 

 

 

分享到:
评论

相关推荐

    Hadoop Shell命令

    调用文件系统(FS)Shell命令应使用 bin/hadoop fs 的形式。 所有的的FS shell命令使用URI路 径作为参数。URI格式是scheme://authority/path。对HDFS文件系统,scheme是hdfs,对本地文件 系统,scheme是file。其中...

    hdfs-shell:HDFS Shell是一种HDFS操作工具,可与Hadoop DFS中集成的功能一起使用

    相对于直接调用hdfs dfs函数的优势UI: HDFS DFS为每个命令调用启动JVM,HDFS Shell仅执行一次-这意味着当您需要更频繁地使用HDFS时可以大大提高速度命令可以以简短的方式使用-例如。 hdfs dfs -ls / , ls / -都...

    Hadoop 培训课程(2)HDFS

    Hadoop 培训课程(2)HDFS 分布式文件系统与HDFS HDFS体系结构与基本概念*** HDFS的shell操作*** java接口及常用api*** ---------------------------加深拓展---------------------- RPC调用** HDFS的分布式存储架构的...

    大数据平台构建:访问HDFS.pptx

    调用文件系统(FS)Shell命令应使用 bin/hadoop fs 的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file。其中scheme...

    Hadoop原理与技术Spark操作实验

    (7)从分布式文件系统HDFS中加载数据 (8)可以调用SparkContext的parallelize方法,在Driver中一个已经存在的数组上创建RDD。 (9)可以调用SparkContext的parallelize方法,在Drive (二)spark运行wordcount程序

    hadoop-completion:用于 Bash 完成的 hadoop shell 命令自动完成脚本

    Hadoop Shell 命令自动完成用法与您每天使用的 Bash 自动完成类似,按两次TAB键: TAB TAB 。无需安装获取脚本,假设您将其保存到~/bin/hadoop-completion.sh : curl ...

    Hadoop实战手册

    使用Mysql构建简单数据集市29#Mysql的两种引擎介绍29#创建一个数据表使用Hive cli 进行数据分析29#使用shell 编写Hsql 并使用HiveCli导出数据,使用Mysql命令加载到数据库中。29#使用crontab 新增每日运行任务定时器...

    hadoop+hive+mapreduce的java例子

    3)将测试数据data上传到linux目录下,我放置在:/home/hadoop01/data 2、在使用 JDBC 开发 Hive 程序时, 必须首先开启 Hive 的远程服务接口。使用下面命令进行开启: Java代码 收藏代码 hive --service ...

    大数据开发笔试.docx

    map过程的输出是写入本地磁盘而不是HDFS,但是一开始数据并不是直接写入磁盘而是缓冲在内存中,缓存的好处就是减少磁盘I/O的开销,提高合并和排序的速度。默认的内存缓冲大小是100M(可以配置),所以在书写map函数...

    大型分布式网站架构与实践

     3.1.4 文件上传漏洞 139  3.1.5 DDoS攻击 146  3.1.6 其他攻击手段 149  3.2 常用的安全算法 149  3.2.1 数字摘要 149  3.2.2 对称加密算法 155  3.2.3 非对称加密算法 158  3.2.4 数字签名 162  3.2.5 ...

Global site tag (gtag.js) - Google Analytics