Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Так же упомяну общий недостаток Teradata и Hadoop. Это необходимость как-то распределить данные по нодам.
Hadoop, получается, очень невыгоден по электроэнергии, и это еще без учета того, что у Exadata все с двойным резервированием.
Брр, какое-то сумбурное у вас сравнение. К тому же, многие высказывания либо запутаны, либо неверны. Вот, например:
Так же упомяну общий недостаток Teradata и Hadoop. Это необходимость как-то распределить данные по нодам.
Смысл в том, что бы минимизировать сетевой трафик. Если Hadoop, сам правильно умеет распределять данные, а потом с помощью MapReduce распараллелить все так, что бы каждый нод обрабатывал только свои локальный данные, то я прислоняюсь перед Hadoop. Но я сомневаюсь, что он сможет так сделать. Если уж Терадата и Оракл и DB2 не смогли.
Launched map tasks: 50, 49, 46
Launched reduce tasks: 9, 1, 15
Data-local map tasks: 41, 42, 37
Rack-local map tasks: 9, 7, 9
Hadoop будет быстрее за счет отсутствия ACID, а в Оракле есть Undo and Redo logs. Которые существенно замедляют работу, но позволяют не беспокоиться о то, что данные могут и читать и изменяться параллельно 10 процессов. Оракл — это удобство!
Это не скорость чтения с винта, это скорость обработки данных согласно пресрелизу Оракла. Получается count(*) по таблице в 100 Гб должна занимать 4 секунды. Но я лично не проверял.
>И по той же причине при оценке электроэнергии нужно рассматривать сразу всю систем
Ок, жду от вас статьи об этом =)
Так всё-таки речь о скорости или об удобстве?
Вы мне предлагаете так же поговорить про абстрактную систему в вакууме с неизвестными задачами и посчитать для неё затраты электроэнергии? :) Ну уж нет, спасибо
Нужно узнать, как Hadoop распределяет данные по нодам. Я уверен, что есть способ на это повлиять. Возможно это температурное распределение, т.е. данные двигаются, если Хадуп понял, что мало Data-local map tasks?
Я могу сказать, как это делается в Терадате. Допустим есть 2 абсолютно разных запросы. Одно распределение данных для них не подоходит, либо производительность одного будет просидать, либо второго. Делают обычно исходную таблицу распределенную оптимально для запроса 1, и табличный индекс, по сути копия таблицу распределенную оптимально для запроса 2. Как оптимизировать в этом случае Hadoop?
Главное в статье скорость, но и про удобство тоже можно рассказать. Это влияет на стоимость разработки.
Давайте договоримся о конкретике. Рассчитайте стоимость кластера, способного считывать в многопоточном режиме (т.е. винты должны быть серверные с большим числом головок) 25 и 35 Гб/с с дисков.
Остается теперь узнать отличие реализации HDFS от HBase на Хадупе. Вы не в курсе?
Кто-то собирает Хадуп на большом количестве слабых серверов, кто-то малом количестве мощных. Думаю, если есть редкие или даже частые задачи по соединению таблиц, то лучше использовать малое количество мощных серверов.
Я всегда думал, что Hive поверх HBase, но вы говорите, что поверх HDFS. Или Hive может быть и поверх HBase?
Как я понял в HDFS нет аналогов партиционирования? Например у нас лежит таблица в 1 триллион записей. А нужно прочитать только последний месяц. То Мариться будет весь 1 триллион, уже после редюсится до 1 месяца?
/data/mytable/dt=2014-01-01/actualdata.dat
/data/mytable/dt=2014-01-02/actualdata.dat
/data/mytable/dt=2014-01-03/actualdata.dat
...
На сколько я понял Hive это чисто движок преобразующий SQL в MapReduce и он не вмешивается в формат хранения и тем более в распределения данных.
Я думаю если еще не создали, то создадут какой ни будь плагинчик для управления распределением данных по нодам.
Расскажу на примере фейла DB2:
Смысл в том, что каждая из 1000 нод обрабатывает только свои данные, тем самым минимизируется сетевой трафик. А если данные для обработки нужно пересылать он нода к ноду, как например в DB2, то это плохо. Поэтому DB2 и загнулась на больших данных.
Параллелить Exadata не особо выгодно. Дисковое пространство то одно на всех! А если объединить дисковое пространство 2-х стоек (позволяется ли это Exadata — не знаю?), то все упрется в производительность сети 40Гигабит между стойками. Вернее, стойка 1 будет иметь быстрый и широкий доступ к своим винтам, но медленный к винтам стойки 2, и наоборот.
Во-первых, есть такая штука как Exadata storage expansion.
Оракл вполне разумно параллелит запросы, поэтому не будет передавать все с сервера на сервер при параллельном запросе таком как count(*) from big_table.
Oracle vs Teradata vs Hadoop