web-dev-qa-db-ja.com

実行エラー、org.Apache.hadoop.Hive.ql.exec.MapRedTaskからコード1を返します

HiveQLで条件付きクエリを実行する際に問題が発生しています。基本的なselect * from tablenameステートメントは正常に機能します。エラーは次のとおりです。

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
  set Hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set Hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapred.reduce.tasks=<number>
Java.net.ConnectException: Call to /0.0.0.0:8021 failed on connection exception: Java.net.ConnectException: Connection refused
        at org.Apache.hadoop.ipc.Client.wrapException(Client.Java:1134)
        at org.Apache.hadoop.ipc.Client.call(Client.Java:1110)
        at org.Apache.hadoop.ipc.RPC$Invoker.invoke(RPC.Java:226)
        at org.Apache.hadoop.mapred.$Proxy5.getProtocolVersion(Unknown Source)
        at org.Apache.hadoop.ipc.RPC.getProxy(RPC.Java:398)
        at org.Apache.hadoop.ipc.RPC.getProxy(RPC.Java:384)
        at org.Apache.hadoop.mapred.JobClient.createRPCProxy(JobClient.Java:501)
        at org.Apache.hadoop.mapred.JobClient.init(JobClient.Java:486)
        at org.Apache.hadoop.mapred.JobClient.<init>(JobClient.Java:469)
        at org.Apache.hadoop.Hive.ql.exec.ExecDriver.execute(ExecDriver.Java:655)
        at org.Apache.hadoop.Hive.ql.exec.MapRedTask.execute(MapRedTask.Java:123)
        at org.Apache.hadoop.Hive.ql.exec.Task.executeTask(Task.Java:130)
        at org.Apache.hadoop.Hive.ql.exec.TaskRunner.runSequential(TaskRunner.Java:57)
        at org.Apache.hadoop.Hive.ql.Driver.launchTask(Driver.Java:1063)
        at org.Apache.hadoop.Hive.ql.Driver.execute(Driver.Java:900)
        at org.Apache.hadoop.Hive.ql.Driver.run(Driver.Java:748)
        at org.Apache.hadoop.Hive.cli.CliDriver.processCmd(CliDriver.Java:209)
        at org.Apache.hadoop.Hive.cli.CliDriver.processLine(CliDriver.Java:286)
        at org.Apache.hadoop.Hive.cli.CliDriver.main(CliDriver.Java:516)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
        at Java.lang.reflect.Method.invoke(Method.Java:597)
        at org.Apache.hadoop.util.RunJar.main(RunJar.Java:186)
Caused by: Java.net.ConnectException: Connection refused
        at Sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at Sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.Java:574)
        at org.Apache.hadoop.net.SocketIOWithTimeout.connect(
....
Job Submission failed with exception 'Java.net.ConnectException(Call to /0.0.0.0:8021 failed on connection exception: Java.net.ConnectException: Connection refused)'
FAILED: Execution Error, return code 1 from org.Apache.hadoop.Hive.ql.exec.MapRedTask

Eclipse IDEとHiveShellの両方から試しました。出力は同じです。助けてください!

9
RimiD

このプロパティはデフォルトでtrueに設定されるため、これで問題が解決するはずです。

set Hive.auto.convert.join.noconditionaltask=false

Hive.auto.convert.join.noconditionaltask-Hiveが、入力ファイルサイズに基づいて共通結合をmapjoinに変換することに関する最適化を有効にするかどうか。

このパラメーターがオンで、n-way結合のテーブル/パーティションのn-1のサイズの合計が指定されたサイズよりも小さい場合、結合は直接マップ結合に変換されます(条件付きタスクはありません)。

7
G.v. Sridhar

ほとんどの場合、このエラーは、コマンドを実行しているHiveユーザーが/ user/Hiveへのアクセス権を持っていないアクセス許可の問題が原因で発生します。

HadoopHiveクラスターの構成を確認する必要があります

3
Salsero06

Hive2では、HiveQLの使用中にレデューサーの数を指定する方法を変更する必要があることに気づきました。 Hive1で私は使用しました:

SET mapred.reduce.tasks=1

ただし、Hive2では、次のものを使用する必要があることに気付きました。

SET mapreduce.job.reduces=1

同じエラーメッセージが表示されましたが、これを変更すると問題が解決しました。

1
apublius

VirtualBoxを使用してclouderaクイックスタートイメージをマウントしています。問題を解決するために次のことをしなければなりませんでした

Sudo vi /etc/Hive/conf/Hive-site.xmlを実行し、Hive.auto.convert.joinプロパティをfalseに設定します(編集するにはrootにする必要があるため、Sudoを使用する必要があります)。

Hive-site.xml.xmlにHive.auto.convert.join.noconditionaltaskプロパティがありませんでした。

0
shazzing