Настройка удаленного хранилища метаданных улья на postgresql для EMR

Я пытаюсь настроить postgresql db в качестве внешнего хранилища метаданных Hive для AWS EMR. Я пробовал разместить его как на EC2, так и на RDS.

Я уже пробовал шаги, указанные здесь .

Но это не проходит, EMR не работает на этапе подготовки только с сообщением

На главном экземпляре (идентификатор экземпляра) не удалось выполнить подготовку приложения.

Я не смог ничего расшифровать из журнала отказов.

Я также скопировал jar-файл postgresql jdbc в пути

/ usr / lib / hive / lib / и / usr / lib / hive / jdbc / на случай, если у EMR его еще нет, но все равно никакой помощи!

Затем я настраиваю систему, вручную редактируя hive-site.xml и устанавливая свойства:

javax.jdo.option.ConnectionURL
javax.jdo.option.ConnectionDriverName
javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
datanucleus.fixedDatastore
datanucleus.schema.autoCreateTables

и пришлось запустить hive --service metatool -listFSRoot.

После этих ручных настроек я смог заставить EMR использовать postgres db в качестве удаленного хранилища метаданных.

Есть ли способ заставить его работать, используя файл конфигурации, как указано в официальной документации?

Изменить: параметр конфигурации, который я использую для удаленного хранилища метаданных mysql:

classification = hive-site, properties = [javax.jdo.option.ConnectionURL = jdbc: mysql: // [host]: 3306 / [dbname]? createDatabaseIfNotExist = true, javax.jdo.option.ConnectionDriverName = org.mariadb.jdbc .Driver, javax.jdo.option.ConnectionUserName = [пользователь], javax.jdo.option.ConnectionPassword = [пароль]]


person Avik Aggarwal    schedule 30.08.2018    source источник
comment
Классификация обычно представляет собой объект json. Было бы более полезно, если бы вы могли дать полную команду или функцию, которую вы используете для запуска EMR. Или вы запускаете с консоли EMR?   -  person Harsh Bafna    schedule 31.08.2018
comment
Да! мы можем предоставить настройки конфигурации через json или указать их в указанном мной формате. Эти настройки устанавливаются на EMR. Я проверил их на EMR, прежде чем он прекратится. поэтому настройки конфигурации не проблема   -  person Avik Aggarwal    schedule 31.08.2018
comment
Что ж, тогда вы должны проверить журналы EMR, что пошло не так во время подготовки.   -  person Harsh Bafna    schedule 31.08.2018


Ответы (1)


Я никогда не мог найти чистый подход к настройке этого во время самого запуска EMR.

Основная проблема в том, что EMR инициализирует схему с MySQL с помощью команды:

/usr/lib/hive/bin/schematool -initSchema -dbType MySQL

в нашем случае это должно быть postgres.

Следующие шаги вручную позволяют настроить postgres как внешнее хранилище метаданных:

1) Запустите кластер EMR с приложением куста с конфигурациями по умолчанию.

2) Остановите улей с помощью команды:

sudo stop hive-server2

3) Скопируйте jar postgresql-jdbc (хранящийся в каком-то месте S3) в /usr/lib/hive/lib/ на EMR

4) Замените стандартный hive-site.xml в /usr/lib/hive/conf/ пользовательским, содержащим конфигурацию JDO для Postgresql, запущенного на узле EC2.

5) Выполнить команду:

sudo /usr/lib/hive/bin/schematool -upgradeSchema -dbType postgres
person Harsh Bafna    schedule 30.08.2018
comment
Верно! Я смог настроить все это вручную, используя описанные мною шаги, но мое требование - иметь возможность сделать это с использованием самого файла конфигурации, как утверждается во многих статьях! Итак, по вашему мнению, если я настрою Mysql вместо postgresql на машине EC2, он будет работать с файлом конфигурации? - person Avik Aggarwal; 31.08.2018
comment
да. Мы перешли на MySQL, и он работает нормально. - person Harsh Bafna; 31.08.2018
comment
Большой! Не могли бы вы дать мне точные шаги для того же или указать мне на любую статью с инструкциями - person Avik Aggarwal; 31.08.2018
comment
Уже ответил здесь: stackoverflow.com/questions/48301995 / - person Harsh Bafna; 31.08.2018
comment
Не могли бы вы принять приведенный выше ответ для postgres? :-) - person Harsh Bafna; 31.08.2018
comment
На самом деле это не так и для MySQL. Он не работает на этапе предоставления, как указано в вопросе! Я предоставил файл конфигурации, как указано в документации. - person Avik Aggarwal; 31.08.2018
comment
Можете ли вы проверить, доступен ли порт MySQL из вашего кластера EMR? Вам нужно будет открыть порт из входящих / исходящих настроек вашей группы безопасности. Или вы также можете отключить брандмауэр на машине, на которой установлен mysql. - person Harsh Bafna; 31.08.2018
comment
Да! Я уже проверял настройку порта. Mysql доступен из подготовленного EMR! - person Avik Aggarwal; 31.08.2018
comment
Можете ли вы поделиться своим кодом, который вы используете для создания экземпляра кластера EMR? - person Harsh Bafna; 31.08.2018