Kylin

一、技术架构

Apache kylin系统可以分为在线查询和离线构建两部分,技术架构如图所示,在线查询的模块主要处于上半区,而离线构建则处于下半区。
Kylin_第1张图片
从图中可以看出,数据源在左侧,主要是Hadoop Hive,保存着待分析的用户数据。下方构建引擎从数据源抽取数据,并构建Cube。数据以关系表的形式输入,MapReduce是当前主要的构建技术。构建后的Cube保存在右侧的存储引擎中,一般选用HBase作为存储。
完成了离线构建之后,用户可以从上方查询系统发送SQL进行查询分析。kylin提供了各种Rest API、JDBC/ODBC接口。无论从哪个接口进入,SQL最终都会来到Rest服务层,再转交给查询引擎进行处理。查询引擎解析SQL,生成基于关系表的逻辑执行计划,然后将其转译为基于Cube的物理执行计划,最后查询预计算生成的Cube并产生结果。整个过程不会访问原始数据源。

二、安装

下载:apache-kylin-2.3.1-cdh57-bin.tar.gz包

kylin安装的环境配置:
1)ar -zxvf apache-kylin-2.3.1-cdh57-bin.tar.gz -C /opt
2)cd /opt
3)mv apache-kylin-2.3.1-bin / kylin
4)vi /etc/profile
环境变量:
export KYLIN_HOME=/opt/kylin
PATH= P A T H : PATH: PATH:HOME/bin:$KYLIN_HOME/bin
source /etc/profile
Kylin的启动验证:
cd /usr/local/kylin/
./check-env.sh

Kylin_第2张图片

su - hdfs 
hdfs dfs -chmod -R 777 /

在这里插入图片描述

重新检测处理

cd /usr/local/kylin/
./check-env.sh

Kylin_第3张图片

启动kylin
./kylin.sh start 
登录,输入网址 
http://192.168.186.49:7070/kylin
用户名/密码:ADMIN/KYLIN

三、Kylin测试

cd /opt/kylin/bin
./sample.sh

Kylin_第4张图片

重启kylin:
cd /opt/kylin/bin
./kylin.sh stop 
./kylin.sh start 

Kylin_第5张图片

或者 重新刷新kylin的元数据:

Kylin_第6张图片

Kylin_第7张图片

Kylin_第8张图片
Kylin_第9张图片

Kylin_第10张图片

Kylin_第11张图片

四、Kylin实例

数据文件准备
create_table.sql, department.csv, employee.csv
Kylin_第12张图片
在hdfs 上面创建上传目录,上传文件
hdfs dfs -mkdir /kylin-test
hdfs dfs -put department.csv employee.csv /kylin-test

Kylin_第13张图片

在hive上面执行sql脚本加载数据与验证
执行create_table.sql :

create_table 内容如下
---
DROP TABLE IF EXISTS employee;

CREATE TABLE employee(
id int,
name string,
deptId int,
age int,
salary float
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

DROP TABLE IF EXISTS department;

CREATE TABLE department(
id int,
name string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

LOAD DATA INPATH '/kylin-test/employee.csv' OVERWRITE INTO TABLE employee;
LOAD DATA INPATH '/kylin-test/department.csv' OVERWRITE INTO TABLE department;
---

在hive 中执行create_table.sql :
hive -f create_table.sql

Kylin_第14张图片

hive -e "use default;select * from employee"

Kylin_第15张图片

hive -e "use default;select * from department" 

Kylin_第16张图片

kylin操作
Kylin_第17张图片

Kylin_第18张图片

Kylin_第19张图片

Kylin_第20张图片
Kylin_第21张图片
Kylin_第22张图片
Kylin_第23张图片
Kylin_第24张图片
Kylin_第25张图片
Kylin_第26张图片
Kylin_第27张图片

Kylin_第28张图片
Kylin_第29张图片

Kylin_第30张图片

Kylin_第31张图片

Kylin_第32张图片
Kylin_第33张图片
Kylin_第34张图片
Kylin_第35张图片
Kylin_第36张图片
Kylin_第37张图片
Kylin_第38张图片
Kylin_第39张图片
Kylin_第40张图片
Kylin_第41张图片
Kylin_第42张图片
Kylin_第43张图片
Kylin_第44张图片

查询测试:
 select count(*) from department;
 select max(salary) from EMPLOYEE;
统计各部门员工薪资总和:
select d.ID,sum(e.SALARY) as salary from EMPLOYEE as e left join DEPARTMENT as d on e.DEPTID=d.id group by d.ID order by salary desc

Kylin_第45张图片

你可能感兴趣的:(大数据)