@hadoopusers

Страница 168 из 182
Alex
16.10.2018
04:18:02
свежий хадуп только в сдх6, да и то не 3.1 а 3.0 плюс на нем уже нарвались на несколько багов =\ ну и еще минусы: норм поддержка докера на хадупе в cdh так и не сделали

поэтому что будет с дистрами хзхз =)

Akceptor
16.10.2018
06:36:36
когда я в спарке делаю create temporary view? оно в какой БД деляет его? Точно не default, т.как потом ругается на Table or view not found: default.table1539671279988

Stanislav
16.10.2018
06:56:34
Ни в какой

Google
Stanislav
16.10.2018
06:56:56
Если хочешь выйти за пределы сессии, задай глобальный темп вью

Akceptor
16.10.2018
07:02:57
ок, спс

Akceptor
16.10.2018
07:22:23
Пробуй createGlobalTemporaryView и смотреть в global_temp
заработало, просто правил чужой код, там везде имя БД указано, т.как код делался для Хайва, для файлов они недоделали. Всем спасибо!

Pavel
16.10.2018
08:08:24
День добрый. Есть ли у кого опыт поднятия kafka connect?

Pavel
16.10.2018
09:56:39
@proKafka
Спасибо! Я там уже спросил и там уже ответили)

Сергей
16.10.2018
09:58:00
Моя очередь спрашивать) Подскажите, пожалуйста, в спарке 1.6 есть возможность писать в паркет?

Daria
16.10.2018
09:58:36
df.write.parquet

Alex
16.10.2018
09:59:11
да, паркет поддерживается где-то 1.3 если не изменяет память

клоудеровский 1.6 точно умеет это все делать

Daria
16.10.2018
10:00:35
если в табличку -

Google
Daria
16.10.2018
10:00:39
df.write.mode(SaveMode.Overwrite).format("parquet").saveAsTable("tab1")

df - собственно ваш DataFrame

Сергей
16.10.2018
10:01:03
Вот у меня и задачка как раз про это. В cdh 5.13 укладывать записи из базы в паркет. Пока только написал hello World)

В доках 1.6 про паркет не нашёл ничего пока.

Daria
16.10.2018
10:02:16
Посмотрите внимательнее- оно там есть

https://spark.apache.org/docs/1.6.1/sql-programming-guide.html#hive-metastore-parquet-table-conversion

Сергей
16.10.2018
10:02:57
Мне ещё нужно размером файлов управлять, чтобы по возможности сразу укладываться в хадупный размер блока

Сергей
16.10.2018
10:06:36
А зачем делать за хдфс его работу?
Ну типа parquet.block.size в идеале не должен быть больше хадупного, чтобы запросы пошустрее работали в hive

Или напутал?

Alex
16.10.2018
10:10:20
в идеале да, в этом случае у тебя все может оказаться локально в пределах одной машинки один таск-одинблок-однамашинка

если паркет блок будет больше хдфсного то там сетевой трафик может еще вылезти

но я бы пока на твоем месте сразу попытался решить задачу сразу а потом уже занимался оптимизациями

Stanislav
16.10.2018
10:12:38
в идеале да, в этом случае у тебя все может оказаться локально в пределах одной машинки один таск-одинблок-однамашинка
А как влияет размер блока на размещение? О_о размер повлияет на количество операций ввода-вывода на сервере, которые по сути самые дорогие в расчетах

И по умолчанию разве не будет использоваться стандартная настройка из параметров хдфс?

Alex
16.10.2018
10:15:46
смотри, для тебя как потребителя файл это один сплошной поток для hdfs это набор кусков (те же кластера на hdd) когда скедулер решает куда закидывать задачу он уточняет где лежит указанная часть файла и пытается кинуть его на ту же машинку в итоге тот же спарк екзекутор запрашивает через hdfs клиент у datanode нужный файл и получает по shortpath целиком файловый дескриптор (если данные на одной ноде) и читает очень быстро если у тебя файл состоит из 2х блоков то один блок ты еще локально прочитаешь, а второй уже будешь запрашивать с другой ноды по сети

Сергей
16.10.2018
10:15:49
И по умолчанию разве не будет использоваться стандартная настройка из параметров хдфс?
Ну по умолчанию можно написать файл 7гб при размере блока 128мб и блоки в общем случае будут лежать на разных нодах.

