如何在“hadoop(2.5.2)应用程序”中访问hdfs并从每个节点读写文件?我通常知道yarn应用程序在hdfs上运行。我没有一个网站或文件来回答这些基本问题,所以我问。
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术语中,因此不需要在集群中随意移动数据。
hadoop fs -put /local-file hdfs://remote/file
NODE_LOCAL
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 .
hadoop fs -getmerge
data.table
subprocess
pandas
dfty9e193#
阅读hdfs用户指南。有许多客户端库,比如libhdfs,使用jaav的文件系统api,可以使用webhdfs restapi、fork-to-shell和do命令。如果你的“Yarn应用程序”是一个m/r应用程序,那么所有这些都已经由m/r处理了,你只需要使用你得到的输入。
3条答案
按热度按时间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术语中,因此不需要在集群中随意移动数据。jjjwad0x2#
在Map上减少基于java的动作或流媒体、spark等。;所有hdfs都可以作为本机文件存储被运行程序访问。所以就像本地文件存储一样,只需使用常用的文件读取命令读取存储的数据。例如,在r流媒体中:
在这里我只是阅读hdfs文件夹使用
hadoop fs -getmerge
然后粘贴到文件中。然后将该文件放入data.table
r中的数据结构。同样的方法,您可以使用subprocess
在python中打包并将结果存储在pandas
.dfty9e193#
阅读hdfs用户指南。有许多客户端库,比如libhdfs,使用jaav的文件系统api,可以使用webhdfs restapi、fork-to-shell和do命令。如果你的“Yarn应用程序”是一个m/r应用程序,那么所有这些都已经由m/r处理了,你只需要使用你得到的输入。