Apache Kudu

Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Apache Kudu

Post by Сабина »

Кто нибудь работает с этим делом ? Мне сегодня на новом месте индусские коллеги выдали уж очень странные requirements, правда дали свободу творчества что уже хорошо, вот сижу думаю как получше сделать :)
https://www.youtube.com/watch?v=wOwblaKmyVw
iDesperado
Уже с Приветом
Posts: 1349
Joined: 28 Nov 2008 17:50

Re: Apache Kudu

Post by iDesperado »

Сабина wrote: 28 Nov 2017 06:00 Кто нибудь работает с этим делом ? Мне сегодня на новом месте индусские коллеги выдали уж очень странные requirements, правда дали свободу творчества что уже хорошо, вот сижу думаю как получше сделать :)
штука перспективная, во многом напоминает оракл. там и косящий под оракл UNDO и REDO и консистентное чтение. красота, если допилят. у нас используется в прод на мелкой задачке, под небольшой нагрукой вполне. но когда попробовали посерьезней задачку развернуть, посыпались мутные ексепшены, что-то не так под нагрузкой с синхронизацией таблетов. вроде проблема известная и после апгрейда версии должна уйти, но пока вернулись на писанину в parquet.
из того что бросается в глаза - до сих пор нет базовых типов. нет даты, нет децимал. без сиквенса, тяжко PK генерить. из импалы нет консистентного чтения.
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

iDesperado wrote: 28 Nov 2017 07:43
Сабина wrote: 28 Nov 2017 06:00 Кто нибудь работает с этим делом ? Мне сегодня на новом месте индусские коллеги выдали уж очень странные requirements, правда дали свободу творчества что уже хорошо, вот сижу думаю как получше сделать :)
штука перспективная, во многом напоминает оракл. там и косящий под оракл UNDO и REDO и консистентное чтение. красота, если допилят. у нас используется в прод на мелкой задачке, под небольшой нагрукой вполне. но когда попробовали посерьезней задачку развернуть, посыпались мутные ексепшены, что-то не так под нагрузкой с синхронизацией таблетов. вроде проблема известная и после апгрейда версии должна уйти, но пока вернулись на писанину в parquet.
из того что бросается в глаза - до сих пор нет базовых типов. нет даты, нет децимал. без сиквенса, тяжко PK генерить. из импалы нет консистентного чтения.
Вот вот, из того что я вчера вычитала, там все сыроватое. Мне надо из этого дела написать продьюсер в Кафку. Какой то пайплайн наоборот. Точнее там есть direct flow, куча данных собирается из разных datasources в Кафку, массажируется и пихается в эту Куду. А потом они хотят опять через Кафку посылать Kudu records сразу в несколько аппликейшенов (salesforce в основном). Мне такая архитектура показалась какой то переусложненной, тем более что я не нашла ни одного примера . наверное просто коннектится по jdbc и вычитывать мессаджи, посылая в кафку.
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

И еще я про Кафку всякие интересные вещи узнаю. Оказывается для консистенси нужно программно запоминать last read offset каждым консьюмером в каждой партиции . и это называется стриминг :).
Другим кульминационным моментом сегодня было ознакомление с теми самыми сейлсфорсовскими Эйнштейнами ( где мне понравилось интервью проходить) точнее как простые лохи в их клауд данные грузят. У них у самих суммарная дата в клауде и правда биг, но общественность это дело грузит черех external data connector api, csv файлами по 10 mb chunks . И наверное чтобы добить юзеров пример в документации приведен с SOAP endpoint :sadcry:
Отдельно "радует" Mulesoft. Сколько же в долине странного софта пишется :)
https://www.youtube.com/watch?v=wOwblaKmyVw
iDesperado
Уже с Приветом
Posts: 1349
Joined: 28 Nov 2008 17:50

Re: Apache Kudu

Post by iDesperado »

у куду есть некий kudu client, как я понял он заметно более развитый, чем impala/sql api. вот через этот kudu client можно read_at_snapshot применять и читать консистентно.
вот тут чуток есть описание https://blog.cloudera.com/blog/2017/04/ ... ite-paths/

что касается архитектур, то да, ораклойдам вообще не понять замыслов жава архитектов. я уже пару раз бился об заклад, что не взлетит и проиграл. криво, косо, но в SLA укладывается.
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

