Smart Storage Management (SSM) ПроектСистема управления хранилищем данных HDFS с открытым исходным кодом Intel предназначена для предоставления интеллектуальных решений по управлению данными HDFS.。SSMОн имеет следующие важные функции::
SSMобщая архитектура может быть разделена на три части:
SSM Server имеет встроенные планировщики (Scheduler) для различных типов задач на основе потоков, в основном включая:
Общий процесс выполнения SSM можно разделить на четыре этапа: Сбор → Изучение → Выполнение → Измерение.
Схема взаимодействия каждой системы выглядит следующим образом:
Основная информация, хранящаяся в базе данных, включает в себя:
(1). SmartService
Класс услуг по внедрению бизнеса SSM в основном включает в себя:
(2). SmartEngine
Отвечает за запуск всех внедренных SmartServices, в основном включая:
(3). StatesManager
StatesManager проведет опрос для сбора показателей и событий из NameNode.
(4). RuleManager
RuleExecutorPlugin используется для управления правилами и стратегиями выполнения: подключаемый модуль исполнителя правил, который может расширять различные задачи управления, такие как обработка небольших файлов, EC и т. д.;
`RuleExecutor`: Исполнитель политики:
(5). CmdletManager:основанный на системеCMDрежим сценария,Действительно достичь миссииосуществлять.стратегия, основанная наSmartActionосуществлять,SmartAction — это базовый класс Action.,Все действия необходимо запускать в командлетах или веб-консоли.
(6). SmartAgent
Выполнить команду, выданную сервером,При этом сообщаются соответствующие результаты выполнения.,на основе`ActorSystem` осуществленный.
SSM представляет собой типичную архитектуру «главный-подчиненный». Сервер является главным узлом, а агент — подчиненным узлом. Связь между главным и клиентским узлами осуществляется на основе актера.
Запускаемый StatesManager, он поддерживает динамическую загрузку конфигурации во время выполнения.
(1). FileAccessEventSource
Получайте события доступа к файлам разными способами. Класс реализации по умолчанию: `SmartServerAccessEventSource`:
/**
* Get a collector what will produce events from this file access event source.
*/
FileAccessEventCollector getCollector();
/**
* Insert events generated from the Smart client so that the collector can consume.
* The actual implementation of FileAccessEventSource doesn't have to support this.
* @param event The event that generated from Smart client
*/
void insertEventFromSmartClient(FileAccessEvent event);
(2). FileAccessEventCollector
Коллектор может создавать события доступа к файлам,инкапсулированный в очередь`LinkedBlockingQueue`середина,Производить и потреблять данные из очереди;
/**
* Collect file access events occured since last calling of this method.
* @return access events
* @throws IOException
*/
List<FileAccessEvent> collect() throws IOException;
(3). AccessEventFetcher
Получите все события FileAccess и поместите каждое время доступа в окно агрегирования.
(4). StatesUpdateService
Обработка обновления событий компонента HDFS основана на реализации HdfsStatesUpdateService, которая включает в себя:
Инициализация инициализации:
Начать операцию:
(5). RulePlugin
Плагин правила управляет вызовом жизненного цикла правила и в основном предоставляет следующие методы:
void onAddingNewRule(RuleInfo ruleInfo, TranslateResult tr) throws IOException;
void onNewRuleAdded(RuleInfo ruleInfo, TranslateResult tr);
Зависит от StatesManager, CmdletManager, полагается на RuleExecutorPlugin при создании плагина выполнения правил:
(1). RuleExecutorPlugin
Плагин выполнения правил в основном предоставляет следующие методы:
/**
* Called just before an RuleExecutor been generated and submitted to
* thread pool for execution. Only called once per instance.
*
* @param ruleInfo
* @param tResult
*/
void onNewRuleExecutor(final RuleInfo ruleInfo, TranslateResult tResult);
/**
* Called just before rule executor begin to execute rule.
*
* @param ruleInfo
* @param tResult
* @return continue this execution if true.
*/
boolean preExecution(final RuleInfo ruleInfo, TranslateResult tResult);
/**
* Called after rule condition checked.
*
* @param objects the result of checking rule condition.
* @return object list that will be used for Cmdlet submission.
*/
List<String> preSubmitCmdlet(final RuleInfo ruleInfo, List<String> objects);
/**
* Called right before the CmdletDescriptor been submitted to CmdletManager.
*
* @param descriptor
* @return the descriptor that will be used to submit to CmdletManager
*/
CmdletDescriptor preSubmitCmdletDescriptor(final RuleInfo ruleInfo, TranslateResult tResult,
CmdletDescriptor descriptor);
/**
* Called when an RuleExecutor exits. Called only once per instance.
*
* @param ruleInfo
*/
void onRuleExecutorExit(final RuleInfo ruleInfo);
Реализованные плагины правил включают в себя:
(2). SmartRuleStringParser
Преобразование строковых правил в объекты правил, выполнение преобразования правил на основе antlr, анализ с помощью Lexer, синтаксический анализ с помощью Parser, преобразование SmartRuleBaseVisitor в объекты и, наконец, TranslateResult.
ParseTree tree = parser.ssmrule();
(3). RuleInfoRepo
Вы можете получить RuleInfo, ключевой метод launchExecutor, получить RuleExecutor;
(4). RuleManager
Управление жизненным циклом правил, ключевые методы включают в себя:
(5). RuleExecutor
Сервер реализует потоки, выданные на выполнение,основной класс,Основной метод submitCmdlets,Наконец, `CmdletManager.submitCmdlet(cmd)` Заканчивать
RuleManager.start
-> RuleExecutor.run()
-> CmdletManager.submitCmdlet
(1). CmdletManager
Управление выполнением CMD, в основном включая
(2). CmdletDescriptor
CmdletDescriptor генерирует соответствующий CmdletInfo и соответствующее выполнение ActionInfo, ядро ScheduleTask и метод выполнения ScheduleCmdletActions.
CmdletDescriptor
->CmdletInfo
->List<ActionInfo> actionInfos
(3). ActionScheduler
В основном предоставляет методы управления планированием, связанные с жизненным циклом действия:
/**
* Called when new action submitted to CmdletManager.
*
* @param cmdletInfo info about the cmdlet which the action belongs to
* @param actionInfo
* @param actionIndex index of the action in cmdlet,
* @return acceptable if true, or discard
* @throws IOException
*/
boolean onSubmit(CmdletInfo cmdletInfo, ActionInfo actionInfo, int actionIndex)
throws IOException;
/**
* Trying to schedule an action for Dispatch.
*
* @param cmdletInfo
* @param actionInfo
* @param cmdlet
* @param action
* @param actionIndex
* @return
*/
ScheduleResult onSchedule(CmdletInfo cmdletInfo, ActionInfo actionInfo,
LaunchCmdlet cmdlet, LaunchAction action, int actionIndex);
/**
* Called after and an Cmdlet get scheduled.
*
* @param actionInfo
* @param result
*/
void postSchedule(CmdletInfo cmdletInfo, ActionInfo actionInfo, int actionIndex,
ScheduleResult result);
/**
* Called just before dispatch for execution.
*
* @param action
*/
void onPreDispatch(LaunchCmdlet cmdlet, LaunchAction action, int actionIndex);
/**
* Called when action finished execution.
*
* @param actionInfo
*/
void onActionFinished(CmdletInfo cmdletInfo, ActionInfo actionInfo, int actionIndex);
Агент выполняет команду, выданную Сервером, Cmdlet: класс потока, вызывает для выполнения SmartAction.run.
Система управления хранилищем HDFS может оказывать меньшее влияние на внутреннюю платформу данных компании. По сравнению со сложными затратами на создание и обслуживание системы вы можете выбрать более прямое ручное управление и операции по обслуживанию для управления системой хранения. Для коммерческих платформ данных полноценная система управления хранилищем имеет высокую добавленную стоимость. Платформа больших данных может включать в себя полный набор возможностей управления хранилищем, что позволяет клиентам использовать ее «из коробки», сокращая инвестиции клиентов в эксплуатацию и обслуживание.
Система SSM — редкая система управления хранилищем HDFS с открытым исходным кодом.,В основном выполняйте упрощенное планирование задач эксплуатации и обслуживания в потоковом режиме.,В настоящее время проект не обслуживается. Хотя,Общая функция реализации SSM с открытым исходным кодом не идеальна.,И конструкция относительно сложная.,Однако вы можете обратиться к этой дизайнерской идее, чтобы упростить систему управления хранилищем, которая больше подходит для сценариев использования.
Как показано на рисунке, обратитесь к идеям дизайна SSM.,Ресурсы хранения, упрощающие внедрение&Облегченная архитектура механизма задач для управления вычислительными ресурсами: