Pull to refresh
57
0
0x62.a.sh @0x62ash

User

Send message
> Мы высадили два RS на одну ноду

А, вижу тоже замучилась тред-пулы подкручивать что бы выжать максимум с железа и всё равно этого не хватает и проще поднять еще RS на сервере 8)
А мы поступили проще — на некоторые таблицы вообще отключили BlockCache )

Кстати, а какие цифры на вашем профиле данных вы получили бы если бы включили SNAPPY/LZO/ZSTD и хранение в кеше сжатых данных hbase.block.data.cachecompressed issues.apache.org/jira/browse/HBASE-11331?

Не пробовали Кеш на SSD?

У HBase небольшой кеш, а вот в кеш файловой системы вполне могло все попасть (у вас там вроде по 700GB памяти).

Зачем major делать до заливки?

Скиньте исходники для HBase. Прогоню на своем нагрузочном кластере. Интересно что у меня получится.
В get полного экземпляра у вас будут и «новые» данные из MemStore и «старые» из HFile, так что диски будут задействованы. Причем чтение из MemStore + HDFS возможно будет даже медленее чем если бы вы сразу из HDFS считали объект целиком.
> ZooKeeper session timeout + split time + assignment/replay time

Split time тут лишнее.

Вы сильно раздули MemStore потому у вас при падение RS нужно много данных вычитывать из WAL. У нас после падение RS рекавери за 1-2 минуты проходит.

> На версии 2.1.0 наблюдали как RS упал, а переезд не начался
Как по мне так намного чаще регионы зависают в transition по разным причинам и их приходится в ручном режиме пропихивать.
В реальной жизни чтение обычно сильно позже идет после записи, а значит MemStore будет сброшен на диск до чтения. Потому я склоняюсь что тест на чтение должен работать с файлов после принудительного FLUSH что бы зафиксировать скорость чтение в типовом сценарии потребления.
В тесте для HBase добавьте FLUSH на таблицы в конце записи, что бы чтение было не из MemStore, а с диска. Иначе БД в разных условиях сравниваются на чтение.
Сдается мне что произошла путаница между Wide Column и Column Oriented.
Топик стартер кажется имел ввиду второе
Упс… не туда, сорри
Понял, спасибо
А сейчас это делается средствами IDEA API?
А вот вопрос — движок которые аннотации читает и т.д. тяжело вытащить из проекта? Если его сделать отдельным, то тогда его можно было бы подключить в другие редакторы (по аналогии с https://github.com/vheon/JediHTTP)
Ага, аннотации есть, значит в принципе можно попробовать и что-нибудь сложное отрефакторить.
Взял проект на карандаш.
Спасибо за труды.
Подскажите, а какие возможности рефакторинга есть?
Не 1С, но российская бухгалтерия. Данные приезжают с большим кол-во атрибутов на русском языке. Попробовали на уникоде имена методов создавать — никаких вообще проблем и трудностей. Но вот некоторые дополнительные средства, типа Ciritic, увы, теперь не работают )
Под "utf8 код" я понимал имена переменных, методов и т.д. с использованием юникода
Достаточно распространенное сейчас явление, т.к. сам perl прекрасно с этим работает. Но "perl может распарсить только сам perl", потому такие решения как PPI с таким кодом не работают и нормально пофиксить сам PPI достаточно сложно.
Да… и с исключениями беда, они по идее должны в разы сложность программы поднимать, т.к. добавляют большое кол-во рёбер. Но я согласен, что эту реализацию McCube нужно использовать как примерная оценка сложности.

Спасибо за обзор. Люблю разные метрики и аналитику, но при этом не задумывался что можно не только код для этого писать, а и сам код анализировать.

PS. PPI, кстати, совсем не хочет работать с utf8 кодом. Причем легко парсер токенов там не исправить, потому у меня в проекте его полноценно использовать никак не получается. Не сталкивался с этим?
Так… Боюсь мы оба не правы. Думаю что на выше пример должно быть 12 — 10 + 2 = 4.

Возьмем пример попроще — всего 2 if

    if (1) {
    } else {
    }

    if (2) {
    } else {
    }

Тут должно быть 8 — 7 + 2 = 3. Такого же мнения и википедия. А вот countperl возвращает 5
Что-то цикломатическая сложность как-то криво считается.

sub test {

    if (1) {
    } else {
    }

    if (2) {
    } else {
    }

    if (3) {
    } else {
    }
}

countperl выдает на это 7, хотя должно быть 8.
> Иначе таймер никогда не будет выполнен, т.к. AnyEvent посчитает, что функция выполнена и ничего делать не надо.

Скорее созданный таймер выйдет из области видимости и будет отменен

Хотелось бы конечно еще и куски кода из Twiggy в примере увидеть, что бы лучше понимать как он обрабатывает callback'и и «склеивает» все вместе.

Information

Rating
Does not participate
Registered
Activity