zoukankan      html  css  js  c++  java
  • 分布式大数据多维数据分析(olap)引擎kylin[转]

    Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

    kylin

    Kylin OLAP引擎基础框架,包括元数据(Metadata)引擎,查询引擎,Job引擎及存储引擎等,同时包括REST服务器以响应客户端请求;

    支持额外功能和特性的插件;

    与调度系统,ETL,监控等生命周期管理系统的整合;

    在Kylin核心之上扩展的第三方用户界面;

    官网地址:http://kylin.apache.org/

    提供了主要功能及使用的中文文档。

    Kylin的架构特性


    可扩展的超快OLAP引擎,提供标准SQL查询接口

    支持单机或集群部署,为减少在Hadoop上百亿规模数据查询延迟而设计;

    提供标准SQL接口,满足Hadoop之上的大部分分析查询需求。

    交互式查询能力,多维立方体(MOLAP Cube)

    用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体。

    与BI工具及其他应用整合

    提供JDBC及ODBC驱动,与BI工具整合。

    其他特性

    压缩与编码;

    增量更新;

    利用HBase Coprocessor;

    基于HyperLogLog的Dinstinc Count近似算法;

    友好的web界面以管理,监控和使用立方体;

    项目及立方体级别的访问控制安全;

    支持LDAP;

    Kylin的安装部署


    下载地址:http://kylin.apache.org/download/

    apache-kylin-1.5.1-bin.tar.gz

    解压至:/home/liuxiaowen/kylin

    安装部署环境

    我这里使用的相关版本为:

    hbase-0.98.6-cdh5.2.0

    hadoop-2.3.0-cdh5.0.0

    apache-hive-2.0.0-bin

    apache-kylin-1.5.1-bin

    jdk1.7+

    特别注意:Hive应该使用至少0.14以上的版本,我第一次使用0.13.1时候有问题。

    另外,请确保Hadoop、HBase、Hive可用,这里不介绍。

    配置环境变量

    部署使用的用户为liuxiaowen

    vi ~/.bash_profile

    
    
    1. ##HBASE
    2. export HBASE_HOME=/opt/hbase-0.98.6-cdh5.2.0
    3. export HBASE_CONF_DIR=/etc/hbase/conf
    4.  
    5. ##HADOOP
    6. export HADOOP_HOME=/opt/hadoop-2.3.0-cdh5.0.0
    7. export HADOOP_CONF_DIR=/etc/hadoop/conf
    8. export YARN_CONF_DIR=/etc/hadoop/conf
    9.  
    10. ##HIVE
    11. export HIVE_HOME=/home/liuxiaowen/apache-hive-2.0.0-bin
    12. export HCAT_HOME=$HIVE_HOME/hcatalog
    13. export HIVE_CONF=$HIVE_HOME/conf
    14.  
    15. ##KYLIN
    16. export KYLIN_HOME=/home/liuxiaowen/kylin/apache-kylin-1.5.1-bin

    刷新环境变量:

    source ~/.bash_profile


    配置Kylin使用的Hive数据库:

    cd $KYLIN_HOME/conf

    vi kylin.properties

    # Hive database name for putting the intermediate flat tables

    ## 这里配置在Hive中使用的schema,需要写权限

    kylin.job.hive.database.for.intermediatetable=liuxiaowen


    使用HDFS超级用户在HDFS上为Kylin创建工作目录,并赋权给liuxiaowen:

    hadoop fs -mkdir /kylin

    hadoop fs -chown -R liuxiaowen:liuxiaowen /kylin


    ## 可选,配置Kylin使用的内存

    $KYLIN_HOME/bin/setenv.sh

    检查环境配置

    cd $KYLIN_HOME/bin

    ./check-env.sh

    kylin

    启动Kylin

    cd $KYLIN_HOME/bin

    ./kylin.sh start

    kylin

    登陆Kylin WEB界面

    浏览器输入:

    http://172.16.212.17:7070/kylin

    用户名密码:ADMIN/KYLIN

    kylin

    遇到的几个问题


    都是因为使用了Hive0.13.1引起的:

    
    
    1. Caused by: java.lang.IncompatibleClassChangeError:
    2. Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected

    hcatalog版本问题,后改为Hive2.0中的hcatalog

    export HCAT_HOME=/home/liuxiaowen/apache-hive-2.0.0-bin/hcatalog

    
    
    1. java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/Utils

    Kylin的简单示例


    Kylin中多维分析Cube的建立主要包括以下步骤:

    1. Hive中分析好事实表;
    2. Kylin中建立项目(project);
    3. Kylin中建立数据源;
    4. Kylin中建立数据模型;
    5. Kylin中建立Cube;
    6. Build Cube;
    7. 查询Cube;

    Kylin按照上面的过程,最终将Hive中的事实表按照相应的结构,压缩并存储在HBase中。

    官网提供了中文文档,说明了如何在Kylin中建立Cube,非常详细:

    http://kylin.apache.org/cn/docs15/tutorial/create_cube.html

    Hive中的事实表

    kylin

    事实表lxw1234_kylin_fact中的维度有day、region、city、siteid、os;最终查询的指标有两个:PV以及UV(COUNT DISTINCT cookieid)

    Kylin中建立数据模型

    1. 建立项目lxw1234;

    2. 将Hive中的事实表 lxw1234_kylin_fact导入到Kylin数据源:

    kylin3. 建立数据模型lxw1234_dataModel:

    选择维度数据:

    kylin

    选择指标数据:

    kylin

    其他设置:

    kylin

    数据模型中的日期分区字段貌似是必选的,否则会有问题。

    然后保存。

    kylin

    Kylin中建立Cube

    kylin

    设计维度:

    kylin

    设计指标:

    kylin

    其中,UV使用的COUNT_DISTINCT是近似计算,需要选择错误率,错误率越低,占用的存储越大,Build耗时越长。

    其他设置请参考上面给的中文文档链接,很详细。

    设置好之后保存。

    kylin

    Kylin中Build Cube

    在Cube后面的Actions下拉菜单中选择Build:

    kylin

    Submit之后,在Monitor页面中可以看到Build Job的进度和状态:

    kylin

    双击Job Name进入该Job的详细监控页:

    kylin

    Build完成后,在Model页面可以看到这个Cube已经是READY状态:

    kylin

    你可以在HBase中查看该Cube对应的HTable:

    kylin

    Kylin中使用SQL查询

    在Insight页面中使用SQL查询:

    kylin

    注意:由于DAY是关键字,需要使用双引号。

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    第一届云原生应用大赛火热报名中! helm install “一键安装”应用触手可及!
    云原生时代,2个方案轻松加速百万级镜像
    Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
  • 原文地址:https://www.cnblogs.com/qqflying/p/9266730.html
Copyright © 2011-2022 走看看