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

3npbholx  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(293)

如何在“hadoop(2.5.2)应用程序”中访问hdfs并从每个节点读写文件?我通常知道yarn应用程序在hdfs上运行。我没有一个网站或文件来回答这些基本问题,所以我问。

ppcbkaq5

ppcbkaq51#

yarn应用程序在yarn中运行(或者至少请求内存空间),而不是hdfs。
hdfs只是一个用于文件存储的文件系统。您可以使用许多工具进行读写,例如hadoopcli、mapreduce、apachespark等。
例如,cli是 hadoop fs -put /local-file hdfs://remote/file 这些应用程序是否由yarn管理与hdfs文件的访问方式无关。
hdfs不需要Yarn。它是完全独立的,用于内存资源协商器(以名称命名)。在hadoop环境中,无论哪个节点上运行一个yarn容器,都可以是hdfs datanode,但这并不总是正确的——它只是一个很好的数据设计 NODE_LOCAL 在hdfs术语中,因此不需要在集群中随意移动数据。

jjjwad0x

jjjwad0x2#

在Map上减少基于java的动作或流媒体、spark等。;所有hdfs都可以作为本机文件存储被运行程序访问。所以就像本地文件存储一样,只需使用常用的文件读取命令读取存储的数据。例如,在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"))

在这里我只是阅读hdfs文件夹使用 hadoop fs -getmerge 然后粘贴到文件中。然后将该文件放入 data.table r中的数据结构。同样的方法,您可以使用 subprocess 在python中打包并将结果存储在 pandas .

dfty9e19

dfty9e193#

阅读hdfs用户指南。有许多客户端库,比如libhdfs,使用jaav的文件系统api,可以使用webhdfs restapi、fork-to-shell和do命令。如果你的“Yarn应用程序”是一个m/r应用程序,那么所有这些都已经由m/r处理了,你只需要使用你得到的输入。

相关问题