From 53d372a2550c970f3dd3c49738af3c1789ae589b Mon Sep 17 00:00:00 2001 From: Xuan Date: Fri, 24 Feb 2017 10:58:48 -0800 Subject: [PATCH] YARN-6228: EntityGroupFSTimelineStore should allow configurable cache stores. Contributed by Li Lu --- .../org/apache/hadoop/yarn/conf/YarnConfiguration.java | 3 +++ .../src/main/resources/yarn-default.xml | 5 +++++ .../hadoop/yarn/server/timeline/EntityCacheItem.java | 9 +++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java index 094a424519..cdccec6938 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java @@ -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"; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml index 53beb5efb3..368946e5f6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml @@ -2096,6 +2096,11 @@ + + yarn.timeline-service.entity-group-fs-store.cache-store-class + org.apache.hadoop.yarn.server.timeline.MemoryTimelineStore + Caching storage timeline server v1.5 is using. + yarn.timeline-service.entity-group-fs-store.active-dir diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timeline-pluginstorage/src/main/java/org/apache/hadoop/yarn/server/timeline/EntityCacheItem.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timeline-pluginstorage/src/main/java/org/apache/hadoop/yarn/server/timeline/EntityCacheItem.java index 7ed7c4a284..8df60ab15a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timeline-pluginstorage/src/main/java/org/apache/hadoop/yarn/server/timeline/EntityCacheItem.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timeline-pluginstorage/src/main/java/org/apache/hadoop/yarn/server/timeline/EntityCacheItem.java @@ -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 {