如何访问HDFS,如何读写"HADOOP (2.5.2) YARN应用程序“中每个节点的文件?我通常知道YARN应用程序在HDFS上运行。我没有一个网站或文档来回答这些基本问题,所以我问。
发布于 2017-02-03 15:57:32
YARN应用程序在YARN中运行(或者至少请求内存空间),而不是HDFS。
HDFS只是用于文件存储的文件系统。您可以使用许多工具进行读写,例如Hadoop CLI、MapReduce、Apache Spark等。
例如,命令行界面就是hadoop fs -put /local-file hdfs://remote/file
这些应用程序是否由YARN管理,与HDFS文件的访问方式无关。
HDFS不需要纱线。它是完全独立的,用于memory Resource N协商器(它在名称中)。无论YARN容器运行在哪个节点上,都可以是Hadoop环境中的HDFS datanode,但这并不总是正确的-这只是一个很好的设计,因为数据在HDFS术语中是NODE_LOCAL,所以不需要在集群中移动数据。
发布于 2017-02-03 16:03:45
在基于java或流、Spark等map-reduce动作中,所有HDFS都可由YARN运行程序作为本机文件存储访问。因此,就像您的本地文件存储一样,只需使用常用的文件读取命令读取存储的数据。例如,在R流中:
path1 <- paste0("hadoop fs -getmerge /apps/hive/warehouse/",hive_db,".db/dsp/mdse_dept_ref_i=",dept,"/mdse_clas_ref_i=",clas,
" dspD",dept,"C",clas,".txt")
system(command = path1)
filename <- paste0("ItemSlsD",dept,"C",clas,"SC",sbcl,".txt")
item_sls <- data.table(read.table(filename,sep="\001"))这里我只是使用hadoop fs -getmerge读取HDFS文件夹,然后将其粘贴到一个文件中。然后将该文件放入R中的data.table数据结构中。同样,您可以使用python中的subprocess包发出HDFS命令,并将结果存储在pandas中。
发布于 2017-02-03 16:17:51
阅读HDFS Users Guide。有许多像libhdfs这样的客户端库,使用来自Jaav的FileSystem API,你可以使用WebHDFS Rest API,fork to shell和do commands。如果您的'YARN应用程序‘是一个M/R应用程序,那么所有这些都已由M/R处理,您只需使用给定的输入即可。
https://stackoverflow.com/questions/42019330
复制相似问题