Корневой файл dir:/tmp/hive на HDFS должен быть доступен для записи. Текущие разрешения: rw-rw-rw- (в Windows)
Я запускаю Spark в Windows 7. Когда я использую Hive, я вижу следующую ошибку
The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw-
Разрешения устанавливаются следующим образом
C:\tmp>ls -la
total 20
drwxr-xr-x 1 ADMIN Administ 0 Dec 10 13:06 .
drwxr-xr-x 1 ADMIN Administ 28672 Dec 10 09:53 ..
drwxr-xr-x 2 ADMIN Administ 0 Dec 10 12:22 hive
Я установил "полный контроль" для всех пользователей из Windows- > properties- > security- > Advanced.
Но я все еще вижу ту же ошибку. Любая помощь, пожалуйста?
Я проверил множество ссылок, некоторые говорят, что это ошибка на Spark 1.5. Это правда?
Спасибо
Aarthi
Ответы
Ответ 1
Прежде всего, убедитесь, что вы используете правильный Winutils для своей ОС. Затем следующий шаг - разрешения.
В окнах вам нужно запустить следующую команду на cmd:
D:\winutils\bin\winutils.exe chmod 777 D:\tmp\hive
Надеюсь, что вы загрузили winutils уже n, установив HADOOP_HOME.
Ответ 2
Прежде всего проверьте свой компьютерный домен. Попробуйте
c:\work\hadoop-2.2\bin\winutils.exe ls c:/tmp/hive
Если эта команда говорит об отказе в доступе или ошибке FindFileOwnerAndPermission (1789): не удалось установить доверительные отношения между этой рабочей станцией и основным доменом.
Это означает, что ваш компьютерный контроллер домена недоступен, возможно, причина в том, что вы не на том же VPN, что и ваш системный контроллер домена. Подключите к VPN и повторите попытку.
Теперь попробуйте решение, предоставленное Виктором или Нишу.
Ответ 3
Следующее решение работало на Windows для меня:
- Сначала я определил HADOOP_HOME. Он подробно описан здесь
- Далее, мне понравилось Nishu Tayal, но с одним отличием:
C:\temp\hadoop\bin\winutils.exe chmod 777 \tmp\hive
\tmp\hive
не является локальным каталогом
Ответ 4
Вам нужно установить разрешения для этого каталога на HDFS, а не на вашу локальную файловую систему. /tmp
не означает C:\tmp
, если вы не установите fs.defaultFs
в файле core-site.xml на file://c:/
, что, вероятно, является плохим.
Проверьте его, используя
hdfs dfs -ls /tmp
Установите его, используя
hdfs dfs -chmod 777 /tmp/hive
Ответ 5
Ошибка при запуске искровой оболочки на виртуальной машине, запущенной в Windows:
Ошибка msg: Корневой файл dir:/tmp/hive на HDFS должен быть доступен для записи. Разрешение отклонено
Решение:
/tmp/hive является временным каталогом. В этом файле хранятся только временные файлы.
место нахождения. Нет проблем, даже если мы удалим этот каталог, будет создан, когда
требуется с соответствующими разрешениями.
Шаг 1) В hdfs удалите каталог /tmp/hive == > "hdfs dfs -rm -r/tmp/hive"
2) На уровне ОС также удалите dir/tmp/hive == > rm -rf/tmp/hive
После этого запустила искровую оболочку, и она отлично работала.
Ответ 6
В Spark Jira есть ошибка для того же. Это было разрешено несколько дней назад. Вот ссылка.
https://issues.apache.org/jira/browse/SPARK-10528
Комментарии имеют все варианты, но не гарантированное решение.
Ответ 7
Проблема решена в искровой версии 2.0.2 (14 ноября 2016 г.). Используйте эту версию.
Версия 2.1.0 28 декабря 2016 выпуска имеет те же проблемы.
Ответ 8
Основная причина заключается в том, что вы начали искру в неправильном каталоге. создайте папки в D://tmp/hive (дайте полные разрешения) и начните свою искру в D: drive
D: > искровая оболочка
теперь это сработает..:)
Ответ 9
Я тоже сталкивался с этой проблемой. Эта проблема связана с сетью. Я установил спарк на Windows 7, используя определенный домен.
Доменное имя можно проверить
Пуск → компьютер → Правый клик → Свойства → Имя компьютера, настройки домена и рабочей группы → нажмите на изменение → Имя компьютера (вкладка) → Нажмите Изменить → Имя домена.
Когда я запускаю команду spark-shell, она работает нормально, без каких-либо ошибок.
В других сетях я получил ошибку разрешения на запись. Чтобы избежать этой ошибки, запустите команду spark на домене, указанном выше.
Ответ 10
Это простой 4-х шаговый процесс:
Для Spark 2. 0+:
- Загрузить Hadoop для Windows/Winutils
-
Добавьте это в свой код (до инициализации SparkSession):
if(getOS()=="windows"){
System.setProperty("hadoop.home.dir", "C:/Users//winutils-master/hadoop-2.7.1");
}
-
Добавьте это в ваш сеанс spark (вы можете изменить его на C: /Temp
вместо Desktop).
.config("hive.exec.scratchdir","C:/Users//Desktop/tmphive")
-
Откройте cmd.exe и запустите:
"path\to\hadoop-2.7.1\bin\winutils.exe" chmod 777 C:\Users\\Desktop\tmphive
Ответ 11
Возможно, попробуйте дать 777 разрешение на папку /tmp/hive, потому что я думаю, что искра запускается как анонимный пользователь (который поступит в другую категорию пользователей), и это разрешение должно быть рекурсивным.
У меня была эта же проблема с 1.5.1 версией искры для улья, и она работала, давая разрешение 777, используя команду ниже в linux
chmod -r 777 /tmp/hive
Ответ 12
Используйте последнюю версию "winutils.exe" и попробуйте. https://github.com/steveloughran/winutils/blob/master/hadoop-2.7.1/bin/winutils.exe
Ответ 13
Использование правильной версии winutils.exe помогло мне. Winutils должны быть из версии Hadoop, для которой был предварительно создан Spark.
Задайте для переменной среды HADOOP_HOME расположение bin файла winutils.exe. Я сохранил winutils.exe вместе с файлами C:\Spark\bin. Так что теперь мои SPARK_HOME и HADOOP_HOME указывают на одно и то же местоположение C:\Spark
.
Теперь, когда winultils был добавлен в путь, дайте разрешения для папки winutils.exe chmod 777 C:\tmp\hive
используя winutils.exe chmod 777 C:\tmp\hive
Ответ 14
Я получаю ту же ошибку "Корневая директория: /tmp/hive в HDFS должна быть доступной для записи. Текущие разрешения: rw-rw-rw-" в Windows 7. Вот что я сделал, чтобы решить эту проблему:
- Я установил Spark в C:\Program Files (x86)..., он искал /tmp/hive в C: т.е. C:\tmp\hive
- Я скачал WinUtils.exe с https://github.com/steveloughran/winutils. Я выбрал версию, аналогичную той, которую я выбрал для пакета hadoop при установке Spark. то есть hadoop-2.7.1 (вы можете найти его в папке bin, т.е. https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin)
- Теперь использовал следующую команду, чтобы сделать папку c:\tmp\hive доступной для записи winutils.exe chmod 777\tmp\hive
Примечание. В предыдущей версии winutils команда chmod безошибочно устанавливала требуемое разрешение, но spark по-прежнему жаловался, что папка /tmp/hive недоступна для записи.
Ответ 15
Я только что решил эту проблему в моей среде Win7. Я изменил настройки DNS с неверным IP. Это делает мой рабочий стол не удалось подключиться к контроллеру домена. После того, как я установил правильный DNS IP и перезагрузил машину. Вопрос исчез. Я могу использовать winutils для каталога.