- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我所有的映射器都失败了,除了下面的异常(exception)。为了简洁起见,我只展示了最后一次失败。
为什么会发生这种情况,我该如何解决?
16/09/21 17:01:57 INFO mapred.JobClient: Task Id : attempt_201609151451_0044_m_000002_2, Status : FAILED
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readUTF(DataInputStream.java:609)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at org.apache.accumulo.core.client.mapreduce.RangeInputSplit.readFields(RangeInputSplit.java:154)
at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:71)
at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:42)
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:356)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:640)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:330)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
at org.ap
16/09/21 17:02:00 INFO mapred.JobClient: Job complete: job_201609151451_0044
16/09/21 17:02:00 INFO mapred.JobClient: Counters: 8
16/09/21 17:02:00 INFO mapred.JobClient: Job Counters
16/09/21 17:02:00 INFO mapred.JobClient: Failed map tasks=1
16/09/21 17:02:00 INFO mapred.JobClient: Launched map tasks=48
16/09/21 17:02:00 INFO mapred.JobClient: Data-local map tasks=13
16/09/21 17:02:00 INFO mapred.JobClient: Rack-local map tasks=35
16/09/21 17:02:00 INFO mapred.JobClient: Total time spent by all maps in occupied slots (ms)=343982
16/09/21 17:02:00 INFO mapred.JobClient: Total time spent by all reduces in occupied slots (ms)=0
16/09/21 17:02:00 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
16/09/21 17:02:00 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
我使用 Accumulo 表作为我的输入数据。我的设置如下:
@Override
public int run(String[] args) throws Exception {
Configuration conf = getConf();
String idMapFileContent = readResourceFile(TYPE_ID_MAP_FILENAME);
conf.set(TYPE_ID_MAP_KEY, idMapFileContent);
Job job = Job.getInstance(conf, this.getClass().getSimpleName());
job.setJarByClass(this.getClass());
job.setMapperClass(DanglingLinksFinderMapper.class);
job.setReducerClass(DanglingLinksFinderReducer.class);
this.setupRowInputFormat(job);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setOutputFormatClass(TextOutputFormat.class);
Path out = new Path(args[0]);
LOGGER.info("Writing to output directory: " + out.toUri());
FileOutputFormat.setOutputPath(job, out);
int exitCode = job.waitForCompletion(true) ? 0 : 1;
}
private Job setupRowInputFormat(Job job)
throws IOException, AccumuloSecurityException
{
job.setInputFormatClass(AccumuloRowInputFormat.class);
Configuration conf = job.getConfiguration();
AccumuloConnectInfo connectInfo = new AccumuloConnectInfo(conf);
LOGGER.info(connectInfo.toString());
AccumuloRowInputFormat.setZooKeeperInstance(job, connectInfo.getInstanceNames(), connectInfo.getZookeeperInstanceNames());
AccumuloRowInputFormat.setConnectorInfo(job, connectInfo.getUserName(), connectInfo.getPassword());
AccumuloRowInputFormat.setScanAuthorizations(job, new Authorizations());
AccumuloRowInputFormat.setInputTableName(job, TABLE_NAME);
return job;
}
我正在使用 Hadoop 2.6.0、Accumulo 1.5.0 和 Java 1.7。
前几天我让这个工作正常,但(据我所知)没有改变任何东西。所以我想这可能与我运行它的服务器上的配置或数据状态有关?该作业在我本地计算机上的 Docker 容器中运行的测试表上运行良好,但在我的远程测试服务器上失败。
我可以登录到 accumulo shell
并扫描我正在使用的表。那里一切看起来都很好。我还尝试在测试服务器上运行压缩,它工作正常但没有解决问题。
最佳答案
我猜测您用于启动 MapReduce 作业的 Accumulo jar 与您包含的作业本身通过 DistributedCache 或 libjars CLI 选项使用的 Accumulo jar 版本不匹配。
因为您没有指定任何范围,AccumuloInputFormat 将自动获取表格的所有 Tablet 边界,并创建与表格中的 Tablets 数量相同的 RangeInputSplit 对象。这种拆分创建是在本地 JVM(提交作业时创建的 JVM)中完成的。这些 RangeInputSplit 对象被序列化并传递到 YARN 中。
您提供的错误是当 Mapper 获取这些序列化的 RangeInputSplit 对象之一并尝试反序列化它时。不知何故,这是失败的,因为没有足够的序列化数据来反序列化 Mapper 中运行的 Accumulo 版本期望读取的内容。
这可能只是您的 Accumulo 版本中的一个序列化错误(请分享),但我不记得听说过这样的错误。我猜本地类路径和 Mapper 类路径上的 Accumulo 版本有所不同。
关于java - Accumulo MapReduce 作业因 java.io.EOFException 而失败,使用 AccumuloRowInputFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39622702/
我编写了以下客户端-服务器对来设置一个非常简化版本的 IPSec 连接(与加密相关)。 问题是,在第二次调用 readObject() 时,即: // Receive finished
我创建了一个 Talend 作业,它执行以下操作:从表 A 中读取记录 x。将记录 x + 1.000.000 写入表 A 中。这很有效,但在 310 条记录后失败。它显然与记录中的值无关。如果我将输
我正在使用iText将html转换为pdf,当我尝试注册fontProvider时,我得到EOFException,这里是相关代码: XMLWorkerFontProvider fontProvide
以下代码在反序列化期间抛出 EOFException [in line size = in.readInt();],我很困惑为什么会发生这种情况。 import java.io.IOException
我正在使用此代码读取 Java 中的文件 import java.io.*; public class IOReadDataStreams { public static void main(
我的目标是将远程服务器中的 200 个 .jpg 文件下载到我的 Android 手机(运行 jellybeans)。为了做到这一点,我在循环中运行下面的方法,并将不同的文件名分配给文件名参数。它运行
输出正确,但后面跟着一个 EOFException。我阅读了文档,但仍然不知道如何解决这个问题 try(ObjectInputStream ois = new ObjectInputStream(ne
我有一个通过套接字向主机发送数据的客户端。有时我会得到java.io.EOFException。 问题是:我如何知道是谁导致套接字关闭?由于远程主机关闭了套接字,该异常是否总是引发? 或者也可能是内部
这个问题已经有答案了: Java FileInputStream ObjectInputStream reaches end of file EOF (9 个回答) 已关闭 9 年前。 请看下面的代码
我尝试使用 this question's answer 来获得功能实现,但出现各种错误,现在出现 EOFException,并且在调试时,似乎文件未写入。 目标是从 URL 下载图像,将其保存到内部
我正在测试 ObjectInputStream 和 ObjectOutputStream 类 尝试在缓冲流对象中扭曲两者.. File file = new File("file.lel"); //A
我使用文件来缓冲它来显示流内容(因为它可能足够大以将其保存在 RAM 中)。我有两个线程:第一个线程从服务器下载文件并将其写入本地存储,第二个线程读取该文件并显示内容。 问题是,当第二个线程到达文件末
`INFO 11:44:29,874 Listening for thrift clients... ERROR 11:47:01,471 Exception in thread Thread[Rea
我在反序列化对象时遇到此异常: 控制台输出 sending request: GET_OBJS java.io.EOFException receiving response at java.io.O
我正在使用以下代码进行发布请求 public String executeHttpPost(String uri, String data) { HttpURLConnection conn
我正在通过加密的 ByteArrayOutputStream 将一个序列化和加密的对象写入数据库到一个大对象中。我可以检索这个大对象,但无法反序列化它。 这是我编写的代码: public void a
这个问题在这里已经有了答案: java.io.EOFException while writing and reading froma servlet (2 个答案) 关闭 10 年前。 当我尝试通
我正在尝试编写一个消息传递应用程序,并且我能够发送消息(显示为服务器客户端正确显示消息)但随后将我的客户端踢出服务器。服务器打印以下错误: java.io.EOFException at java.i
我有以下问题: 这段代码... try { fis = new FileInputStream(serializedKeyIndex); in = new Ob
我正在使用随机访问文件来编写一个使用 arrayList 存储的 raf。我不知道它是否可以完成,但我正在试一试,因为它是我创建此应用程序的最佳解决方案。 这是我遇到的运行时错误: Exception
我是一名优秀的程序员,十分优秀!