刚刚启动单个节点群集并使用新的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
关于我应该尝试什么的任何想法? 提前感谢您提供的任何想法和建议/帮助。 干杯, 埃里克
答案 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>