Apache Kudu
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Apache Kudu
Кто нибудь работает с этим делом ? Мне сегодня на новом месте индусские коллеги выдали уж очень странные requirements, правда дали свободу творчества что уже хорошо, вот сижу думаю как получше сделать
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: Apache Kudu
штука перспективная, во многом напоминает оракл. там и косящий под оракл UNDO и REDO и консистентное чтение. красота, если допилят. у нас используется в прод на мелкой задачке, под небольшой нагрукой вполне. но когда попробовали посерьезней задачку развернуть, посыпались мутные ексепшены, что-то не так под нагрузкой с синхронизацией таблетов. вроде проблема известная и после апгрейда версии должна уйти, но пока вернулись на писанину в parquet.
из того что бросается в глаза - до сих пор нет базовых типов. нет даты, нет децимал. без сиквенса, тяжко PK генерить. из импалы нет консистентного чтения.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Apache Kudu
Вот вот, из того что я вчера вычитала, там все сыроватое. Мне надо из этого дела написать продьюсер в Кафку. Какой то пайплайн наоборот. Точнее там есть direct flow, куча данных собирается из разных datasources в Кафку, массажируется и пихается в эту Куду. А потом они хотят опять через Кафку посылать Kudu records сразу в несколько аппликейшенов (salesforce в основном). Мне такая архитектура показалась какой то переусложненной, тем более что я не нашла ни одного примера . наверное просто коннектится по jdbc и вычитывать мессаджи, посылая в кафку.iDesperado wrote: ↑28 Nov 2017 07:43штука перспективная, во многом напоминает оракл. там и косящий под оракл UNDO и REDO и консистентное чтение. красота, если допилят. у нас используется в прод на мелкой задачке, под небольшой нагрукой вполне. но когда попробовали посерьезней задачку развернуть, посыпались мутные ексепшены, что-то не так под нагрузкой с синхронизацией таблетов. вроде проблема известная и после апгрейда версии должна уйти, но пока вернулись на писанину в parquet.
из того что бросается в глаза - до сих пор нет базовых типов. нет даты, нет децимал. без сиквенса, тяжко PK генерить. из импалы нет консистентного чтения.
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Apache Kudu
И еще я про Кафку всякие интересные вещи узнаю. Оказывается для консистенси нужно программно запоминать last read offset каждым консьюмером в каждой партиции . и это называется стриминг .
Другим кульминационным моментом сегодня было ознакомление с теми самыми сейлсфорсовскими Эйнштейнами ( где мне понравилось интервью проходить) точнее как простые лохи в их клауд данные грузят. У них у самих суммарная дата в клауде и правда биг, но общественность это дело грузит черех external data connector api, csv файлами по 10 mb chunks . И наверное чтобы добить юзеров пример в документации приведен с SOAP endpoint
Отдельно "радует" Mulesoft. Сколько же в долине странного софта пишется
Другим кульминационным моментом сегодня было ознакомление с теми самыми сейлсфорсовскими Эйнштейнами ( где мне понравилось интервью проходить) точнее как простые лохи в их клауд данные грузят. У них у самих суммарная дата в клауде и правда биг, но общественность это дело грузит черех external data connector api, csv файлами по 10 mb chunks . И наверное чтобы добить юзеров пример в документации приведен с SOAP endpoint
Отдельно "радует" Mulesoft. Сколько же в долине странного софта пишется
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: Apache Kudu
у куду есть некий kudu client, как я понял он заметно более развитый, чем impala/sql api. вот через этот kudu client можно read_at_snapshot применять и читать консистентно.
вот тут чуток есть описание https://blog.cloudera.com/blog/2017/04/ ... ite-paths/
что касается архитектур, то да, ораклойдам вообще не понять замыслов жава архитектов. я уже пару раз бился об заклад, что не взлетит и проиграл. криво, косо, но в SLA укладывается.
вот тут чуток есть описание https://blog.cloudera.com/blog/2017/04/ ... ite-paths/
что касается архитектур, то да, ораклойдам вообще не понять замыслов жава архитектов. я уже пару раз бился об заклад, что не взлетит и проиграл. криво, косо, но в SLA укладывается.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Apache Kudu
Спасибо большое, читану. Я вчера нашла гитхаб рипо товарища Ted Malaski, который в клаудере идеолог по Спарку и аналитике, там тоже весьма грамотный пример с Куду на Скале, интересно будет сравнить.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 укладывается.
Насчет архитекторов, понять то другого всегда нетривиально . Мой шпил был в основном про то что бигдаталейк, он в наши дни нередко смоллдата лужа . Орехи колем микроскопами и все такое ...
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
-
- Posts: 10
- Joined: 12 Dec 2004 22:36
Re: Apache Kudu
Вот еше интересный зверек - 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
Мы пытаемся лить стрим из спарка в куду, но используем StructuredStreaming. Там приятный API, но и ограничений мама не горюй. Пока выкручиваемся, но может придется перепиливать pipeline на DStreams
-
- Posts: 10
- Joined: 12 Dec 2004 22:36
Re: Apache Kudu
Если из кафки читать стрим следуюшим образом:
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
А мне кажется что удобнее изначально так задизайнить что прочтение дубликата не страшно, чтобы этим не заморачиваться. потому что во первых консьюмер должен еще куда коннектится, оффсет сохранять, а во вторых если что то пойдет лесом, не факт что он под конец сохранить, все равно заново читатьaz44 wrote: ↑29 Nov 2017 23:19Если из кафки читать стрим следуюшим образом:
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
А я когда глянула на их страничку подумала что им надо денюшку платить, линка на опенсорс проект не видела. Вообще-то у самого проекта kudu есть kidu-spark - https://github.com/cloudera/kudu/tree/m ... kudu-spark , я код глянула сегодня , там все основное есть - kudu context, rdd etcaz44 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
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Apache Kudu
Помучала сегодня все перечисленные библиотеки и SparkOnKudu в итоге самая грамотная оказалась. Отлично работает с локальной Kudu в докере
из недостатков отметила что все имена надо в upper case и с type conversion глюки небольшие то тут то там. Но это в самой Kudu
из недостатков отметила что все имена надо в upper case и с type conversion глюки небольшие то тут то там. Но это в самой Kudu
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: Apache Kudu
я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Apache Kudu
Oops my bad . Я прогоняла BasicExample с Kudu на docket locally ( на Get started можно взять) . Tам с kududb Kudu client и regular Spark, sql context.iDesperado wrote: ↑01 Dec 2017 09:05я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
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
Нашла кстати и их в github-eСабина 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ам не пробовал, впечатлениями поделиться не могу.
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
И еше ... ни у кого нет хорошей библиотеки для 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
Там много разных опций где хранить, все равно не хотелось бы конечно в идеале этим заморачиваться.az44 wrote: ↑29 Nov 2017 23:19Если из кафки читать стрим следуюшим образом:
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
-
- Posts: 10
- Joined: 12 Dec 2004 22:36
Re: Apache Kudu
Сабина, разделяю Вашу боль. Все эти танцы вокруг partitions и offsets в kafka несколько напрягают. Также огорчает отсутствие queue.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Apache Kudu
Вернулась вчера к этому коду, начала писать наконец после долгих согласований что и где .iDesperado wrote: ↑01 Dec 2017 09:05я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через 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
Удивила эта Куду в очередной раз. Пыталась найти что то толковое для мониторинга и ничего кроме Cloudera Manager не предлагается (по сути мониторинг Impala). Получила read permissions, полезла в Queries, а там несколько висят по 10+ часов! Оказалось что на самом деле они за секунды выполнились - какой то баг, когда запущенные в Hue queries не возвращают что надо и выглядят в Cloudera Manager как hanging.
И как эту Куду-беду мониторить то ? Руками проверять что ли table stats каждый раз ?
И как эту Куду-беду мониторить то ? Руками проверять что ли table stats каждый раз ?
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Apache Kudu
Вам случаем не доволилось замерять сколько ваши queries submitted through API calls ( то есть программно через код) тратят времени в самой Kudu ? Пока я так и не нашла ничего ни в Cloudera Manager ни в других тулзах где бы было видно каждый квери и соотвествующии метрики per query. Таб Impala -> Queries не включает те квери, которые запускаются кодом через API. Фигня какая то, вообще непонятно как перформанс мониторить ?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
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Apache Kudu
Вам такой же вопрос про мониторинг ( см выше), почему то не могу ничего найти, хотя бы explain plan посмотреть. Impalad эти квери «не видит» почему тоiDesperado wrote: ↑01 Dec 2017 09:05я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 5777
- Joined: 13 Feb 2016 18:50
- Location: Кемерово
Re: Apache Kudu
аватарка новая - на коньках штоли?Сабина wrote: ↑27 Dec 2017 01:24Вам такой же вопрос про мониторинг ( см выше), почему то не могу ничего найти, хотя бы explain plan посмотреть. Impalad эти квери «не видит» почему тоiDesperado wrote: ↑01 Dec 2017 09:05я видел описание, но перемножать глюки куду еще и на это не рискнули. я кстате не понял работает ли оно через sparkSession или там в стиле 1.6 kuduContext нужно объявлять ?
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: Apache Kudu
тут нечего сказать, у меня на реальный кластер лимитированный доступ. зато слышал что наши спарк-куду именно через dataset от spark 2.0 ковыряют. но пока прототипы.