Kylin 安装和使用

作者: Alex90 | 来源:发表于2019-09-29 10:37 被阅读0次

    版本兼容性

    Kylin Hadoop Hive HBase Spark Kafka Java HDP CDH
    2.3 2.7+ 0.13 - 1.2.1+ 1.1+ 2.1.1+ 1.7+ 2.2 - 2.6 5.7 - 5.11
    2.4 2.7+ 0.13 - 1.2.1+ 1.1+ 2.1.1+ 0.10.0+ 1.7+ 2.2 - 2.6 5.7 - 5.11
    2.5, 2.6 2.7+, 3.1+ 0.13 - 1.2.1+ 1.1+, 2.0 2.3.0+ 1.0.0+ 1.8+ 2.2 - 2.6, 3.0 5.7 - 5.11, 6.0

    Hadoop 环境

    Kylin 依赖于 Hadoop 集群处理大量的数据集。需要准备一个配置好 HDFS,YARN,MapReduce,Hive,HBase,Zookeeper 和其他服务的 Hadoop 集群供 Kylin 运行。

    Kylin 可以在 Hadoop 集群的任意节点上启动。方便起见,可以在 master 节点上运行 Kylin。为了更好的稳定性,建议将 Kylin 部署在一个干净的 Hadoop client 节点上,该节点上 Hive,HBase,HDFS 等命令行已安装好且 client 配置(如 core-site.xmlhive-site.xmlhbase-site.xml 及其他)也已经合理的配置且其可以自动和其它节点同步。

    运行 Kylin 的 Linux 用户要有访问 Hadoop 集群的权限,包括创建/写入 HDFS 文件夹,Hive 表,HBase 表和提交 MapReduce 任务的权限。

    单机安装

    1. 下载安装包
    > wget https://www.apache.org/dyn/closer.cgi/kylin/apache-kylin-2.6.3/apache-kylin-2.6.3-bin-hbase1x.tar.gz
    
    1. 解压安装包,配置环境变量 $KYLIN_HOME 指向 Kylin 文件夹。
    > tar -zxvf apache-kylin-2.6.3-bin-hbase1x.tar.gz
    > mv apache-kylin-2.6.3-bin-hbase1x apache-kylin-2.6.3
    > cd apache-kylin-2.6.3
    > export KYLIN_HOME=`pwd`
    > export PATH=$PATH:$KYLIN_HOME/bin
    

    Kylin 目录结构

    从 v2.6.1 开始, Kylin 不再包含 Spark 二进制包。需要另外下载 Spark,然后设置 SPARK_HOME 系统变量。

    bin             shell 脚本,用于启动/停止 Kylin,备份/恢复 Kylin 元数据,以及一些检查端口、获取 Hive/HBase 依赖的方法等
    conf            Hadoop 任务的 XML 配置文件,这些文件的作用可参考配置页面
    lib             供外面应用使用的 jar 文件,例如 Hadoop 任务 jar, JDBC 驱动, HBase coprocessor 等
    meta_backups    执行 bin/metastore.sh backup 后的默认的备份目录
    sample_cube     用于创建样例 Cube 和表的文件
    spark           自带的 spark
    tomcat          自带的 tomcat,用于启动 Kylin 服务
    tool            用于执行一些命令行的 jar 文件
    

    1. 检查运行环境

    Kylin 运行在 Hadoop 集群上,对各个组件的版本、访问权限及 CLASSPATH 等都有一定的要求,为了避免遇到各种环境问题,可以运行 $KYLIN_HOME/bin/check-env.sh 脚本来进行环境检测,如果环境存在任何的问题,脚本将打印出详细报错信息。如果没有报错信息,代表环境适合 Kylin 运行。

    1. 启动 Kylin
    > $KYLIN_HOME/bin/kylin.sh start
    Retrieving hadoop conf dir...
    KYLIN_HOME is set to .../apache-kylin-2.6.3
    ......
    A new Kylin instance is started by root. To stop it, run 'kylin.sh stop'
    Check the log at $KYLIN_HOME/logs/kylin.log
    Web UI is at http://<hostname>:7070/kylin
    
    1. 使用 Kylin

    Kylin 启动后可以通过浏览器 [http://<hostname>:7070/kylin] 进行访问。

    其中 <hostname> 为具体的机器名、IP 地址或域名,默认端口为 7070。

    初始用户名和密码是 ADMIN/KYLIN

    服务器启动后,可以通过查看 $KYLIN_HOME/logs/kylin.log 获得运行时日志。

    1. 停止 Kylin
    > $KYLIN_HOME/bin/kylin.sh stop
    Retrieving hadoop conf dir...
    KYLIN_HOME is set to .../apache-kylin-2.6.3
    Stopping Kylin: 25964
    Stopping in progress. Will check after 2 secs again...
    Kylin with pid 25964 has been stopped.
    

    可以运行 ps -ef | grep kylin 来查看 Kylin 进程是否已停止。


    HDFS 目录结构

    Kylin 会在 HDFS 上生成文件,根目录是 /kylin/ 然后会使用 Kylin 集群的元数据表名作为第二层目录名,默认为 kylin_metadata (可以在 conf/kylin.properties 中定制)

    通常 /kylin/kylin_metadata 目录下会有这么几种子目录:

    1. cardinality -- Kylin 加载 Hive 表时,会启动一个 MR 任务来计算各个列的基数,输出结果会暂存在此目录。可以安全清除。
    2. coprocessor -- Kylin 用于存放 HBase coprocessor jar 的目录;请勿删除。
    3. kylin-job_id -- Cube 计算过程的数据存储目录,请勿删除。如需要清理,请遵循 storage cleanup guide
    4. resources -- Kylin 默认会将元数据存放在 HBase,但对于太大的文件(如字典或快照),会转存到 HDFS 的该目录下,请勿删除。如需要清理,请遵循 cleanup resources from metadata
    5. jdbc-resources -- 性质同上,只在使用 MySQL 做元数据存储时候出现。

    集群安装

    Kylin 实例是无状态的服务,运行时的状态信息存储在 HBase metastore 中。 出于负载均衡的考虑,可以启用多个共享一个 metastore 的 Kylin 实例,使得各个节点分担查询压力且互为备份,从而提高服务的可用性。

    image

    集群模式设置

    如果需要将多个 Kylin 节点组成集群,请确保他们使用同一个 Hadoop 集群、HBase 集群。然后在每个节点的配置文件 $KYLIN_HOME/conf/kylin.properties 中执行下述操作:

    • 配置相同的 kylin.metadata.url 值,即配置所有的 Kylin 节点使用同一个 HBase metastore。
    • 配置 Kylin 节点列表 kylin.server.cluster-servers,包括所有节点(包括当前节点),当事件变化时,接收变化的节点需要通知其他所有节点(包括当前节点)。
    • 配置 Kylin 节点的运行模式 kylin.server.mode,参数值可选 all, job, query 中的一个,默认值为 all
      • job 模式代表该服务仅用于任务调度,不用于查询;
      • query 模式代表该服务仅用于查询,不用于构建任务的调度;
      • all 模式代表该服务同时用于任务调度和 SQL 查询。
      • 注意:默认情况下只有一个实例用于构建任务的调度(即 kylin.server.mode 设置为 all 或者 job 模式)。

    任务引擎高可用

    从 v2.0 开始, Kylin 支持多个任务引擎一起运行,相比于默认单任务引擎的配置,多引擎可以保证任务构建的高可用。

    使用多任务引擎,可以在多个 Kylin 节点上配置它的角色为 joball。为了避免它们之间产生竞争,需要启用分布式任务锁,请在 kylin.properties 里配置:

    kylin.job.scheduler.default=2
    kylin.job.lock=org.apache.kylin.storage.hbase.util.ZookeeperJobLock
    

    将所有任务和查询节点的地址注册到 kylin.server.cluster-servers

    安装负载均衡器

    为了将查询请求发送给集群而非单个节点,可以部署一个负载均衡器,如 Nginx, F5 或 cloudlb 等,使得客户端和负载均衡器通信代替和特定的 Kylin 实例通信。

    读写分离部署

    为了达到更好的稳定性和最佳的性能,建议进行读写分离部署,将 Kylin 部署在两个集群上:

    • 一个 Hadoop 集群用作 Cube 构建,这个集群可以是一个大的、与其它应用共享的集群;
    • 一个 HBase 集群用作 SQL 查询,通常这个集群是专门为 Kylin 配置的,节点数不用像 Hadoop 集群那么多,HBase 的配置可以针对 Kylin Cube 只读的特性而进行优化。

    这种部署策略是适合生产环境的最佳部署方案,关于如何进行读写分离部署,请参考 Deploy Apache Kylin with Standalone HBase Cluster

    相关文章

      网友评论

        本文标题:Kylin 安装和使用

        本文链接:https://www.haomeiwen.com/subject/culmuctx.html