YARN-6228: EntityGroupFSTimelineStore should allow configurable cache

stores. Contributed by Li Lu
This commit is contained in:
Xuan 2017-02-24 10:58:48 -08:00
parent c1a52b04d0
commit 53d372a255
3 changed files with 15 additions and 2 deletions

View File

@ -1890,6 +1890,9 @@ public static boolean isAclEnabled(Configuration conf) {
public static final String TIMELINE_SERVICE_ENTITYGROUP_FS_STORE_PREFIX =
TIMELINE_SERVICE_PREFIX + "entity-group-fs-store.";
public static final String TIMELINE_SERVICE_ENTITYGROUP_FS_STORE_CACHE_STORE =
TIMELINE_SERVICE_ENTITYGROUP_FS_STORE_PREFIX + "cache-store-class";
public static final String TIMELINE_SERVICE_ENTITYGROUP_FS_STORE_ACTIVE_DIR =
TIMELINE_SERVICE_ENTITYGROUP_FS_STORE_PREFIX + "active-dir";

View File

@ -2096,6 +2096,11 @@
</property>
<!-- Timeline Service v1.5 Configuration -->
<property>
<name>yarn.timeline-service.entity-group-fs-store.cache-store-class</name>
<value>org.apache.hadoop.yarn.server.timeline.MemoryTimelineStore</value>
<description>Caching storage timeline server v1.5 is using. </description>
</property>
<property>
<name>yarn.timeline-service.entity-group-fs-store.active-dir</name>

View File

@ -17,8 +17,10 @@
package org.apache.hadoop.yarn.server.timeline;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.hadoop.util.Time;
import org.apache.hadoop.yarn.api.records.timeline.TimelineEntityGroupId;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.server.timeline.security.TimelineACLsManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -95,8 +97,11 @@ public synchronized TimelineStore refreshCache(TimelineACLsManager aclManager,
}
if (!appLogs.getDetailLogs().isEmpty()) {
if (store == null) {
store = new LevelDBCacheTimelineStore(groupId.toString(),
"LeveldbCache." + groupId);
store = ReflectionUtils.newInstance(config.getClass(
YarnConfiguration
.TIMELINE_SERVICE_ENTITYGROUP_FS_STORE_CACHE_STORE,
MemoryTimelineStore.class, TimelineStore.class),
config);
store.init(config);
store.start();
} else {