предисловие
Предыдущийразвертывание установки 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..