【问题标题】:Datastax 4.0 Error: Does not contain a valid host:port authority: ${dse.job.tracker}Datastax 4.0 错误:不包含有效的主机:端口权限:${dse.job.tracker}
【发布时间】:2014-04-06 20:36:03
【问题描述】:

刚刚使用新的 datastax 4.0 启动并运行了一个单节点集群。 效果很好。我们使用 hive 来构建和查询我们的数据。 在服务器上它自己。我可以启动蜂巢 $>dse 蜂巢 和查询表就好了。 当我尝试使用最新的 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

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

【问题讨论】:

    标签: cassandra hive datastax-enterprise datastax


    【解决方案1】:

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

    只需添加行

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

    取决于你的 Hive 服务器的 IP 地址和使用的端口(通常是 8012)。

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

    【讨论】:

    • 仅供参考,默认是 8021 而不是 8012
    【解决方案2】:

    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 故障转移将无法正常工作,因为您的程序仍会尝试连接旧的。

    【讨论】:

      【解决方案3】:
      <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>
      

      【讨论】:

      • 这是mapred-site.xml文件的设置,它的工作
      猜你喜欢
      • 2022-08-24
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多