kylin-принцип работы и использование

Apache Kylin

предисловие

Предыдущийразвертывание установки kylinВ основном для установки и краткого ознакомления, сейчас используется kylin.

1.1 Обзор килина

Демонстрационные данные, у нас такая потребность проанализировать, какие факторы влияют на зарплату.

1.1.1 Размер)

Проще говоряизмерениеЭто точка зрения наблюдения за данными, которые обычно являются атрибутом записей данных.Например, на приведенном выше рисунке заработная плата может быть связана с типом работы или годами занятости, тогда работа и дата приема на работу являются измерениями.

1.1.2 Мера

мераЭто агрегированное статистическое значение, обычно такое как сумма заказа, цена товара и т. д. Соответствующий столбец в демонстрационных данных — это sal. В запросах на основе SQL атрибуты Group by обычно являются измерениями, а вычисляемое является мерой.

select t.job,sum(t.sal)  from demo t group by t.job

1.1.3 Куб и параллелепипед

По измерениям и мерам можно классифицировать все поля в модели данных, либо по измерениям, либо по мерам, после чего можно выполнить предварительный расчет. Учитывая модель данных, объедините все измерения, предполагая, что есть N измерений, тогда всего 2 ^ n - 1 возможностей, которые можно объединить. Как показано в приведенных выше демонстрационных данных, всего существует 3 комбинации.

Для каждой комбинации измерений показатели агрегируются, а результат операции сохраняется в виде материализованного представления, которое называетсяCuboid. Кубоид всех измерений, объединенных в единое целое, называетсяCube.

1.2 Использование веб-интерфейса kylin

1.2.1 Сборка данных улья

войти в улей

[root@node2 hive-1.2.2]# hive

Создать таблицу сотрудников в улье

create external table if not exists default.emp(
empno int,
ename string,
job string,
mgr int,
hiredate string, 
sal double, 
comm double,
deptno int)
row format delimited fields terminated by '\t';

Создать таблицу отделов

create external table if not exists default.dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by '\t';

Загрузить файлы данных на node2

scp *.txt root@node2:~

данные сотрудника

7369    SMITH   CLERK   7902    1980-12-17      800.00          20
7499    ALLEN   SALESMAN        7698    1981-2-20       1600.00 300.00  30
7521    WARD    SALESMAN        7698    1981-2-22       1250.00 500.00  30
7566    JONES   MANAGER 7839    1981-4-2        2975.00         20
7654    MARTIN  SALESMAN        7698    1981-9-28       1250.00 1400.00 30
7698    BLAKE   MANAGER 7839    1981-5-1        2850.00         30
7782    CLARK   MANAGER 7839    1981-6-9        2450.00         10
7788    SCOTT   ANALYST 7566    1987-4-19       3000.00         20
7839    KING    PRESIDENT               1981-11-17      5000.00         10
7844    TURNER  SALESMAN        7698    1981-9-8        1500.00 0.00    30
7876    ADAMS   CLERK   7788    1987-5-23       1100.00         20
7900    JAMES   CLERK   7698    1981-12-3       950.00          30
7902    FORD    ANALYST 7566    1981-12-3       3000.00         20
7934    MILLER  CLERK   7782    1982-1-23       1300.00         10

Ведомственные данные

10      ACCOUNTING      1700
20      RESEARCH        1800
30      SALES   1900
40      OPERATIONS      1700

Загрузить данные в таблицу куста

load data local inpath '/root/empdata.txt' into table emp;
load data local inpath '/root/deptdata.txt' into table dept;

Данные запроса

1.2.2 Создать проект

1.2.3 Загрузка данных

1.2.4 Создать модель

Я заранее создал проект здесь, мне нужно сначала создать проект, а затем создать

Здесь kylin поддерживает только создание моделей звезд, а другие модели, такие как созвездия и снежинки, пока не поддерживаются.

1.2.5 Создать куб

Этот шаг предназначен для постепенного построения кубов.

Auto Merge Thresholds: автоматическое объединение небольших сегментов в средние или даже более крупные сегменты. Если вы не хотите автоматически объединяться, удалите 2 параметра по умолчанию.

Volatile Range: по умолчанию 0, будут автоматически объединены все возможные сегменты куба, или использование «Автоматического объединения» не будет объединять сегменты куба за последние [Volatile Range] дни.

Retention Threshold: Будут сохранены только сегменты последних нескольких дней куба, а старые сегменты будут автоматически удалены из головы; 0 означает, что эта функция не включена.

Partition Start Date: Дата начала куба.

Я не делаю никаких настроек здесь

Aggregation Groups: Измерения в кубе можно разделить на несколько групп агрегации. По умолчанию kylin помещает все измерения в одну группу агрегации.Когда имеется много измерений, количество сгенерированных комбинаций может быть огромным, что приведет к взрыву куба; если вы хорошо понимаете свой режим запроса, вы можете создать множественную агрегацию группы . В каждой группе агрегации используйте «Обязательные измерения», «Иерархические измерения» и «Совместные измерения» для дальнейшего уточнения комбинаций измерений.

Mandatory Dimensions: Обязательное измерение, существующие измерения a, b, c, 3, всего 7 комбинаций, когда a является обязательным измерением, тогда будет построен кубид только измерения или комбинации, содержащей измерение, а именно a, ab, ac, абв четыре вида

