paint-brush
Миграция с Hadoop без копирования и замены возможна — вот какк@minio
3,817 чтения
3,817 чтения

Миграция с Hadoop без копирования и замены возможна — вот как

к MinIO7m2024/05/31
Read on Terminal Reader

Слишком долго; Читать

MinIO — это современная версия Hadoop, интегрируемая со Spark и Hive. MinIO шифрует все данные с использованием ключей каждого объекта, обеспечивая надежную защиту от несанкционированного доступа. S3a является обязательным. конечная точка для приложений, желающих перейти от Hado.op, обеспечивающая совместимость с широким спектром приложений.
featured image - Миграция с Hadoop без копирования и замены возможна — вот как
MinIO HackerNoon profile picture
0-item
1-item


Мы до сих пор поражаемся количеству клиентов, которые приходят к нам с желанием перейти с HDFS на современные объектные хранилища, такие как MinIO. Мы уже думали, что все осуществили переход, но каждую неделю мы обращаемся к крупной, высокотехнологичной организации, которая решила осуществить переход.


Довольно часто в этих обсуждениях упоминаются элементы их инфраструктуры, которые они хотят сохранить после миграции. Существуют платформы и программное обеспечение, вышедшие из экосистемы HDFS, которые пользуются большой популярностью среди разработчиков и все еще имеют место в современном стеке данных. Действительно, мы часто говорили, что экосистема HDFS принесла много хорошего. Фундаментальная проблема заключается в тесной связи между хранилищем и вычислениями, а не обязательно с инструментами и услугами, пришедшими из эпохи больших данных.


В этом сообщении блога основное внимание будет уделено тому, как можно выполнить эту миграцию, не удаляя и не заменяя ценные инструменты и сервисы. Реальность такова, что если вы не модернизируете свою инфраструктуру, вы не сможете добиться прогресса в области искусственного интеллекта и машинного обучения, который требуется вашей организации, но вам не нужно бросать все усилия, чтобы добиться этого.

Дезагрегирование хранилища и вычислений с помощью Spark и Hive

Мы уже прошли через некоторые стратегии полного разрыва и замены миграции , что в некоторых случаях является путем вперед. Однако давайте рассмотрим другой способ модернизации реализации HDFS.


Этот архитектура предполагает управление Kubernetes Апач Спарк и контейнеры Apache Hive для обработки данных; Spark изначально интегрируется с MinIO, а Hive использует YARN. MinIO обрабатывает хранилище объектов в контейнерах с отслеживанием состояния и в этой архитектуре использует мультитенантные конфигурации для изоляции данных.


Архитектурный обзор:

  • Вычислительные узлы. Kubernetes эффективно управляет контейнерами Apache Spark и Apache Hive без сохранения состояния на вычислительных узлах, обеспечивая оптимальное использование ресурсов и динамическое масштабирование.


  • Уровень хранения: MinIO Стирающее кодирование а защита BitRot означает, что вы можете потерять до половины количества дисков и все равно восстановиться, и все это без необходимости поддерживать три копии каждого блока данных, которые требуются Hadoop.


  • Уровень доступа: весь доступ к объектному хранилищу MinIO унифицирован через API S3, обеспечивая удобный интерфейс для взаимодействия с хранимыми данными.


  • Уровень безопасности: безопасность данных имеет первостепенное значение. MinIO шифрует все данные с использованием ключей каждого объекта, обеспечивая надежную защиту от несанкционированного доступа.


  • Управление идентификацией: MinIO Enterprise полностью интегрируется с поставщиками удостоверений, такими как WSO2, Keycloak, Okta, Ping Identity, что позволяет приложениям или пользователям проходить аутентификацию.


Полностью модернизированная замена Hadoop, которая позволяет вашей организации использовать Hive, YARN и любой другой продукт данных экосистемы Hadoop, который можно интегрировать с объектным хранилищем, которое представляет собой практически все, что есть в современном стеке данных.

Взаимодействие на уровне доступа

S3a — это важная конечная точка для приложений, стремящихся перейти от Hadoop, обеспечивающая совместимость с широким спектром приложений в экосистеме Hadoop. С 2006 года S3-совместимые серверные системы объектного хранилища были легко интегрированы в многочисленные платформы данных в экосистеме Hadoop в качестве функции по умолчанию. Эта интеграция восходит к включению реализации клиента S3 в новые технологии.


На всех платформах, связанных с Hadoop, внедрение модуля hadoop-aws и aws-java-sdk-bundle является стандартной практикой, обеспечивающей надежную поддержку API S3. Этот стандартизированный подход облегчает плавный переход приложений с HDFS и серверных хранилищ S3. Просто указав соответствующий протокол, разработчики могут легко переключать приложения с Hadoop на современное объектное хранилище. Схема протокола для S3 обозначается как s3a://, а для HDFS — как hdfs://.

