Ошибка WSO2 BAM при запуске скрипта куста "am_stats_analyzer_163" cassandra
Я запускаю APIM и BAM на 2 разных виртуальных машинах с внешним Cassandra на BAM.
У меня ошибка "Ошибка при выполнении сценария Hive. Запрос вернул ненулевой код: 9, причина: FAILED: Ошибка выполнения, код возврата 2 из org.apache.hadoop.hive.ql.exec.MapRedTask" при выполнении сценария улья (am_stats_analyzer_163)
Это полная трассировка ошибок:
TID: [0] [BAM] [2014-03-18 12:34:07,948] ERROR {org.apache.hadoop.hive.ql.exec.ExecDriver} - Ended Job = job_local_0001 with errors {org.apache.hadoop.hive.ql.exec.ExecDriver}
TID: [0] [BAM] [2014-03-18 12:34:07,950] ERROR {org.apache.hadoop.hive.ql.exec.ExecDriver} - Error during job, obtaining debugging information... {org.apache.hadoop.hive.ql.exec.ExecDriver}
TID: [0] [BAM] [2014-03-18 12:34:08,041] ERROR {org.apache.hadoop.hive.ql.exec.Task} - Execution failed with exit status: 2 {org.apache.hadoop.hive.ql.exec.Task}
TID: [0] [BAM] [2014-03-18 12:34:08,042] ERROR {org.apache.hadoop.hive.ql.exec.Task} - Obtaining error information {org.apache.hadoop.hive.ql.exec.Task}
TID: [0] [BAM] [2014-03-18 12:34:08,042] ERROR {org.apache.hadoop.hive.ql.exec.Task} -
Task failed!
Task ID:
Stage-0
Logs:
{org.apache.hadoop.hive.ql.exec.Task}
TID: [0] [BAM] [2014-03-18 12:34:08,042] ERROR {org.apache.hadoop.hive.ql.exec.Task} - /opt/wso2bam-2.4.0/repository/logs//wso2carbon.log {org.apache.hadoop.hive.ql.exec.Task}
TID: [0] [BAM] [2014-03-18 12:34:08,042] ERROR {org.apache.hadoop.hive.ql.exec.ExecDriver} - Execution failed with exit status: 2 {org.apache.hadoop.hive.ql.exec.ExecDriver}
TID: [0] [BAM] [2014-03-18 12:34:08,042] ERROR {org.apache.hadoop.hive.ql.Driver} - FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask {org.apache.hadoop.hive.ql.Driver}
TID: [0] [BAM] [2014-03-18 12:34:08,044] ERROR {org.wso2.carbon.analytics.hive.impl.HiveExecutorServiceImpl} - Error while executing Hive script.
Query returned non-zero code: 9, cause: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask {org.wso2.carbon.analytics.hive.impl.HiveExecutorServiceImpl}
java.sql.SQLException: Query returned non-zero code: 9, cause: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:189)
at org.wso2.carbon.analytics.hive.impl.HiveExecutorServiceImpl$ScriptCallable.executeHiveQuery(HiveExecutorServiceImpl.java:569)
at org.wso2.carbon.analytics.hive.impl.HiveExecutorServiceImpl$ScriptCallable.call(HiveExecutorServiceImpl.java:282)
at org.wso2.carbon.analytics.hive.impl.HiveExecutorServiceImpl$ScriptCallable.call(HiveExecutorServiceImpl.java:189)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
TID: [0] [BAM] [2014-03-18 12:34:08,044] ERROR {org.wso2.carbon.analytics.hive.task.HiveScriptExecutorTask} - Error while executing script : am_stats_analyzer_163 {org.wso2.carbon.analytics.hive.task.HiveScriptExecutorTask}
org.wso2.carbon.analytics.hive.exception.HiveExecutionException: Error while executing Hive script.Query returned non-zero code: 9, cause: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
org.wso2.carbon.analytics.hive.impl.HiveExecutorServiceImpl.execute(HiveExecutorServiceImpl.java:115)
org.wso2.carbon.analytics.hive.task.HiveScriptExecutorTask.execute(HiveScriptExecutorTask.java:60)
at org.wso2.carbon.ntask.core.impl.TaskQuartzJobAdapter.execute(TaskQuartzJobAdapter.java:67)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Имя пользователя и пароли, которые я использую для cassandra, являются значениями по умолчанию (admin/admin), и они определены как таковые в [BAM_HOME]/repository/conf/etc/cassandra-auth.xml и в [BAM_HOME]/repository/conf/datasources/master-datasources.xml
Вы знаете, в чем может быть проблема?
Вечный конфиг источника данных MySQL:
<datasource>
<name>WSO2AM_STATS_DB</name>
<description>The datasource used for getting statistics to API Manager</description>
<jndiConfig>
<name>jdbc/WSO2AM_STATS_DB</name>
</jndiConfig>
<definition type="RDBMS">
<configuration>
<url>jdbc:mysql://GCEP-IDS:3306/APIMGTSTATS_DB</url>
<username>ldapadmin</username>
<password>ldapadmin</password>
<driverClassName>com.mysql.jdbc.Driver</driverClassName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<minIdle>5</minIdle>
<testOnBorrow>true</testOnBorrow>
<validationQuery>SELECT 1</validationQuery>
<validationInterval>30000</validationInterval>
</configuration>
</definition>
</datasource>
Конфигурацияapi-manager.xml:
<Enabled>true</Enabled>
<PublisherClass>org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher</PublisherClass>
<ThriftPort>7611</ThriftPort>
<BAMServerURL>tcp://135.238.115.232:7611</BAMServerURL>
<BAMUsername>admin</BAMUsername>
<BAMPassword>admin</BAMPassword>
<DataSourceName>jdbc/WSO2AM_STATS_DB</DataSourceName>
Также таблицы были созданы внутри БД MySQL:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| APIMGTSTATS_DB |
| mysql |
| regdb |
| test |
+--------------------+
5 rows in set (0.02 sec)
mysql> use APIMGTSTATS_DB
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_APIMGTSTATS_DB |
+---------------------------+
| API_REQUEST_SUMMARY |
| API_RESPONSE_SUMMARY |
| API_VERSION_USAGE_SUMMARY |
+---------------------------+
3 rows in set (0.00 sec)
mysql> select * from API_REQUEST_SUMMARY;
Empty set (0.00 sec)
mysql> select * from API_RESPONSE_SUMMARY;
Empty set (0.00 sec)
mysql> select * from API_VERSION_USAGE_SUMMARY;
Empty set (0.00 sec)
mysql> \q
Bye
[root@GCEP-IDS ~]#
3 ответа
Убедитесь, что вы настроили api-manager.xml с правильными значениями BAMServerURL и ThriftPort, которые находятся в /repository/conf/api-manager.xml
<!-- Enable/Disable the API usage tracker. -->
<Enabled>true</Enabled>
<PublisherClass>org.wso2.carbon.apimgt.usage.publisher.APIMgtUsageDataBridgeDataPublisher</PublisherClass>
<ThriftPort>7612</ThriftPort>
<BAMServerURL>tcp://localhost:7612/</BAMServerURL>
<BAMUsername>admin</BAMUsername>
<BAMPassword>admin</BAMPassword>
<!-- JNDI name of the data source to be used for getting BAM statistics. This data source should
be defined in the master-datasources.xml file in conf/datasources directory. -->
<DataSourceName>jdbc/WSO2AM_STATS_DB</DataSourceName>
</APIUsageTracking>
Похоже, проблема связана с запросом Hive, связанным с СУБД, из-за исключения SQL. Пожалуйста, проверьте, запускается ли скрипт Hive при удалении запросов "insert overwrite...". Если это так, перепроверьте эту часть сценария. Перед повторным выполнением запроса вручную удалите таблицу RDBMS (например, с помощью клиента базы данных H2) и добавьте "drop table ...", как запросы в верхней части сценария Hive, чтобы очистить таблицы Hive в оболочке СУБД.
Попробуйте установить hostName в 0.0.0.0 в data-bridge-config.xml:
<thriftDataReceiver>
<hostName>0.0.0.0</hostName>
<port>7611</port>
<securePort>7711</securePort>
</thriftDataReceiver>
и установите rpc_address: 0.0.0.0 в cassandra.yaml.
Ошибка была связана с неверным хостом / портом.