iDesperado wrote: 29 Nov 2017 10:55 у куду есть некий kudu client, как я понял он заметно более развитый, чем impala/sql api. вот через этот kudu client можно read_at_snapshot применять и читать консистентно.
вот тут чуток есть описание https://blog.cloudera.com/blog/2017/04/ ... ite-paths/

что касается архитектур, то да, ораклойдам вообще не понять замыслов жава архитектов. я уже пару раз бился об заклад, что не взлетит и проиграл. криво, косо, но в SLA укладывается.
Спасибо большое, читану. Я вчера нашла гитхаб рипо товарища Ted Malaski, который в клаудере идеолог по Спарку и аналитике, там тоже весьма грамотный пример с Куду на Скале, интересно будет сравнить.
Насчет архитекторов, понять то другого всегда нетривиально :). Мой шпил был в основном про то что бигдаталейк, он в наши дни нередко смоллдата лужа :). Орехи колем микроскопами и все такое ...
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

https://www.youtube.com/watch?v=wOwblaKmyVw
az44
Posts: 10
Joined: 12 Dec 2004 22:36

Re: Apache Kudu

Post by az44 »

Вот еше интересный зверек - Kudu Sink Connector: https://datamountaineer.wordpress.com/k ... -connector. The Kudu Sink Connector automates real time writes from Kafka to Kudu. Cам не пробовал, впечатлениями поделиться не могу.
Мы пытаемся лить стрим из спарка в куду, но используем StructuredStreaming. Там приятный API, но и ограничений мама не горюй. Пока выкручиваемся, но может придется перепиливать pipeline на DStreams
az44
Posts: 10
Joined: 12 Dec 2004 22:36

Re: Apache Kudu

Post by az44 »

Сабина wrote: 29 Nov 2017 05:05 И еще я про Кафку всякие интересные вещи узнаю. Оказывается для консистенси нужно программно запоминать last read offset каждым консьюмером в каждой партиции
Если из кафки читать стрим следуюшим образом:

val kafkaStream = spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "...") // comma separated list of broker:host
.option("subscribe", "some_topic") // comma separated list of topics
.option("startingOffsets", "latest") // read data from the end of the stream
.load()
.selectExpr("CAST(value AS STRING)")
.as[String]

read offset автоматически сохраняется в Zookeeper и дополнительных телодвижений на стороне клиента делать не нужно. А так да, read offset нужно тракать на стороне клиента, что безусловно огорчает. в этом плане Rabbit куда более продвинут.
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

az44 wrote: 29 Nov 2017 23:19
Сабина wrote: 29 Nov 2017 05:05 И еще я про Кафку всякие интересные вещи узнаю. Оказывается для консистенси нужно программно запоминать last read offset каждым консьюмером в каждой партиции
Если из кафки читать стрим следуюшим образом:

val kafkaStream = spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "...") // comma separated list of broker:host
.option("subscribe", "some_topic") // comma separated list of topics
.option("startingOffsets", "latest") // read data from the end of the stream
.load()
.selectExpr("CAST(value AS STRING)")
.as[String]

read offset автоматически сохраняется в Zookeeper и дополнительных телодвижений на стороне клиента делать не нужно. А так да, read offset нужно тракать на стороне клиента, что безусловно огорчает. в этом плане Rabbit куда более продвинут.
А мне кажется что удобнее изначально так задизайнить что прочтение дубликата не страшно, чтобы этим не заморачиваться. потому что во первых консьюмер должен еще куда коннектится, оффсет сохранять, а во вторых если что то пойдет лесом, не факт что он под конец сохранить, все равно заново читать
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

az44 wrote: 29 Nov 2017 21:56 Вот еше интересный зверек - Kudu Sink Connector: https://datamountaineer.wordpress.com/k ... -connector. The Kudu Sink Connector automates real time writes from Kafka to Kudu. Cам не пробовал, впечатлениями поделиться не могу.
Мы пытаемся лить стрим из спарка в куду, но используем StructuredStreaming. Там приятный API, но и ограничений мама не горюй. Пока выкручиваемся, но может придется перепиливать pipeline на DStreams
А я когда глянула на их страничку подумала что им надо денюшку платить, линка на опенсорс проект не видела. Вообще-то у самого проекта kudu есть kidu-spark - https://github.com/cloudera/kudu/tree/m ... kudu-spark , я код глянула сегодня , там все основное есть - kudu context, rdd etc
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

