小编cod*_*der的帖子

使用memcached和像MySQL这样的rdbms时的缓存一致性

本学期我已经学习了数据库类,我们正在研究如何在RDBMS和缓存服务器(如memcached)之间保持缓存一致性.存在竞争条件时会出现一致性问题.例如:

  1. 假设我get(key)从缓存中执行了操作,并且存在缓存未命中.因为我得到了缓存未命中,我从数据库中获取数据,然后put(key,value)进入缓存.
  2. 但是,可能会发生竞争情况,其他一些用户可能会删除我从数据库中获取的数据.此删除可能在我put进入缓存之前发生.

因此,理想情况下put不应该进入缓存,因为数据在数据库中存在的时间更长.

如果缓存条目具有TTL,则缓存中的条目可能会过期.但是,仍有一个窗口,其中缓存中的数据与数据库不一致.

我一直在寻找那些谈论这类问题的文章/研究论文.但是,我找不到任何有用的资源.

memcached caching consistency distributed-computing race-condition

10
推荐指数
1
解决办法
2086
查看次数

使用s3distcp将文件从HDFS复制到Amazon S3时出现"Stream Closed"错误

我正在使用s3distcp将文件从HDFS复制到Amazon S3.最近,我开始为减速器任务收到"Stream Closed"错误.我注意到错误只发生在同一个reducer任务下有多个线程(每个线程分配一个文件上传到S3)的地方.reducer任务在此错误上失败,但最终由于重试而成功.

我最初的分析是线程使用的是FileSystem类的相同实例.为避免这种情况,我在调用FileSytem.get之前使用了configuration.setBoolean("fs.hdfs.impl.disable.cache",true)以避免获得缓存的实例.但是,我仍然得到同样的错误.这是系统日志的一部分:

Caused by: java.io.IOException: Stream closed
at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.read(DFSClient.java:2039)
at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.read(DFSClient.java:1976)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2932)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:704)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:772)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:1163)
Run Code Online (Sandbox Code Playgroud)

我要提到的另一点是,我最近从Hadoop 0.20迁移到Hadoop 0.20.205和一个新的AMI(2.0.4).此问题在转移到新版本后开始发生.

我已经被封锁了一段时间了.任何帮助或指导都会有所帮助.

hadoop

5
推荐指数
0
解决办法
359
查看次数