• 分布式大数据多维数据分析(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是关键字,需要使用双引号。

  • 相关阅读:
    HDOJ_1010 Tempter of the Bone
    矩阵旋转
    HDU 2544 最短路 http://acm.hdu.edu.cn/showproblem.php?pid=2544
    题目连接:http://acm.zznu.edu.cn/problem.php?id=1329
    队列/优先队列(代码简单模式)
    虚拟方法调用
    Vim中分屏(整理)
    Java Web设计模式之依赖倒换原则
    Java Web 设计模式之开闭原则
    Java 2+2=5
  • 原文地址:https://www.cnblogs.com/qqflying/p/9266730.html
Copyright © 2020-2023  润新知