Помучала сегодня все перечисленные библиотеки и SparkOnKudu в итоге самая грамотная оказалась. Отлично работает с локальной Kudu в докере

из недостатков отметила что все имена надо в upper case и с type conversion глюки небольшие то тут то там. Но это в самой Kudu
https://www.youtube.com/watch?v=wOwblaKmyVw
iDesperado
Уже с Приветом
Posts: 1349
Joined: 28 Nov 2008 17:50

Re: Apache Kudu

Post by iDesperado »

Сабина wrote: 01 Dec 2017 07:30 Помучала сегодня все перечисленные библиотеки и SparkOnKudu в итоге самая грамотная оказалась. Отлично работает с локальной Kudu в докере

из недостатков отметила что все имена надо в upper case и с type conversion глюки небольшие то тут то там. Но это в самой Kudu
я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

iDesperado wrote: 01 Dec 2017 09:05
Сабина wrote: 01 Dec 2017 07:30 Помучала сегодня все перечисленные библиотеки и SparkOnKudu в итоге самая грамотная оказалась. Отлично работает с локальной Kudu в докере

из недостатков отметила что все имена надо в upper case и с type conversion глюки небольшие то тут то там. Но это в самой Kudu
я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
Oops my bad :). Я прогоняла BasicExample с Kudu на docket locally ( на Get started можно взять) . Tам с kududb Kudu client и regular Spark, sql context.
https://github.com/tmalaska/SparkOnKudu ... mple.scala
https://github.com/tmalaska/SparkOnKudu ... ples.scala

Это у меня вот этот Kudu client страшно глючил
https://github.com/cloudera/kudu-exampl ... les/sample

То есть org.apache.kudu.client vs org.kududb.client.KuduClient
Last edited by Сабина on 01 Dec 2017 17:47, edited 2 times in total.
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

Сабина wrote: 30 Nov 2017 01:27
az44 wrote: 29 Nov 2017 21:56 Вот еше интересный зверек - Kudu Sink Connector: https://datamountaineer.wordpress.com/k ... -connector. The Kudu Sink Connector automates real time writes from Kafka to Kudu. Cам не пробовал, впечатлениями поделиться не могу.
А я когда глянула на их страничку подумала что им надо денюшку платить, линка на опенсорс проект не видела.
Нашла кстати и их в github-e
https://github.com/Landoop/stream-reactor
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

И еше ... ни у кого нет хорошей библиотеки для rest calls from Kafka consumer ( желательно на Scala )?
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

az44 wrote: 29 Nov 2017 23:19
Сабина wrote: 29 Nov 2017 05:05 И еще я про Кафку всякие интересные вещи узнаю. Оказывается для консистенси нужно программно запоминать last read offset каждым консьюмером в каждой партиции
Если из кафки читать стрим следуюшим образом:

val kafkaStream = spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "...") // comma separated list of broker:host
.option("subscribe", "some_topic") // comma separated list of topics
.option("startingOffsets", "latest") // read data from the end of the stream
.load()
.selectExpr("CAST(value AS STRING)")
.as[String]

read offset автоматически сохраняется в Zookeeper и дополнительных телодвижений на стороне клиента делать не нужно. А так да, read offset нужно тракать на стороне клиента, что безусловно огорчает. в этом плане Rabbit куда более продвинут.
Там много разных опций где хранить, все равно не хотелось бы конечно в идеале этим заморачиваться.
https://blog.cloudera.com/blog/2017/06/ ... streaming/
https://www.youtube.com/watch?v=wOwblaKmyVw
az44
Posts: 10
Joined: 12 Dec 2004 22:36

Re: Apache Kudu

Post by az44 »

Сабина, разделяю Вашу боль. Все эти танцы вокруг partitions и offsets в kafka несколько напрягают. Также огорчает отсутствие queue.
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

iDesperado wrote: 01 Dec 2017 09:05
Сабина wrote: 01 Dec 2017 07:30 Помучала сегодня все перечисленные библиотеки и SparkOnKudu в итоге самая грамотная оказалась. Отлично работает с локальной Kudu в докере