Alex
16.10.2018
10:15:51
это если совсем грубо

Daria
16.10.2018
10:16:22
Ну типа parquet.block.size в идеале не должен быть больше хадупного, чтобы запросы пошустрее работали в hive
я бы на вашем месте запустила и как миниум глянула размер получившихся файлов, паркет формат не строчный, он не будет равен размеру изначальных данных

Google
Daria
16.10.2018
10:17:11
вопрос скорее а надо ли ?

Alex
16.10.2018
10:17:31
@barloc в одном случае у тебя чистый ио с файловым дескриптором, во втором работа с сетью, что может быть не очень хорошо

Stanislav
16.10.2018
10:18:23
Alex
16.10.2018
10:18:39
почему в минусы?

Stanislav
16.10.2018
10:18:43
Тем не менее, размер блока не влияет на локальность

Сергей
16.10.2018
10:19:22
вопрос скорее а надо ли ?
Ну если потом оптимизировать , то нет. А если можно сразу положить хорошо, почему бы и нет.

Alex
16.10.2018
10:19:54
скедулер пытается добиться локальности, но конечно не гарантирует в случае если у тебя файл разбит на 2 равных блока ты 100% локальность почти никогда и не получишь

по мне хадуп и хдфс с самого начала это было про локальность данных

спарк тоже вкладывается много в локальность данных, будь то hbase, es, kafka везде пытаются минимизировать трафик между машинками в коннекторах спарка

Short Circuit Local Reads On HDFS спецом для этого и разрабатывали =) чтобы минимизировать доп прослойки но чтобы его утилизировать нужна локальность “this is only possible in cases where the client is co-located with the data.”

Daria
16.10.2018
10:23:10
Ну если потом оптимизировать , то нет. А если можно сразу положить хорошо, почему бы и нет.
ну посмотрите документацию - насколько помню там есть свойство размер файлов паркета

Stanislav
16.10.2018
10:25:08
Смотри какая штука про локальность без ссд

Есть у тебя в сервере 8-12 дисков сата 7200, которые могут 70-100 иопс каждый

Alex
16.10.2018
10:26:57
@barloc задачи у всех один =) быстро читать-писать это без локальности не будет зачастую для тебя это прозрачно полностью, ты работаешь с hdfs client который тебе инпут стрим возращает весь Short Circuit Local Reads проходит внутри него под капотом

Сергей
16.10.2018
10:27:15
ну посмотрите документацию - насколько помню там есть свойство размер файлов паркета
Обязательно. Спасибо большое. На коленке планировалось разместить данные спарком на hdfs, а затем в hive создать external таблицу и из неё заинсертить уже в новую оптимизированную.

Уверен, что есть более красивый способ.

Stanislav
16.10.2018
10:28:08
У хбейза очень мощный кеш и сериализация

Google
Alex
16.10.2018
10:32:50
ну давай представим что у тебя таблица из 100 файлов по 1ГБ и блоком на хдфс в 1ГБ дальше есть 100 машинок предположим что задачи разлетелись равномерно и локалити сработало дальше каждая с локального диска подняла по дескриптору, прочитала, выполнила и послала в драйвер результаты (вернее подымет датанода, но вернет тебе дескриптор и ты прозрачно с него читать будешь, не зная ничего в самом спарке) теперь вторая ситуация: ну давай представим что у тебя таблица из 100 файлов по 1ГБ и блоком на хдфс в 128МБ (файл получается состоит из 8 блоков) дальше есть 100 машинок то есть локальности ты можешь добиться только на первых 100 блоков, остальные 700 блоков должны гнаться по сети это 1) нагрузка на datanode (она должна прочитать данные с диска, закинуть в память, сериализовать, отдать по сети клиенту). мы все знаем что тут начинается еще давление на gc в датаноде + количество хэндлеров на работу тоже не безлимитно 2) нагрузка на сеть, когда все начинают ломиться ко всем вопрос: какая из двух ситуаций отработает быстрее

когда с паркетом работаешь зачастую это линейный скан страницы/чанка

Stanislav
16.10.2018
10:44:52
Интересный пример

А что будет при изменении данных в файле, полная перезапись?

