понедельник, 24 апреля 2017 г.

AWS Autoscaling

Услуга от AWS, которая предлагает 2 основные полезные возможности.

Fleet Management

Позволяет следить за "флотом" нод EC2, находя нестабильно работающие и заменять их без вмешательства человека самостоятельно на другие.
Ноды добавляются в AutoscalingGroup и так происходит контроль. Еще на сколько я понял то, есть ярлыки, которыми можно помечать ноды и тогда Autoscaling сервис будет с ними вести себя специально. Например, Stateful - такую ноду Autoscaling сервис ложить не будет, а Victim - будет положен, как только наткнется на такой маркер.

Dynamic Scaling

Этот уже сервис помогает определить правила (загрузка ЦПУ, время суток, даты и т.д.),  по которым начинают подыматься/ложиться дополнительные экземпляры  EC2.
Reactive Scaling Policies - это именно события которые можно рассчитывать, как необходимость поменять состав кластера.
Следующие сервисы по динамическому масштабированию:



ECS (Amazon EC2 Container Service)

Сервис, который занимается планированием, развертыванием, мониторингом Docker-контейнеров, по сути управления кластером и аркестрацией.

EMR (Amazon Elastic Map Reduce)

Динамически масштабируемая инфраструктура Hadoop или Spark или HBase или Presto или Flink, которая позволяет обрабатывать большие объемы данных на EC2  инстансах.

Apache Hadoop - платформа предназначена для эффективной обработки больших пакетов данных на распределенном кластере из обычных машин/серверов, вместо суперкомпьютера.
Проект Hadoop включает MapReduce(интерфейс исполнения), YARN (менеджер ресурсов Yet Another Resource Negotiator) и HDFS (распределенное хранилище Hadoop Distributed File System). Можно установить Apache Tez, платформу следующего поколения, вместо MapReduce.
YARN ведет мониторинг ресурсов кластера и занимается распределением нагрузками MapReduce/Tez, а также другими распределенными инфраструктурами - Apache Spark.

И так  сервис запустив EMR на всех узлах кластера устанавливает MapReduce, YARN и HDFS. А с версии 5.x Amazon EMR, Hive и Pig используют Tez вместо MapReduce, как механизм выполнения.
Hive и Pig предоставляют абстракции более высокого уровня по сравнению с MapReduce/Tez. Они дают возможность не писать на языке низкого уровня(Java)  Tez джобы, основанные на Direct Acyclic Graphs (DAGs), и MapReduce программы, а использовать более обобщенный язык высокого уровня. В случае Hive это Hive QL, SQL-подобный язык. С лучае Pig - Pig Latin, тоже SQL-подобный язык, но все же он по сути процедурный и чтобы его выучить нужно потратить больше времени.
Правило выбора между Hive и Pig - простые выборки - Hive, если многоступенчатые сложные запросы требующие сложных скриптов, которые было бы хорошо структурировать и держать в читаемом самоописующем виде - Pig.

HBase - NoSql распределенная база данных способная хранить миллиарды строк с миллионами колонок, разработана для Hadoop. В EMR она работает на база сервиса Amazon S3(так называемый EMRFS - Amazon S3 Storage Mode for HBase ) или можно прикрутить нативный Hadoop Distributed Filesystem (HDFS). Для увеличение быстродействия и добавления слоя кеширования можно прикрутить над HBase Apache Phoenix - OLTP и операционная аналитика на SQL для HBase - она трансформирует SQL запросы в запросы для HBase с применением хитростей оптимизации. Предлагает JDBC API для подключения к HBase.

Почему EMRFS это круто? Потому что Amazon гарантирует надежность объектов на S3 99,999999999 % и доступность в течении одного года на уровне 99,99% - они распределяются по многим ЦОДам. Также храня данные кластера в S3, мы спокойно может ложить весь кластер, когда мы в нем нуждаемся, а все данные надежно продолжают храниться на S3 бакетах.
Кроме того HDFS всегда также устанавливается на ноды кластера под EMR, что позволяет использовать локальные диски кластера. HDFS есть настраиваемый коэффициент репликации, по умолчанию 3х, дальше HDFS мониторит репликации и балансировку данных между узлами по мере выхода узлов из строя и добавления новых узлов.

Hue on Amazon EMR. Неплохо включать Hue (Hadoop User Experience) - который через веб-морду позволяет управлять кластером Hadoop.

Apache Spark - распределенная система обработки данных, внедряющая ряд оптимизаций для быстродействия с кешированием, поддерживающая общую пакетную обработку, аналитику потоков, машинное обучение, графовые базы данных и спонтанные запросы. Amazon EMR обеспечивает нативную поддержку Spark на платформе Hadoop YARN.
По умолчанию поддерживаются языка Scala, Java и Python, на которым можно писать приложения для Spark. Кроме запуска приложений можно прямо в оболочке Spark на кластере делать интерактивные вызовы на Scala или Python.
Модуль Spark SQL позволяет направлять запросы SQL или HiveQL в Spark.
Можно также подключить Apache Zeppelin, блокнот в вебе, который позволяет анализировать интерактивные данные в Spark, и можно создавать интерактивные, совместные документы  с помощью SQL, Scala и другое.

Prestodb - движок позволяющий подключаться к HDFS, Amazon S3, и делать выборки на ANSI SQL. Вообще он под Hive, Cassandra, Relational DBs, но много еще чего вошло другого. Он вроде очень быстрый. Им пользуется Facebook.

Комментариев нет:

Отправить комментарий