Преимущества миграции

Можно долго говорить о преимуществах перехода с Hadoop на современное объектное хранилище. Если вы читаете это, вы уже в значительной степени осознаете, что без перехода с устаревших платформ, таких как Hadoop, достижения в области искусственного интеллекта и других современных продуктов обработки данных, скорее всего, будут исключены. Причина сводится к производительности и масштабу.


Нет никаких сомнений в том, что современные рабочие нагрузки требуют выдающейся производительности, чтобы конкурировать с объемом обрабатываемых данных и сложностью задач, которые сейчас требуются. Когда производительность — это не просто тщеславный тест, а жесткое требование, поле претендентов на замену Hadoop резко падает .


Другим элементом, способствующим миграции, является облачное масштабирование. Когда концепция облака связана не столько с физическим местоположением, сколько с операционная модель становится возможным за считанные минуты развернуть весь стек данных из одного файла .yaml. Реализация настолько быстрая, что любой инженер Hadoop упадет со стула.


Неотъемлемой частью этой концепции являются экономические выгоды, возникающие в результате освобождения от привязки к поставщику, что позволяет организации выбирать лучшие в своем классе варианты для конкретных рабочих нагрузок. Не говоря уже о том, что отказ от хранения трех отдельных копий данных для их защиты остался в прошлом. активно-активная репликация и стирающее кодирование. Инвестиции в перспективные технологии обычно также означают, что вам будет легче найти и нанять талантливых специалистов для работы над вашей инфраструктурой. Люди хотят работать над тем, что продвигает бизнес вперед, и почти ничто не делает это лучше, чем данные . Вместе эти факторы способствуют созданию стека данных, который не только быстрее и дешевле, но и лучше подходит для сегодняшних и будущих потребностей, основанных на данных.

Начиная

Прежде чем углубляться в особенности нашей архитектуры, вам необходимо настроить и запустить несколько компонентов. Чтобы перейти с Hadoop, вам, очевидно, придется сначала установить его. Если вы хотите смоделировать этот опыт, вы можете начать работу с этим руководством, настроив дистрибутив Hadoop Hortonworks здесь .


В противном случае вы можете начать со следующих шагов установки:


  1. Настройте Ambari: Далее, установить Амбари , который упростит управление вашими сервисами за счет автоматической настройки YARN для вас. Ambari предоставляет удобную панель управления для управления сервисами в экосистеме Hadoop и обеспечения бесперебойной работы.


  2. Установите Apache Spark: Spark необходим для обработки крупномасштабных данных. Следовать Стандартная установка процедуры для запуска и запуска Spark.


  3. Установите MinIO : в зависимости от вашей среды вы можете выбрать один из двух подходов к установке: Кубернетес или Карта руля .


После успешной установки этих элементов вы можете настроить Spark и Hive для использования MinIO вместо HDFS. Перейдите к пользовательскому интерфейсу Ambari http://<ambari-server>:8080/ и войдите в систему, используя учетные данные по умолчанию: username: admin, password: admin ,



В Ambari перейдите к службам, затем к HDFS, а затем к панели «Конфигурации», как показано на снимке экрана ниже. В этом разделе вы настраиваете Ambari для использования S3a с MinIO вместо HDFS.



Прокрутите вниз и перейдите к Custom core-site . Здесь вы настроите S3a.



 sudo pip install yq alias kv-pairify='yq ".configuration[]" | jq ".[]" | jq -r ".name + \"=\" + .value"'


Отсюда ваша конфигурация будет зависеть от вашей инфраструктуры. Но приведенное ниже может представлять собой способ с помощью core-site.xml настроить S3a с MinIO, работающим на 12 узлах и 1,2 ТиБ памяти.


 cat ${HADOOP_CONF_DIR}/core-site.xml | kv-pairify | grep "mapred" mapred.maxthreads.generate.mapoutput=2 # Num threads to write map outputs mapred.maxthreads.partition.closer=0 # Asynchronous map flushers mapreduce.fileoutputcommitter.algorithm.version=2 # Use the latest committer version mapreduce.job.reduce.slowstart.completedmaps=0.99 # 99% map, then reduce mapreduce.reduce.shuffle.input.buffer.percent=0.9 # Min % buffer in RAM mapreduce.reduce.shuffle.merge.percent=0.9 # Minimum % merges in RAM mapreduce.reduce.speculative=false # Disable speculation for reducing mapreduce.task.io.sort.factor=999 # Threshold before writing to drive mapreduce.task.sort.spill.percent=0.9 # Minimum % before spilling to drive