из недостатков отметила что все имена надо в upper case и с type conversion глюки небольшие то тут то там. Но это в самой Kudu
я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
Вернулась вчера к этому коду, начала писать наконец после долгих согласований что и где :).
Да, увы, код этот его ( SparkOnKidu) староват, обидно даже что он его не подправит раз классы читает на Орайли.
В общем после танцев с подборкой работающих друг с другом больмень не древних библиотек получается что через KuduContext все.
Там еще всплыла проблемка изза 300 columns max. Cloudera у нас тут будет в четверг обсуждать варианты.
Еще в нашем случае надо отделять records upserted since last time we read. Триггеров там нет насколько я вижу, придется танцы с timestamps или может они что посоветуют
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

Удивила эта Куду в очередной раз. Пыталась найти что то толковое для мониторинга и ничего кроме Cloudera Manager не предлагается (по сути мониторинг Impala). Получила read permissions, полезла в Queries, а там несколько висят по 10+ часов! Оказалось что на самом деле они за секунды выполнились - какой то баг, когда запущенные в Hue queries не возвращают что надо и выглядят в Cloudera Manager как hanging.
И как эту Куду-беду мониторить то :)? Руками проверять что ли table stats каждый раз ?
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

az44 wrote: 29 Nov 2017 21:56 Вот еше интересный зверек - Kudu Sink Connector: https://datamountaineer.wordpress.com/k ... -connector. The Kudu Sink Connector automates real time writes from Kafka to Kudu. Cам не пробовал, впечатлениями поделиться не могу.
Мы пытаемся лить стрим из спарка в куду, но используем StructuredStreaming. Там приятный API, но и ограничений мама не горюй. Пока выкручиваемся, но может придется перепиливать pipeline на DStreams
Вам случаем не доволилось замерять сколько ваши queries submitted through API calls ( то есть программно через код) тратят времени в самой Kudu ? Пока я так и не нашла ничего ни в Cloudera Manager ни в других тулзах где бы было видно каждый квери и соотвествующии метрики per query. Таб Impala -> Queries не включает те квери, которые запускаются кодом через API. Фигня какая то, вообще непонятно как перформанс мониторить :( ?
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

iDesperado wrote: 01 Dec 2017 09:05
Сабина wrote: 01 Dec 2017 07:30 Помучала сегодня все перечисленные библиотеки и SparkOnKudu в итоге самая грамотная оказалась. Отлично работает с локальной Kudu в докере

из недостатков отметила что все имена надо в upper case и с type conversion глюки небольшие то тут то там. Но это в самой Kudu
я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
Вам такой же вопрос про мониторинг ( см выше), почему то не могу ничего найти, хотя бы explain plan посмотреть. Impalad эти квери «не видит» почему то
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
Вячеслав Викторович
Уже с Приветом
Posts: 5777
Joined: 13 Feb 2016 18:50
Location: Кемерово

Re: Apache Kudu

Post by Вячеслав Викторович »

Сабина wrote: 27 Dec 2017 01:24
iDesperado wrote: 01 Dec 2017 09:05
Сабина wrote: 01 Dec 2017 07:30 Помучала сегодня все перечисленные библиотеки и SparkOnKudu в итоге самая грамотная оказалась. Отлично работает с локальной Kudu в докере

из недостатков отметила что все имена надо в upper case и с type conversion глюки небольшие то тут то там. Но это в самой Kudu
я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
Вам такой же вопрос про мониторинг ( см выше), почему то не могу ничего найти, хотя бы explain plan посмотреть. Impalad эти квери «не видит» почему то
аватарка новая - на коньках штоли? :oops:
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Apache Kudu

Post by Сабина »

Вячеслав Викторович wrote: 27 Dec 2017 01:32 аватарка новая - на коньках штоли? :oops:
та не, просто черно-белая
https://www.youtube.com/watch?v=wOwblaKmyVw
iDesperado
Уже с Приветом
Posts: 1349
Joined: 28 Nov 2008 17:50

Re: Apache Kudu

Post by iDesperado »

Сабина wrote: 27 Dec 2017 01:24
Вам такой же вопрос про мониторинг ( см выше), почему то не могу ничего найти, хотя бы explain plan посмотреть. Impalad эти квери «не видит» почему то
тут нечего сказать, у меня на реальный кластер лимитированный доступ. зато слышал что наши спарк-куду именно через dataset от spark 2.0 ковыряют. но пока прототипы.

Return to “Вопросы и новости IT”