1

新しいdatastax 4.0でシングルノードクラスターを稼働させました。よく働く。ハイブを使用して、データを構築およびクエリします。サーバー上ではそれ自体。hive $>dse hive を開始して、テーブルを問題なくクエリできます。最新の Hive ODBC ドライバーを使用して同じクエリを実行しようとすると、このエラーが表示されます。それは問題なく接続します。キースペースを照会してテーブルを表示できます。しかし、クエリを実行しようとすると。map/red がキューに入っているように見えますが、次のエラーが発生します。

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks not specified. Estimated from input data size: 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.lang.IllegalArgumentException: Does not contain a valid host:port authority: ${dse.job.tracker}
    at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:147)
    at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:128)
    at org.apache.hadoop.mapred.JobTracker.getAddress(JobTracker.java:2584)
    at org.apache.hadoop.mapred.JobClient.init(JobClient.java:474)
    at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:457)
    at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java:402)
    at org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:144)
    at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:151)
    at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:65)
    at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1414)
    at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1192)
    at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1020)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:888)
    at org.apache.hadoop.hive.service.HiveServer$HiveServerHandler.execute(HiveServer.java:198)
    at org.apache.hadoop.hive.service.ThriftHive$Processor$execute.getResult(ThriftHive.java:646)
    at org.apache.hadoop.hive.service.ThriftHive$Processor$execute.getResult(ThriftHive.java:630)
    at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
    at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
    at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:225)
    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)
Job Submission failed with exception 'java.lang.IllegalArgumentException(Does not contain a valid host:port authority: ${dse.job.tracker})'
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

何を試すべきかについて何か考えはありますか?あなたが提供できる考えや提案/支援を前もって感謝します. 乾杯、エリック

4

3 に答える 3

0

dse.job.tracker プロパティは、Hadoop ジョブを開始する JVM のシステム プロパティで設定する必要があります。プレースホルダーが定義されている場合、Hadoop は適切なシステム プロパティ値でプレースホルダーを置き換えます。そうしないと、そのまま残されるため、エラーが表示されます。

hive、pig、および mahout の場合、mapred.job.tracker プロパティは bin/dse スクリプトで次のように設定されます。

if [ -z "$HADOOP_JT" ]; then
    HADOOP_JT=`$BIN/dsetool jobtracker --use-hadoop-config`
fi
if [ -z "$HADOOP_JT" ]; then
    echo "Unable to run $HADOOP_CMD: jobtracker not found"
    exit 2
fi

#set the JT param as a JVM arg        
export HADOOP_OPTS="$HADOOP_OPTS -Ddse.job.tracker=$HADOOP_JT"

したがって、Hive ODBC ドライバーを使用してプログラムに対して同じことを行う必要があります。それで問題ないと思います。

Hadoop JT の場所をハードコーディングすると、構成ファイルを手動で更新する必要があるため、JT を別のノードに移動することが難しくなります。さらに、プライマリ JT がダウンした場合、dse の自動 JT フェイルオーバーは適切に機能しません。これは、プログラムがまだ古い JT に接続しようとするためです。

于 2014-03-17T08:04:01.743 に答える