Ich versuche, eine Open Source nämlich BlazingCache http://blazingcache.org/ zu verwenden, um eine Coordinator-Cache-Idee für meine Anwendung zu implementieren.Verwendung von BlazingCache Open Source in Hadoop verschlechtert die Leistung
Also verwende ich WordCount Beispiel, um diese Cache-Bibliothek zu testen. Hier ist mein ganzer Code:
public class WordCount2 {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
//...
private static Cache<String, String> cache;
@Override
public void setup(Context context) throws IOException,
InterruptedException {
//...
initCache();
}
private void initCache() {
CachingProvider provider = Caching.getCachingProvider();
Properties properties = new Properties();
properties.put("blazingcache.mode","clustered");
properties.put("blazingcache.zookeeper.connectstring","localhost:1281");
properties.put("blazingcache.zookeeper.sessiontimeout","40000");
properties.put("blazingcache.zookeeper.path","/blazingcache");
CacheManager cacheManager = provider.getCacheManager(provider.getDefaultURI(), provider.getDefaultClassLoader(), properties);
MutableConfiguration<String, String> cacheConfiguration = new MutableConfiguration<>();
cache = cacheManager.createCache("example", cacheConfiguration);
}
@Override
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
//...
cache.put(word.toString(), one.toString());
}
}
}
//...
}
Das Problem an der Linie ist:
cache.put(word.toString(), one.toString());
in Map-Funktion.
Wenn diese Zeile in den Code eingefügt wird, verschlechtert sich die Leistung des gesamten Jobs plötzlich. (Ich verwende Eclipse, um das WordCount-Beispiel im lokalen Modus auszuführen).
Warum passiert das und wie kann ich es beheben?
Dank Ihre Antwort! – nd07