org.apache.hadoop.mapred.LocalClientProtocolProvider 未找到

Posted

技术标签:

【中文标题】org.apache.hadoop.mapred.LocalClientProtocolProvider 未找到【英文标题】:org.apache.hadoop.mapred.LocalClientProtocolProvider not found 【发布时间】:2014-06-07 11:48:55 【问题描述】:

我编写了一个程序来用 Java 执行嵌入的 Pig 语句。我执行了java语句registryQuery。但是当我尝试存储结果时,我给出了 org.apache.hadoop.mapred.localClientProtocolProvider not found 的错误。我不明白这个错误。

附上句子

这是java代码

 pigServer.registerQuery("source = load '"+ inputFile + "' USING    org.apache.pig.backend.hadoop.hbase.HBaseStorage( " +
"'datos:bikes', '-loadKey true')"+
"as (id1:int, bikes:int) ;");

Path output = new Path("consulta1");

 pigServer.store("source","consulta1");

这是 java 异常:

14/06/07 04:01:27 INFO pigstats.ScriptState: Pig features used in the script: UNKNOWN
14/06/07 04:01:27 WARN conf.Configuration: mapred.textoutputformat.separator is deprecated. Instead, use mapreduce.output.textoutputformat.separator
14/06/07 04:01:27 INFO mapReduceLayer.MRCompiler: File concatenation threshold: 100 optimistic? false
14/06/07 04:01:27 INFO mapReduceLayer.MultiQueryOptimizer: MR plan size before optimization: 1
14/06/07 04:01:27 INFO mapReduceLayer.MultiQueryOptimizer: MR plan size after optimization: 1
Exception in thread "main" java.util.ServiceConfigurationError: 
    org.apache.hadoop.mapreduce.protocol.ClientProtocolProvider: Provider  
    org.apache.hadoop.mapred.LocalClientProtocolProvider not found
at java.util.ServiceLoader.fail(ServiceLoader.java:214)
at java.util.ServiceLoader.access$400(ServiceLoader.java:164)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:350)
at java.util.ServiceLoader$1.next(ServiceLoader.java:421)
at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:90)
at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:83)
at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:76)
at org.apache.hadoop.mapred.JobClient.init(JobClient.java:478)
at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:457)
at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:152)
at org.apache.pig.PigServer.launchPlan(PigServer.java:1266)
at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1251)
at org.apache.pig.PigServer.storeEx(PigServer.java:933)
at org.apache.pig.PigServer.store(PigServer.java:900)
at org.apache.pig.PigServer.store(PigServer.java:868)
at bicing.pig.PigEstadisticas.runMyQuery(PigEstadisticas.java:97)
at bicing.pig.PigEstadisticas.main(PigEstadisticas.java:45)

什么是 org.apache.hadoop.mapred.LocalClientProtocolProvider?

有人可以帮我吗?

【问题讨论】:

【参考方案1】:

这是一个老问题,但由于这可以帮助其他人,我正在回答它。

这个问题的原因是类

org.apache.hadoop.mapred.LocalClientProtocolProvider

在您的类路径中找不到。我通过添加以下 maven 依赖项在我的设置中解决了这个错误。

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-mapreduce-client-common</artifactId>
    <version>2.4.1</version>
</dependency>

就这个类的功能而言,目前我还没有更多的信息,因为我自己正在学习hadoop和Pig。

【讨论】:

以上是关于org.apache.hadoop.mapred.LocalClientProtocolProvider 未找到的主要内容,如果未能解决你的问题,请参考以下文章

org.apache.hadoop.mapred.TaskTracker 的无限循环

Apache Sqoop 启动配置错误:org.apache.hadoop.mapred.YarnClientProtocolProvider not a subtype

Mesos 上的 Hadoop 因“无法找到或加载主类 org.apache.hadoop.mapred.MesosExecutor”而失败

hadoop错误org.apache.hadoop.mapred.TaskAttemptListenerImpl Progress of TaskAttempt

解决 mapreduce.Cluster 无法使用 org.apache.hadoop.mapred.YarnClientProtocolProvider 由于实例化 YarnClient 错误

java.lang.NullPointerException Ignoring exception during close for org.apache.hadoop.mapred.MapTask$