Статьи

Несколько методов для структурированных вычислений больших данных

Все данные могут иметь значение существования, только участвуя в вычислении для создания значения. Большие данные не являются исключением. Вычислительные возможности  больших структурных данных  определяют диапазон практического применения больших данных. В этой статье я хотел бы представить несколько распространенных методов вычисления: API, Script, SQL и SQL-подобные языки.

API : «API» здесь относится к автономному методу доступа к API без использования JDBC или ODBC. Давайте возьмем MapReduce в качестве примера. MapReduce предназначен для экономичного выполнения параллельных вычислений с самого нижнего уровня. Таким образом, MapReduce предлагает превосходное масштабирование, горячую замену и экономическую эффективность. MapReduce — это один из компонентов Hadoop с открытым исходным кодом и обильными ресурсами.

Образец кода:

public void reduce(Text key, Iterator<Text> value,

OutputCollector<Text, Text> output, Reporter arg3)

throws IOException {

double avgX=0;

double avgY=0;

double sumX=0;

double sumY=0;

int count=0;

String [] strValue = null;

while(value.hasNext()){

count++;

strValue = value.next().toString().split(“\t”);

sumX = sumX + Integer.parseInt(strValue[1]);

sumY = sumY + Integer.parseInt(strValue[1]);

}

avgX = sumX/count;

avgY = sumY/count;

tKey.set(“K”+key.toString().substring(1,2));

tValue.set(avgX + “\t” + avgY);

output.collect(tKey, tValue);

}

Поскольку принятый универсальный язык программирования не подходит для специализированных вычислений данных, MapReduce менее способен, чем SQL и другие специализированные языки вычислений в вычислительной технике. Плюс, это неэффективно в разработке. Неудивительно, что программисты вообще жалуются, что это «больно». Кроме того, жесткая структура MapReduce приводит к относительно более низкой производительности.

Есть несколько продуктов, использующих API, и MapReduce является наиболее типичным среди них.

Скрипт : «Скрипт» здесь относится к специализированному скрипту для вычислений. Возьмите esProc в качестве примера. esProc предназначен для улучшения вычислительных возможностей Hadoop. Таким образом, в дополнение к недорогому горизонтальному масштабированию, он также предлагает высокую производительность, большие вычислительные возможности и удобные вычисления между разнородными источниками данных, особенно идеально подходящие для достижения сложной вычислительной цели. Кроме того, это скрипт в виде сетки, характеризующийся высокой эффективностью разработки и полными функциями отладки.

Образец кода:

A В
1 = Файл ( «HDFS: //192.168.1.200/data/sales.txt») .size () //размер файла
2 = 10 // количество заданий
3 = К (А2) // 1 ~ 10, 10 задач
4 = A3. (~ * INT (A1 / A2)) // список параметров для стартовой позиции
5 = А3. ((~ -1) * INT (A1 / A2) + 1) // список параметров для конечного положения
6 = callx («groupSub.dfx», A5, A4; [«192.168.1.107:8281», «192.168.1.108:8281»]) // вызов подпрограммы, 10 задач на 2 параллельных узла
7 = A6.merge (EmpId) // mergingtaskresult
8 =A7.group@i (EmpId; ~ .sum (totalAmount): orderAmount,

~ .Max (макс): maxAmount, ~ .min (мин): MINAMOUNT, ~ .max (макс) /

~ .Sum (количество): avgAmount)

// Подведение итогов завершено

Пользователи Java могут вызывать результат из esProc через JDBC, но им разрешено вызывать результат только в виде хранимой процедуры вместо любого оператора SQL. Кроме того, esProc не является открытым исходным кодом. Это два недостатка esProc.

Скрипт широко используется в MongoDB, Redis и многих других решениях для больших данных, но он недостаточно специализирован для вычислений. В другом примере операция объединения нескольких таблиц для MongoDB не только неэффективна, но также включает в себя кодирование на порядок сложнее, чем в SQL или esProc.

SQL : «SQL» здесь означает полный и полный SQL / SP, то есть ANSI 2000 и его расширенный набор. Возьмем в качестве примера Greenplum. Основными преимуществами Greenplum SQL являются мощные вычисления, высокоэффективная разработка и высокая производительность. Другие преимущества включают в себя широкое использование его языка, низкую стоимость обучения, простое обслуживание и возможность миграции — не говоря уже о его козыре: поддержка хранимых процедур для обработки сложных вычислений. Таким образом, бизнес-ценность может быть удобно использована из больших данных.

Образец кода:

CREATE OR REPLACE function view.merge_emp()

returns voidas$$

BEGIN

truncate view.updated_record;

insert into view.updated_recordselect y.* from view.emp_edw x right outer join   emp_src y   on x.empid=y.empid where x.empid is not null;

update view.emp_edwset deptno=y.deptno,sal=y.salfrom view.updated_record y  where   view.emp_edw.empid=y.empid;

insert into emp_edwselect y.* from emp_edw x right outer join emp_src y on   x.empid=y.empid where  x.empid is null;

end;

$$ language ‘plpgsql’;

Другие базы данных с аналогичной структурой MPP включают Teradata, Vertical, Oracle и IBM. Их синтаксические характеристики в основном одинаковы. Недостатки аналогичны. Стоимость приобретения и текущие расходы на техническое обслуживание чрезвычайно высоки. Заряжая своих пользователей масштабом данных, так называемый недорогой Greenplum на самом деле вовсе не выгоден — это больше похоже на зарабатывание больших денег под прикрытием больших данных. Другие недостатки включают неудобную отладку, несовместимый синтаксис, длительное время простоя при расширении и неудобные вычисления с несколькими источниками данных.

SQL-подобный язык : относится к выходным интерфейсам, таким как JDBC / ODBC, и ограничивается только теми языками сценариев, которые являются подмножеством стандартного SQL. Возьмите Hive QL в качестве примера. Самым большим преимуществом Hive QL является его способность экономически эффективно масштабироваться, оставаясь при этом удобным инструментом для разработки пользователями. Функция синтаксиса SQL хранится в Hive QL, поэтому затраты на обучение низкие, эффективность разработки и простота обслуживания. Кроме того, Hive является компонентом Hadoop. Открытый исходный код является еще одним преимуществом.

Образец кода:

SELECT e.* FROM (

SELECT name, salary, deductions["Federal Taxes"] as ded,

salary * (1 – deductions["Federal Taxes"]) as salary_minus_fed_taxes

FROM employees

) e

WHERE round(e.salary_minus_fed_taxes) > 70000;

Слабым местом Hive QL является отсутствие поддержки хранимых процедур. Из-за этого HiveQL сложно проводить сложные вычисления и, следовательно, трудно получить действительно ценный результат. Несколько более сложные вычисления будут основаны на MapReduce. Излишне говорить, что эффективность разработки низкая. Низкую производительность и пороговое время можно рассматривать как проблему, особенно в распределении задач, объединении в несколько таблиц, вычислении между рядами, многоуровневом запросе и упорядоченной группировке, а также в реализации другого алгоритма. Таким образом, HiveQL довольно сложно реализовать приложение Hadoop для больших данных в реальном времени.

Есть также некоторые другие продукты с SQL-подобными языками — например, MongoDB — они все еще хуже, чем Hive.

Доступные в настоящее время методы вычисления больших данных — это не более чем 4 типа API, Script, SQL и SQL-подобные языки. Хотелось бы, чтобы они развивались стабильно, и было бы все больше и больше рентабельных, мощных, практичных и полезных продуктов для вычислений данных.