YARN和HDFS的调用方式汇总
2015-11-13 00:25
465 查看
YARN和HDFS的调用方式汇总
总结涉及到运行YARN和HDFS的几种方式,包括使用命令行,JAVA API,REST API,oozie等.调用YARN的几种方式
1. 命令行方式
hadoop jar wordcount.jar hdfs_input hdfs_output
2. JAVA API
hadoop API docs包含了hadoop的全部包,针对YARN的API也包含其中。3. 使用YARN REST APIS
通过YARN(MapReduceV2)提供的api,用户可以自定义提交作业,查看作业状态等,参见Hadoop YARN - Introduction to the web services REST API’s.以查看某个job运行状态为例,参见Cluster Application State API.用户查询id为"application_1399397633663_0003"的job的运行状态时,发送的Request和收到的Response如下,
HTTP Request
GET http://<rm http address:port>/ws/v1/cluster/apps/application_1399397633663_0003/state
Response Header:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked Server: Jetty(6.1.26)
Response Body:
{ "state":"ACCEPTED" }
4. 使用oozie
4.1 使用oozie代理提交作业
使用oozie来提交hadoop作业前,需配置hadoop的core-site.xml文件,如下所示,参见--Oozie Quick Start.<!-- OOZIE --> <property> <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name> <value>[OOZIE_SERVER_HOSTNAME]</value> </property> <property> <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name> <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value> </property>
举一具体例子,
<property> <name>hadoop.proxyuser.oozie.groups</name> <value>group1,group2<value> </property> <property> <name>hadoop.proxyuser.oozie.hosts</name> <value>host1,host2<value> </property>
上述配置表示,在主机host1和host2上,属于group1和group2的所有用户在提交作业时都会切换到用户oozie提交.不过,查看job时,job的提交者显示的是真实用户的名字.详情见Hadoop 2.0中用户安全伪装/模仿机制实现原理.
4.2 具体提交方式
在终端执行命令oozie job -oozie http://localhost:4080/oozie/ -config ~/map-reduce/job.properties -run提交一个mapreduce作业,命令中的job.properties文件内容如下所示,
$ cat ~/map_reduce/job.properties nameNode=hdfs://localhost:9000 jobTracker=localhost:9001 queueName=default examplesRoot=map-reduce oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot} inputDir=input-data outputDir=map-reduce
上面内容中,oozie.wf.application.path指定了workflow.xml在HDFS上的位置.workflow.xml的内容如下所示,
<workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.2"> <start to='wordcount'/> <action name='wordcount'> <map-reduce> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <prepare> </prepare> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> <property> <name>mapred.mapper.class</name> <value>org.myorg.WordCount.Map</value> </property> <property> <name>mapred.reducer.class</name> <value>org.myorg.WordCount.Reduce</value> </property> <property> <name>mapred.input.dir</name> <value>${inputDir}</value> </property> <property> <name>mapred.output.dir</name> <value>${outputDir}</value> </property> </configuration> </map-reduce> <ok to='end'/> <error to='end'/> </action> <kill name='kill'> <value>${wf:errorCode("wordcount")}</value> </kill/> <end name='end'/> </workflow-app>
上述例子的详情见Map Reduce Cookbook.
4.3 通过Oozie Web Services API提交作业
参见官网--Oozie Web Services APIP-roxy_MapReduce_Job_Submission.提交内容与上面的workflow.xml类似,故不再赘述.操作HDFS文件
1. 命令行方式
见HDFS Shell,比如使用如下命令修改hdfs_file的权限为750。hadoop fs -chmod 750 hdfs_file
2. JAVA API
见HDFS Permissions Guide–Changes_to_the_File_System_API。同样的,针对HDFS的API位于hadoop API docs中。3. WebHDFS REST API
参见官网--WebHDFS REST API,包含了对HDFS文件的增删改查及权限处理等.比如,删除一个文件时发送的Request和收到的Response如下所示,Submit a HTTP DELETE request.
curl -i -X DELETE "http://<host>:<port>/webhdfs/v1/<path>?op=DELETE [&recursive=<true |false>]"
The client receives a response with a boolean JSON object
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
相关文章推荐
- HDFS的客户端编写-重构版
- 存储在HDFS上的文件,存储机制及数据安全性如何保证。
- 启动hadoop Warning: $HADOOP_HOME is deprecated.
- Hadoop+Hbase+Zookeeper(独立)环境搭建
- spark+hive+hdfs windows开发环境配置:
- 通过NFSv3挂载HDFS到本地目录
- hdfs数据压缩方案
- RPC机制与hdfs下载源码剖析
- HDFS的Rebalance介绍
- HDFS上传文件的命令使用
- Hadoop辅助排序样例二
- 最新 Hadoop 视频分享
- 最新 Hadoop 视频分享
- 第119讲:HDFS的配置以及安全高效的HDFS配置最佳实践学习笔记
- Hadoop辅助排序样例一
- hadoop分布式安装及其集群配置笔记
- HDFS数据资源使用量分析以及趋势预测
- hdfs常用API和putMerge功能实现
- SODBASE CEP学习进阶篇(七):SODBASE CEP与Spark streaming集成
- GFS、HDFS等分布式文件系统对比介绍