Как получить доступ к HDFS через R? - PullRequest
0 голосов
/ 06 декабря 2018

Итак, я пытаюсь подключиться к серверу HDFS через R удаленно на компьютере с Windows.

Однако я использую RStudio с пакетом "rhdfs", и так как мне пришлось создать HADOOP_CMDПеременную среды, я загрузил Hadoop на свой компьютер, чтобы передать переменные среды, и изменил core-site.xml.

Ранее я пытался успешно подключиться к серверу Kerberized Hive с 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 и рабочий директор находятся в одном каталоге.

Что я делаю не так?

1 Ответ

0 голосов
/ 11 декабря 2018

Я нашел решение этой проблемы.

Если на сервере есть метод аутентификации Kerberos, для доступа к серверу может быть полезна аутентификация с помощью keytab.См. Как подключиться к HIVE через R с помощью Kerberos keytab? .

После этого необходимо загрузить на свой компьютер, в данном случае на компьютере Windows, ту же версию Hadoopпредставьте в кластере и поместите Hadoop в каталог Windows.

Затем, чтобы настроить Hadoop, вам необходимо выполнить следующие шаги до пункта «Настройка Hadoop». Пошаговая установка Hadoop 2.8.0 в Window 10

Hadoop в кластере содержит некоторые файлы конфигурации, которые будут использоваться на вашем локальном компьютере.Это файлы core-site.xml, yarn-site.xml, hdfs-site.xml.Они содержат информацию о кластере, такую ​​как FS по умолчанию, тип учетных данных, используемых в кластере, имя хоста и используемый порт.

Дополнительно: чтобы использовать имена хостов при подключении к датодам, необходимоДобавьте эти строки в файл 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 Hadoop.

...