From b83ec96767bc97569674151e52a89d60313856f1 Mon Sep 17 00:00:00 2001 From: Vrushali C Date: Thu, 7 Mar 2019 22:54:32 -0800 Subject: [PATCH] YARN-8549 Adding a NoOp timeline writer and reader plugin classes for ATSv2. Contributed by Prabha Manepalli --- .../storage/NoOpTimelineReaderImpl.java | 72 +++++++++++++++++++ .../storage/NoOpTimelineWriterImpl.java | 64 +++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/NoOpTimelineReaderImpl.java create mode 100644 hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/NoOpTimelineWriterImpl.java diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/NoOpTimelineReaderImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/NoOpTimelineReaderImpl.java new file mode 100644 index 00000000000..042718b4325 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/NoOpTimelineReaderImpl.java @@ -0,0 +1,72 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.yarn.server.timelineservice.storage; + +import org.apache.hadoop.service.AbstractService; +import org.apache.hadoop.yarn.api.records.timelineservice.TimelineEntity; +import org.apache.hadoop.yarn.server.timelineservice.reader.TimelineDataToRetrieve; +import org.apache.hadoop.yarn.server.timelineservice.reader.TimelineEntityFilters; +import org.apache.hadoop.yarn.server.timelineservice.reader.TimelineReaderContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; + +/** + * Stub based implementation for TimelineReader. This implementation will + * not provide a complete implementation of all the necessary features. This + * implementation is provided solely for basic testing purposes. + */ + +public class NoOpTimelineReaderImpl extends AbstractService + implements TimelineReader { + + private static final Logger LOG = + LoggerFactory.getLogger(NoOpTimelineReaderImpl.class); + + public NoOpTimelineReaderImpl() { + super(NoOpTimelineReaderImpl.class.getName()); + LOG.info("NoOpTimelineReader is configured. Responses to all read " + + "requests would be empty"); + } + + @Override public TimelineEntity getEntity(TimelineReaderContext context, + TimelineDataToRetrieve dataToRetrieve) throws IOException { + LOG.debug("NoOpTimelineReader is configured. Response to all the read " + + "requests would be empty"); + return new TimelineEntity(); + } + + @Override public Set getEntities( + TimelineReaderContext context, TimelineEntityFilters filters, + TimelineDataToRetrieve dataToRetrieve) throws IOException { + LOG.debug("NoOpTimelineReader is configured. Response to all the read " + + "requests would be empty"); + return new HashSet<>(); + } + + @Override public Set getEntityTypes(TimelineReaderContext context) + throws IOException { + LOG.debug("NoOpTimelineReader is configured. Response to all the read " + + "requests would be empty"); + return new HashSet<>(); + } +} diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/NoOpTimelineWriterImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/NoOpTimelineWriterImpl.java new file mode 100644 index 00000000000..247e0d92fac --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice/src/main/java/org/apache/hadoop/yarn/server/timelineservice/storage/NoOpTimelineWriterImpl.java @@ -0,0 +1,64 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.yarn.server.timelineservice.storage; + +import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.service.AbstractService; +import org.apache.hadoop.yarn.api.records.timelineservice.TimelineEntities; +import org.apache.hadoop.yarn.api.records.timelineservice.TimelineEntity; +import org.apache.hadoop.yarn.api.records.timelineservice.TimelineWriteResponse; +import org.apache.hadoop.yarn.server.timelineservice.collector.TimelineCollectorContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +/** + * Stub based implementation for TimelineWriter. This implementation will + * not provide a complete implementation of all the necessary features. This + * implementation is provided solely for basic testing purposes. + */ + +public class NoOpTimelineWriterImpl extends AbstractService implements + TimelineWriter{ + private static final Logger LOG = + LoggerFactory.getLogger(NoOpTimelineWriterImpl.class); + + public NoOpTimelineWriterImpl() { + super(NoOpTimelineWriterImpl.class.getName()); + LOG.info("NoOpTimelineWriter is configured. All the writes to the backend" + + " are ignored"); + } + + @Override public TimelineWriteResponse write(TimelineCollectorContext context, + TimelineEntities data, UserGroupInformation callerUgi) + throws IOException { + LOG.debug("NoOpTimelineWriter is configured. Not storing TimelineEntities"); + return new TimelineWriteResponse(); + } + + @Override public TimelineWriteResponse aggregate(TimelineEntity data, + TimelineAggregationTrack track) throws IOException { + LOG.debug("NoOpTimelineWriter is configured. Not storing TimelineEntities"); + return new TimelineWriteResponse(); + } + + @Override public void flush() throws IOException { + LOG.debug("NoOpTimelineWriter is configured. Ignoring flush call"); + } +}