Cassandra Datastax 4.0错误:不包含有效的主机:端口授权:${dse.job.tracker}

Cassandra Datastax 4.0错误:不包含有效的主机:端口授权:${dse.job.tracker},cassandra,hive,datastax-enterprise,datastax,Cassandra,Hive,Datastax Enterprise,Datastax,刚刚建立了一个单节点集群,并使用新的datastax 4.0运行。 效果很好。我们使用配置单元来构建和查询数据。 在服务器上,它是自己的。我可以启动蜂箱 $>dse蜂箱 查询表也很好。 当我尝试使用最新的配置单元ODBC驱动程序运行相同的查询时,我发现了这个错误。 它连接得很好,我可以查询键空间并查看表。但是当我尝试运行查询时。看起来map/red进入了队列,但随后出现以下错误 Total MapReduce jobs = 1 Launching Job 1 out of 1 Number of

刚刚建立了一个单节点集群,并使用新的datastax 4.0运行。 效果很好。我们使用配置单元来构建和查询数据。 在服务器上,它是自己的。我可以启动蜂箱 $>dse蜂箱 查询表也很好。 当我尝试使用最新的配置单元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
MapReduce作业总数=1
正在启动作业1/1
未指定reduce任务数。根据输入数据大小估计:1
要更改减速器的平均负载(以字节为单位):
设置hive.exec.reducers.bytes.per.reducer=
为了限制减速器的最大数量:
设置hive.exec.reducers.max=
为了设置恒定数量的减速器:
设置mapred.reduce.tasks=
java.lang.IllegalArgumentException:不包含有效的主机:端口授权:${dse.job.tracker}
位于org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:147)
位于org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:128)
位于org.apache.hadoop.mapred.JobTracker.getAddress(JobTracker.java:2584)
位于org.apache.hadoop.mapred.JobClient.init(JobClient.java:474)
位于org.apache.hadoop.mapred.JobClient.(JobClient.java:457)
位于org.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java:402)
位于org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:144)
位于org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:151)
位于org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:65)
位于org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1414)
位于org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1192)
位于org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1020)
位于org.apache.hadoop.hive.ql.Driver.run(Driver.java:888)
位于org.apache.hadoop.hive.service.HiveServer$HiveServerHandler.execute(HiveServer.java:198)
位于org.apache.hadoop.hive.service.ThriftHive$Processor$execute.getResult(ThriftHive.java:646)
位于org.apache.hadoop.hive.service.ThriftHive$Processor$execute.getResult(ThriftHive.java:630)
位于org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
位于org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
位于org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:225)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:744)
作业提交失败,出现异常“java.lang.IllegalArgumentException(不包含有效的主机:端口颁发机构:${dse.Job.tracker})”
失败:执行错误,从org.apache.hadoop.hive.ql.exec.mr.MapRedTask返回代码1
有什么想法我应该试试吗? 提前感谢你们提供的任何想法和/或建议/帮助。 干杯
Eric

我通过手动将主机:端口配置到mapred-site.xml配置文件中,解决了这个问题

只需添加行

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

mapred.job.tracker
主机:端口
根据配置单元服务器的ip地址和使用的端口(通常为8012)


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

需要在启动Hadoop作业的JVM的系统属性中设置dse.job.tracker属性。如果已定义占位符,Hadoop将用适当的系统属性值替换占位符。否则,它将保持原样,因此您将看到错误

对于配置单元、pig和mahout,在bin/dse脚本中设置mapred.job.tracker属性,如下所示:

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"
因此,您应该使用hiveodbc驱动程序对您的程序执行相同的操作,我想应该可以

通过对Hadoop JT位置进行硬编码,您将更难将JT移动到另一个节点,因为这样您就必须手动更新配置文件。此外,如果主JT停机,dse的自动JT故障切换将无法正常工作,因为您的程序仍将尝试连接旧的JT。


<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>
mapreduce.framework.name 纱线 mapreduce.jobhistory.address 本地主机:10020 mapreduce.jobtracker.address 地方的 mapreduce.jobtracker.http.address 本地主机:50030 mapreduce.jobhhistory.webapp.address 本地主机:19888
FYI默认值为8021而不是8012这是mapred-site.xml文件的设置,它的作用是