因此,我试图通过Windows机器上的R远程连接到HDFS服务器。
但是,我在"rhdfs“包中使用RStudio,因为我必须创建HADOOP_CMD环境变量,所以我将Hadoop下载到机器上,以便给出环境变量,并更改核心-site.xml。
以前我尝试过,成功地将Kerberized服务器与Keytab连接起来。
这是我的代码:
Sys.setenv(HADOOP_STREAMING =
"C:/Users/antonio.silva/Desktop/hadoop-2.7.3/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar")
Sys.setenv(HADOOP_CMD =
"C:/Users/antonio.silva/Desktop/hadoop-2.7.3/bin/hadoop")
Sys.setenv(HADOOP_HOME =
"C:/Users/antonio.silva/Desktop/hadoop-2.7.3")
Sys.getenv("HADOOP_STREAMING")
Sys.getenv("HADOOP_CMD")
Sys.getenv("HADOOP_HOME")
#loading libraries
library(rJava)
library(rmr2)
library(rhdfs)
#init of the classpath
hadoop.class.path <- list.files(path = c("C:/Users/antonio.silva/Desktop/jars/hadoop/"),
pattern = "jar", full.names = T)
.jinit(classpath=hadoop.class.path)
hdfs.init()在执行hdfs.init()方法和执行hdfs.defaluts()之后,fs变量和工作方向是同一个目录。
我做错了什么?
发布于 2018-12-11 10:14:02
我想出了解决办法。
如果服务器具有Kerberos身份验证方法,则keytab身份验证对于访问服务器非常有用。见如何通过R与Kerberos键签连接蜂箱?。
之后,它需要下载到您的计算机,在本例中,是Windows机器,该版本的Hadoop出现在集群中,并将Hadoop放在一个Windows目录中。
然后,要配置Hadoop,您需要遵循这些步骤,直到"Hadoop配置“为止。在窗口10上逐步安装Hadoop2.8.0
集群中的Hadoop包含将在本地计算机中使用的一些配置文件。这些文件是核心-site.xml、yar-site.xml、hdfs-site.xml。它们包含有关集群的信息,例如默认FS、集群中使用的凭据类型、主机名和使用的端口。
附加:要在连接到Datanodes时使用主机名,需要在hdfs-site.xml文件中添加这些行。
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
<description>Whether clients should use datanode hostnames when
connecting to datanodes.
</description>
</property>最后,在R中使用以下代码来执行连接:
#set The Environment variables in R
Sys.setenv(HADOOP_HOME = "C:/Users/antonio.silva/Desktop/hadoop-2.7.3/bin/winutils.exe")
Sys.setenv(HADOOP_CMD = "C:/Users/antonio.silva/Desktop/hadoop-2.7.3/bin/hadoop")
Sys.setenv(HADOOP_STREAMING = "C:/Users/antonio.silva/Desktop/hadoop-2.7.3/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar")
library(rhdfs)
hdfs.init()
hdfs.ls("/")所有这些都需要执行到Kerberized集群的连接。
发布于 2020-08-27 11:54:38
您需要重新启动R环境。如果使用Rstudio执行会话->重新启动R
现在做加载库和做
hdfs.init().https://stackoverflow.com/questions/53648755
复制相似问题