/var/mapr/cluster/yarn/rm/staging/username/.staging/job_id_1234_4321/libjars/myudfs.jar (неверный аргумент) - PullRequest
0 голосов
/ 16 апреля 2020

Мы используем Mapr с аутентификацией PAM для выполнения запроса выбора в улье. В запросе выбора используется myudfs.jar, в котором мы определили наши пользовательские функции.

Я перепробовал много ссылок, но не мог понять, почему это происходит. Из трассировки стека кажется, что oop не может скопировать jar в каталог libjars внутри /.staging. Но UDF есть в пути к классам.

Любая помощь будет принята с благодарностью.

java.sql.SQLException: org.apache.hive.service.cli.HiveSQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. 2063.142.526190 /var/mapr/cluster/yarn/rm/staging/username/.staging/job_112233333_0002/libjars/myudfs.jar (Invalid argument)

at org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:380)

at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:257)

at org.apache.hive.service.cli.operation.SQLOperation.access$800(SQLOperation.java:91)

at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork$1.run(SQLOperation.java:348)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1669)

at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.run(SQLOperation.java:362)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

Caused by: java.io.IOException: 2063.142.526190 /var/mapr/cluster/yarn/rm/staging/username/.staging/job_112233333_0002/libjars/myudfs.jar (Invalid argument)

at com.mapr.fs.Inode.throwIfFailed(Inode.java:390)

at com.mapr.fs.Inode.flushPages(Inode.java:505)

at com.mapr.fs.Inode.releaseDirty(Inode.java:583)

at com.mapr.fs.MapRFsOutStream.dropCurrentPage(MapRFsOutStream.java:73)

at com.mapr.fs.MapRFsOutStream.write(MapRFsOutStream.java:85)

at com.mapr.fs.MapRFsDataOutputStream.write(MapRFsDataOutputStream.java:39)

at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:87)

at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:59)

at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:119)

at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:376)

at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:346)

at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:297)

at org.apache.hadoop.mapreduce.JobResourceUploader.copyRemoteFiles(JobResourceUploader.java:203)

at org.apache.hadoop.mapreduce.JobResourceUploader.uploadFiles(JobResourceUploader.java:128)

at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:98)

at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:193)

at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)

at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1669)

at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)

at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:575)

at org.apache.hadoop.mapred.JobClient$1.run(JobClient.java:570)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:422)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1669)

at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:570)

at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:561)

at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java:414)

at org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:151)

at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:201)

at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:100)

at org.apache.hadoop.hive.ql.exec.TaskRunner.run(TaskRunner.java:79)



at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:283)

Ниже описан процесс выполнения запроса и действия перед его выполнением.

Сначала мы создаем функцию, как указано ниже. CREATE FUNCTION func_name AS 'com.test.ClassContainedMapper'

Этот класс ClassConistingMapper упакован в udf-файл с именем myudf.jar. Мы добавили этот jar-файл в classpath, используя свойство hive.aux.jars.path.

Теперь наш запрос выглядит следующим образом: выберите func_name (col1, col2) из ​​dbname.tablename;

Когда этот запрос выполняется, oop пытается загрузить файлы jar, упомянутые в classpath, в папку libjars в промежуточном каталоге. Вот когда это не удается.

Интересно, что на одном подобном кластере этот запрос выполняется успешно, но на другом кластере он не выполняется, за исключением исключения, указанного в трассировке стека.

ОБНОВЛЕНИЕ:

На самом деле перед запросом Выбрать выполняется другой запрос. Это

ADD JAR '/path/to/the/jar/file/myudf.jar';

Это имеет больше смысла, что когда этот запрос выполняется, тогда jar загружается в кластер , И во время этого действия загрузка запроса не удалась.

...