С синхронизацией по всем репликам?

Alex
16.10.2018
10:46:06
а разве хдфс поддерживает изменения файлов?

только дозапись

Grigory
16.10.2018
10:48:41
а разве хдфс поддерживает изменения файлов?
ну может имеется ввиду копи он райт

Alex
16.10.2018
10:48:56
нету такого

файл immutable

Grigory
16.10.2018
10:49:15
я про это и говорю, читается мап файл, меняется, трется, записывается

Alex
16.10.2018
10:49:15
писать в середину нельзя, CoW hdfs тоже не поддерживает

и тут без разницы какой у тебя размер блока

Nikita Blagodarnyy
16.10.2018
10:49:55
Stanislav
16.10.2018
10:52:05
Ок. Тогда второй вопрос - у тебя уже прям чоткая законченная таблица в 100 гигабайт, точно распределённая по 100 серверам. Но мы же знаем, что так не бывает. Данные растут, постоянно выдерживать распределение?

Ну и ещё вопрос к файловой системе опреционки

Alex
16.10.2018
10:53:13
да, данные новые это новые файлы, пускай появляются, но желательно тоже одинарными блоками

Stanislav
16.10.2018
10:53:23
Размер 128 мегабайт - понимается, что ты на диске получишь линейную запись и чтение

Прям начиная с железки - потом ос - потом хдфс

Что будет с фрагментацией при 1 гбайте?

Google
Stanislav
16.10.2018
10:54:09
На железном уровне разброс записи куда попало?

Alex
16.10.2018
10:56:43
размер хдфс блока важен для самой hdfs и информирует когда нужно делать отсечку и начинать писать в другой блок все понимают что 100ГБ одним блоком не записать, нужно как-то делить для ос один hdfs блок это один файл, hdfs держит набор dirs в пределах датаноды и пытается как-то выровнять их загрузку, но правило “1 блок hdfs = 1 файл на файловой системе” сохраняется

если ты пишешь линейно файл, то и ос постарается на железе заалоцировать это линейно

Sergey
16.10.2018
10:57:06
а давайте еще рассмотрим разные варианты с parquet.block.size ,

Alex
16.10.2018
10:57:08
но мы все понимаем, что никто гарантий не даст

parquet.block.size - в принципе это размер страйпа внутри паркет файла =) но выравнивать еще и их и держать выровненными по hdfs блоку намного сложнее

Alex
16.10.2018
11:00:12
для hdfs клиент не знает ничего про диски под ними =) хдфс не всегда имеет одинаковые ноды в кластере может быть как говно по 1тб, так и 12тб и на момент создания файла не всегда ты это знаешь, сколько же зальешь

во-во-во! может приведете рекомендации из своего опыта?
не, ничего сильно не скажу, тут уж все от задач зависит, читать/писать/фильтровать/компрессия

Stanislav
16.10.2018
11:01:46
для hdfs клиент не знает ничего про диски под ними =) хдфс не всегда имеет одинаковые ноды в кластере может быть как говно по 1тб, так и 12тб и на момент создания файла не всегда ты это знаешь, сколько же зальешь
Именно. Ты смотришь на все с другой стороны, клиента. Так то вообще наплевать, файл на 1 мегабайт или на 100 гигабайт - если его доставать одинаково быстро

Alex
16.10.2018
11:02:30
Именно. Ты смотришь на все с другой стороны, клиента. Так то вообще наплевать, файл на 1 мегабайт или на 100 гигабайт - если его доставать одинаково быстро
так в том то и дело что варианты НЕ одинакого быстрые 1) прочитать с диска 2) прочитать с удаленной датаноды

если у тебя 100гбит сетка, везде ссд и датаноды кастомные (тот же мапр заявляет более шуструю работу их аналога hdfs), то может тебе и не нужно заботиться о локалити

во всех остальных нужно

Alex
16.10.2018
11:05:00
просто я видел как из-за кривой локалити загибались датаноды и сеть =)

Stanislav
16.10.2018
11:05:01
И размер блока тоже

В ситуации фрагментации файловой системы сервера твой 1 гигабайт будет раскидан по жёсткому диску в разных местах. В итоге для его чтения потребуется не 1 операция чтения, а допустим тысяча

Страница 168 из 182