Вопрос по java, hdfs, mapreduce, hadoop – Ошибка API Jobtracker - вызов localhost / 127.0.0.1: сбой 50030 при локальном исключении: java.io.EOFException

4

Я пытаюсь подключить свой трекер с помощью Java.
Ниже показана программа, которую я пытаюсь выполнить.

                   public static void main(String args[]) throws IOException {

            Configuration conf = new Configuration();
            conf.addResource(new Path(
                    "/home/user/hadoop-1.0.3/conf/core-site.xml"));
            conf.addResource(new Path(
                    "/home/user/hadoop-1.0.3/conf/hdfs-site.xml"));
            conf.addResource(new Path(
                    "/home/user/hadoop-1.0.3/conf/mapred-site.xml"));


            InetSocketAddress jobtracker = new InetSocketAddress("localhost", 50030);
            JobClient jobClient = new JobClient(jobtracker, conf);
            jobClient.setConf(conf);
            JobStatus[] jobs = jobClient.jobsToComplete();

            for (int i = 0; i < jobs.length; i++) {
                JobStatus js = jobs[i];
                if (js.getRunState() == JobStatus.RUNNING) {
                    JobID jobId = js.getJobID();
                    System.out.println(jobId);
                }
            }

This is the exception i get. Even i though i try replacing localhost with 127.0.0.1 it doesnt work . The same error.

 Exception in thread "main" java.io.IOException: Call to localhost/127.0.0.1:50030 failed on local exception: java.io.EOFException
        at org.apache.hadoop.ipc.Client.wrapException(Client.java:1107)
        at org.apache.hadoop.ipc.Client.call(Client.java:1075)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
        at org.apache.hadoop.mapred.$Proxy1.getProtocolVersion(Unknown Source)
        at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:396)
        at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:379)
        at org.apache.hadoop.mapred.JobClient.createRPCProxy(JobClient.java:480)
        at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:534)
        at com.tcs.nextgen.searchablemetadata.executor.factory.JobChecker.main(JobChecker.java:34)
    Caused by: java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:375)
        at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:811)
        at org.apache.hadoop.ipc.Client$Connection.run(Client.java:749)

Я добавил все банки, связанные с hadoop. Я не могу понять, почему & quot; / & quot; находится между localhost / 127.0.0.1: 50030

Убедитесь, что между вашим кластером и клиентской версией Hadoop нет несоответствия версий Lorand Bendig
localhost/127.0.0.1:50030 это просто строковое представление, это не значит, что он пытается подключиться к этому адресу. Вы запускаете Hadoop 1.x на своем локальном хосте? Thomas Jungblut

Ваш Ответ

1   ответ
5

Вы пробовали фактический номер порта JobTracker, а не HTTP-порт (50030).

Попробуйте использовать номер порта, указанный в вашем $ HADOOP_HOME / conf / mapred-site.xml подmapred.job.tracker имущество. Вот мой псевдо-mapred-site.xml conf

<property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
</property>

Если вы посмотрите наJobTracker.getAddress(Configuration) вы можете увидеть, что он использует это свойство, если вы явно не указали хост / порт Jobtracker:

public static InetSocketAddress getAddress(Configuration conf) {
  String jobTrackerStr =
    conf.get("mapred.job.tracker", "localhost:8012");
  return NetUtils.createSocketAddr(jobTrackerStr);
}
помогла замена 50030 на 9001. это должен быть порт реального трекера, а не порт веб-адреса. K S Nidhin

Похожие вопросы