Существует довольно много оптимизаций, которые можно изучить, ознакомившись с документацией по этому шаблону миграции. здесь , а также в документации Hadoop по S3. здесь и здесь .


Перезапустите все, когда вас устроит конфигурация.



Вам также потребуется перейти на панель конфигурации Spark2.



Прокрутите вниз до Custom spark-defaults и добавьте следующее свойство для настройки с помощью MinIO:



 spark.hadoop.fs.s3a.access.key minio spark.hadoop.fs.s3a.secret.key minio123 spark.hadoop.fs.s3a.path.style.access true spark.hadoop.fs.s3a.block.size 512M spark.hadoop.fs.s3a.buffer.dir ${hadoop.tmp.dir}/s3a spark.hadoop.fs.s3a.committer.magic.enabled false spark.hadoop.fs.s3a.committer.name directory spark.hadoop.fs.s3a.committer.staging.abort.pending.uploads true spark.hadoop.fs.s3a.committer.staging.conflict-mode append spark.hadoop.fs.s3a.committer.staging.tmp.path /tmp/staging spark.hadoop.fs.s3a.committer.staging.unique-filenames true spark.hadoop.fs.s3a.committer.threads 2048 # number of threads writing to MinIO spark.hadoop.fs.s3a.connection.establish.timeout 5000 spark.hadoop.fs.s3a.connection.maximum 8192 # maximum number of concurrent conns spark.hadoop.fs.s3a.connection.ssl.enabled false spark.hadoop.fs.s3a.connection.timeout 200000 spark.hadoop.fs.s3a.endpoint http://minio:9000 spark.hadoop.fs.s3a.fast.upload.active.blocks 2048 # number of parallel uploads spark.hadoop.fs.s3a.fast.upload.buffer disk # use disk as the buffer for uploads spark.hadoop.fs.s3a.fast.upload true # turn on fast upload mode spark.hadoop.fs.s3a.impl org.apache.hadoop.spark.hadoop.fs.s3a.S3AFileSystem spark.hadoop.fs.s3a.max.total.tasks 2048 # maximum number of parallel tasks spark.hadoop.fs.s3a.multipart.size 512M # size of each multipart chunk spark.hadoop.fs.s3a.multipart.threshold 512M # size before using multipart uploads spark.hadoop.fs.s3a.socket.recv.buffer 65536 # read socket buffer hint spark.hadoop.fs.s3a.socket.send.buffer 65536 # write socket buffer hint spark.hadoop.fs.s3a.threads.max 2048 # maximum number of threads for S3A


Перезапустите все после применения изменений конфигурации.



Перейдите на панель Hive, чтобы завершить настройку.



Прокрутите вниз до Custom hive-site и добавьте следующее свойство:




 hive.blobstore.use.blobstore.as.scratchdir=true hive.exec.input.listing.max.threads=50 hive.load.dynamic.partitions.thread=25 hive.metastore.fshandler.threads=50 hive.mv.files.threads=40 mapreduce.input.fileinputformat.list-status.num-threads=50


Вы можете найти более подробную информацию о конфигурации здесь . Перезапустите все после внесения изменений в конфигурацию.



Вот и все, теперь вы можете протестировать свою интеграцию.

Исследуйте самостоятельно

В этом сообщении блога описан современный подход к переходу с Hadoop без необходимости полной перестройки существующих систем. Используя Kubernetes для управления Apache Spark и Apache Hive, а также интегрируя MinIO для хранения объектов с отслеживанием состояния, организации могут создать сбалансированную архитектуру, которая поддерживает динамическое масштабирование и эффективное использование ресурсов. Эта настройка не только сохраняет, но и расширяет возможности ваших сред обработки данных, делая их более надежными и перспективными.


Благодаря MinIO вы получаете выгоду от решения для хранения данных, которое обеспечивает высокую производительность на обычном оборудовании, снижает затраты за счет стирающего кодирования (устраняя избыточность репликации данных Hadoop) и обходит такие ограничения, как привязка к поставщику и необходимость в хранилищах метаданных на базе Cassandra. Эти преимущества имеют решающее значение для организаций, стремящихся использовать расширенные рабочие нагрузки AI/ML, не отказываясь при этом от основных элементов своих существующих систем данных.


Не стесняйтесь обращаться за более подробными обсуждениями или конкретными рекомендациями о том, как адаптировать эту стратегию миграции для удовлетворения уникальных потребностей вашей организации. По электронной почте [email protected] или в нашем сообществе. Слабый канал, мы здесь, чтобы помочь вам получить максимальную отдачу от инвестиций в инфраструктуру данных.