如何从每个节点访问hadoop-yarn应用程序上的hdfs?

时间:2017-02-03 07:54:58

标签: hadoop hdfs yarn

如何从“HADOOP(2.5.2)YARN应用程序”中的每个节点访问HDFS以及读取和写入文件?我通常知道YARN应用程序在HDFS上运行。我没有回答这些基本问题的网站或文件,所以我问。

3 个答案:

答案 0 :(得分:1)

YARN应用程序在YARN中运行(或至少请求内存空间) ,而不是HDFS。

HDFS只是文件存储的文件系统。您可以使用许多工具进行读写,例如Hadoop CLI,MapReduce,Apache Spark等。

CLI例如是hadoop fs -put /local-file hdfs://remote/file

这些应用程序是否由YARN管理与HDFS文件的访问方式无关。

HDFS不需要YARN。它完全是独立的,用于记忆 R esource N egotiator(它在名称中)。运行YARN容器的任何节点都可以是Hadoop环境中的HDFS数据节点,但并非总是如此 - 这只是好的设计,因为HDFS术语中的数据将是NODE_LOCAL,因此集群周围不需要数据混乱。

答案 1 :(得分:0)

在map-reduce动作中基于java或流媒体,Spark等; YARN正在运行的程序可以访问所有HDFS作为本机文件存储。因此,与本地文件存储一样,只需读取使用常用文件读取命令存储的数据。例如在R streaming中:

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中。

答案 2 :(得分:0)

阅读HDFS Users Guide。有许多客户端库,如libhdfs,使用Jaav的FileSystem API,您可以使用WebHDFS Rest API,fork to shell和commands。如果你的YARN应用程序&#39;是一个M / R应用程序然后所有这些已经由M / R处理,您只需要消耗您给出的输入。