Настройка сервера Ambari: OSError: [Errno 2] Нет такого файла или каталога

Я пытаюсь настроить Hadoop на своем экземпляре EC2, используя это руководство. Я пытаюсь настроить сервер ambari, когда получаю эту ошибку:

[root@ip-xxx-xxx-xxx-xxx ec2-user]# ambari-server setup
Using python  /usr/bin/python2.6
Setup ambari-server
Checking SELinux...
WARNING: Could not run /usr/sbin/sestatus: OK
Ambari-server daemon is configured to run under user 'root'. Change this setting [y/n] (n)?
Adjusting ambari-server permissions and ownership...
Checking iptables...
Checking JDK...
JCE Policy archive already exists, using /var/lib/ambari-server/resources/jce_policy-6.zip
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)?
Default properties detected. Using built-in database.
Checking PostgreSQL...
Configuring local database...
Connecting to the database. Attempt 1...
Configuring PostgreSQL...
Traceback (most recent call last):
  File "/usr/sbin/ambari-server.py", line 4242, in <module>
    main()
  File "/usr/sbin/ambari-server.py", line 4061, in main
    setup(options)
  File "/usr/sbin/ambari-server.py", line 2129, in setup
    retcode = configure_postgres()
  File "/usr/sbin/ambari-server.py", line 863, in configure_postgres
    configure_pg_hba_postgres_user()
  File "/usr/sbin/ambari-server.py", line 841, in configure_pg_hba_postgres_user
    for line in fileinput.input(PG_HBA_CONF_FILE, inplace=1):
  File "/usr/lib64/python2.6/fileinput.py", line 253, in next
    line = self.readline()
  File "/usr/lib64/python2.6/fileinput.py", line 322, in readline
    os.rename(self._filename, self._backupfilename)
OSError: [Errno 2] No such file or directory

Я посмотрел это и, видимо, os.rename просто переименовывает файл, и когда возникает эта ошибка, это потому, что какой-то файл, который я пытаюсь переименовать, не существует. Однако я не знаю, какой файл он хочет переименовать и readline функция имеет self как его параметр, поэтому проблема может не запуститься в функции. Я знаю немного Python, но так как программа делает слишком много для меня, чтобы знать, где это исправить.

3 ответа

Вполне вероятно, что у вас есть postgres установлен в каком-то другом месте. Файл, который он ищет, pg_hba.confВы выбрали db postgres по умолчанию для ambari, и он, вероятно, будет искать его в разделе /var/lib/pgsql/data/

Глядя на след, он пытается переименовать файл, но просто не уверен, что именно этот файл.
Чтобы действительно знать, какой файл и местоположение точно, просто отредактируйте скрипт на python: /usr/lib64/python2.6/fileinput.py

Добавьте строку над кодом, чтобы напечатать искомые файлы:

print self._filename, ':', self._backupfilename                 
os.rename(self._filename, self._backupfilename)

Примечание: я столкнулся с подобной ситуацией, и это указывало на /var/lib/pgsql/data, который не существовал (реальное местоположение было под /data/pghadoop). Поэтому я создал символическую ссылку на мое реальное местоположение, т.е. ln -s /data/pghadoop/ /var/lib/pgsql/data.

К сожалению, пока не могу комментировать вопросы, поэтому размещайте предложения здесь: Пожалуйста, опубликуйте результаты команды:

rpm -qa | grep ambari-server

cat /etc/*release

Также будет полезно узнать, какая версия Postgres доступна

rpm -qa | grep postgres

Я думаю, это как-то связано с версией Python, но пока только догадываюсь...

Если мы попытались установить сервер Ambari под Amazon Linux с его прилагаемой базой данных postgresql, вы должны получить ошибку на ambari-server настроить.

Первой основной причиной является сценарий запуска postgresql предполагает, что путь к данным по умолчанию: /var/lib/pgsql92/data

Тем не менее, мы ничего не видим под: /var/lib/pgsql92/dataВместо этого мы должны увидеть что-то под: /var/lib/pgsql9

Вот обходной путь:

  • Исправьте путь данных по умолчанию для связанного с Ambari postgresql:

sudo ln -s /var/lib/pgsql9 /var/lib/pgsql

  • Редактировать скрипт postgresql

# sudo vim /etc/init.d/postgresql

- прокомментируйте это:

#PGSUFFIX=92

- изменить ниже:

PGDATA=/var/lib/pgsql${PGSUFFIX}/data

PGLOG=/var/lib/pgsql${PGSUFFIX}/pgstartup.log

Для того, чтобы:

PGDATA=/var/lib/pgsql/data

PGLOG=/var/lib/pgsql/pgstartup.log

Другие вопросы по тегам