Hierarchy Dimensions: Иерархическое измерение, такое как "страна" -> "провинция" -> "город" является иерархией; кубоиды, которые не соответствуют этой иерархии, могут быть пропущены при вычислении, например ["провинция"], ["город"]. Определение иерархии При определении размеров поместите измерение родительского уровня слева от дочернего измерения. Есть три измерения a, b, c, и всего комбинаций 7. Когда a->b>c является иерархическим измерением, то есть только три комбинации a, ab и abc построят кубид.

Joint Dimensions: Совместное измерение, некоторые измерения часто появляются вместе, или их мощность очень близка (имеется отношение отображения 1:1), есть измерения a, b, c, 3, всего 7 комбинаций, когда a и b являются совместными размеры, только ab, abc будет построен кубид

1.2.5.1 Оптимизация ключа строки

Размер, который часто используется для размещения фильтра спереди.

Основная цель состоит в том, чтобы при хэшировании данных на hbase попытаться убедиться, что данные того же измерения находятся в регионе. Вместо фрагментарного распределения в нескольких регионах.

Измерение с большей кардинальностью помещается перед измерением с малой кардинальностью.

Кардинальность здесь на самом деле является cubeid, который также является частью rowkey на hbase.

Я просто делаю тест здесь, так что не настраивайте следующий шаг.

у меня тут ничего не настроено

Затем завершается следующий шаг.

Затем нажмите «Сборка», дождитесь окончания сборки, вы можете нажать на верхний монитор, чтобы проверить завершение.

Когда я запускал эту сборку, возникло исключение, подсказывающее, что node2:10020 отказался от соединения, и оно действительно было закрыто по телнету, а затем, проверив, я обнаружил, что сервер истории нужно открыть, а 10020 - это порт сервер истории ссылок mr. Оригинальная ссылка:Блог woohoo.cn на.com/Lucas-find/…

执行以下命令
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver

Проблема решена, а затем появляется новая проблема, сообщающая мне, что BulkLoad столкнулся с неустранимой проблемой, ожидаемой /node1:8020, Поскольку имя моего кластера Hadoop отличается от имени hbase.rootdir в hbase-site.xml, то Hadoop — это mycluster, а hbase — node1:8020, поэтому его невозможно распознать. Таким образом, решение состоит в том, чтобы изменить имя сопоставления в hbase-site.xml на mycluster, затем перезапустить кластер hbase, перезапустить kylin, а затем нажать, чтобы выбрать возобновление в действиях для перезапуска.

Наконец успешная операция закончилась.

1.2.6 Данные запроса

Запросить данные в kylin

запросить данные в улье

Вы можете увидеть разницу в скорости запросов между ульем и kylin.

Также есть принципы создания куба, такие как принцип генерации rowkey на hbase, алгоритм послойного построения и алгоритм быстрого построения, и я добавлю его позже, когда будет возможность.

2.1 JDBC-операция kylin

2.1.1 maven-зависимости

        <dependency>
            <groupId>org.apache.kylin</groupId>
            <artifactId>kylin-jdbc</artifactId>
            <version>2.5.1</version>
        </dependency>

2.1.2 Java-код

package kylin;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class KylinJdbcDemo {
    public static void main(String[] args) throws Exception{
        //驱动
        String driverClassName = "org.apache.kylin.jdbc.Driver";

        //URl
        String url = "jdbc:kylin://node2:7070/test_project";

        //添加驱动信息
        Class.forName(driverClassName);

        //获取连接
        Connection connection = DriverManager.getConnection(url, "ADMIN", "KYLIN");

        //预编译
        PreparedStatement ps = connection.prepareStatement("select t.dname,sum(e.sal) from emp e join dept t on e.deptno = t.deptno group by t.dname");

        //查询
        ResultSet resultSet = ps.executeQuery();

        //遍历打印
        while (resultSet.next()) {
            System.out.print(resultSet.getString(1)+"\t");
            System.out.println(resultSet.getDouble(2));
        }

    }

}

результат операции

RESEARCH	10875.0
SALES	9400.0
ACCOUNTING	8750.0

3.1 Использование Цеплина

3.1.1 Краткое описание Цепплина: На самом деле эта штука устанавливается как jupyter в Anaconda.При открытии это инструмент, который может работать на стороне веба, и может отображать какие-то графики на основе данных о нем.

3.1.2 установка и запуск zepplin

安装包下载
链接:https://pan.baidu.com/s/1cGLYc6ZCYOIFE0WAwBNeUQ  密码:kzz9

Я загрузил на сервер здесь

tar -zxvf zeppelin-0.8.0-bin-all.tgz -C /opt/bigdata/

启动 默认端口是8080 如果和本地其他应用冲突了 可以通过修改zeppelin-site.xml.template文件去更改端口。
./bin/zeppelin-daemon.sh start

веб-доступ Иногда памяти машины не хватает, вам может потребоваться некоторое время, поэтому я скоро запущу.

3.1.2 Использование цеплина

Как видите, zeppelin поддерживает множество компонентов. Ищем kylin и редактируем свойства в правом верхнем углу.

Создать блокнот

Нажмите кнопку слева, чтобы отобразить различные графики

Так что все демонстрации здесь пройдены, а некоторые места могут быть не такими подробными, и позже будут возможности их обогатить.

end..