Datastax 4.0错误:不包含有效的host:port authority:$ {dse.job.tracker}

时间:2014-03-05 01:27:25

标签: cassandra hive datastax-enterprise datastax

刚刚启动单个节点群集并使用新的datastax 4.0运行。 效果很好。我们使用配置单元来构建和查询我们的数据。 在服务器上它自己。我可以开始蜂巢了 $> dse hive 和查询表就好了。 当我尝试使用最新的Hive ODBC驱动程序运行相同的查询时,我看到了这个错误。 它连接得很好,我可以查询键空间并查看表格。但是当我尝试运行查询时。看起来地图/红色进入队列,但随后出现以下错误。

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

关于我应该尝试什么的任何想法? 提前感谢您提供的任何想法和建议/帮助。 干杯, 埃里克

3 个答案:

答案 0 :(得分:1)

我通过手动将host:port配置到mapred-site.xml配置文件中解决了这个问题。

只需添加行

即可
<property>
<name>mapred.job.tracker</name>
<value>host:port</value>
</property>

取决于您的配置单元服务器的IP地址和使用的端口(通常为8012)。

这将覆盖dse-mapred-default.xml配置文件中的默认占位符$(dse.job.tracker)。

答案 1 :(得分:0)

需要在启动Hadoop作业的JVM的系统属性中设置dse.job.tracker属性。如果已定义,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故障转移将无法正常工作,因为您的程序仍会尝试连接旧的。

答案 2 :(得分:0)

<configuration>
<property>
  <name>mapreduce.framework.name</name>
   <value>yarn</value>
 </property>
<property>
 <name>mapreduce.jobhistory.address</name>
 <value>localhost:10020</value>
</property>
<property>
 <name>mapreduce.jobtracker.address</name>
 <value>local</value>
</property>
<property>
 <name>mapreduce.jobtracker.http.address</name>
 <value>localhost:50030</value>
</property>
<property>
 <name>mapreduce.jobhhistory.webapp.address</name>
 <value>localhost:19888</value>
</property>

</configuration>