重磅:如何玩转kylin
1, kylin是什么?为什么需要?
Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
两张图概括麒麟
二, Kylin安装的环境要求
1,hadoop的最低版本要求
最低的环境版本要求:
Hadoop: 2.7+
Hive: 0.13 - 1.2.1+
HBase: 0.98 - 0.99, 1.1+
JDK: 1.7+
浪尖的安装系列文章,满足,我们采用的hadoop版本是2.7.4,hive是1.2.1,hbase-1.2.0,jdk1.8
本文采用的kylin版本是apache-kylin-2.1.0-bin-hbase1x.tar.gz
2,/etc/profile
之所以单独强调这一点,是因为kylin安装的时候严格依赖于hadoop,spark,hive,hbase等环境变量配置。具体配置如下:
export JAVA_HOME=/opt/modules/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/modules/hadoop-2.7.4/
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# Hive
export HIVE_HOME=/opt/modules/hive-1.2.1
export HIVE_CONF_DIR=$HIVE_HOME/conf
export PATH=$PATH:$HIVE_HOME/bin
# HBase
export HBASE_HOME=/opt/modules/hbase-1.2.0
export HBASE_CONF_DIR=$HBASE_HOME/conf
export PATH=$PATH:$HBASE_HOME/bin
# zookeeper
export ZOOKEEPER_HOME=/opt/modules/zookeeper-3.4.5/
export ZOOKEEPER_CONF_DIR=$ZOOKEEPER_HOME/conf
export PATH=$PATH:$ZOOKEEPER_HOME/bin
# spark
export SPARK_HOME=/opt/modules/spark-2.1.2
export SPARK_CONF_DIR=$SPARK_HOME/conf
export PATH=$PATH:$SPARK_HOME/bin
export PATH=$PATH:$SPARK_HOME/sbin
# kylin
export KYLIN_HOME=/opt/modules/kylin
export PATH=$PATH:$KYLIN_HOME/bin
3,解压apache-kylin-2.1.0-bin-hbase1x.tar.gz
检测环境,假如仅仅输出如下,说明配置正确
4,要启动的hadoop服务
hadoop集群启动命令,单个节点启动的我们的服务。
启动yarn
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
启动hadoop
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
启动Zookeeper
zkServer.sh start
启动hbase
hbase-daemon.sh start master
hbase-daemon.sh start regionserver
启动hive的metastore
nohup hive --service metastore >/dev/null 2>&1 &
启动jobhistory
mr-jobhistory-daemon.sh start historyserver
5,hadoop集群的已配置好的软件包
3, 安装kylin并启动
Kylin的启动异常简单:
kylin.sh start
在web浏览器中输入,http://luffy.onepiece.com:7070/kylin ,默认的账号密码是ADMIN/KYLIN,假如呈现如下安装页面,说明安装成功。
四, 测试kylin
测试主要是针对官网提供的demo进行的。
1, 首先生成数据
执行${KYLIN_HOME}/bin/sample.sh。假如配置没有错误,会在结尾得到如下输出
这个时候为了生效我们可以重启kylin,或者在web UI里面重新加载元数据,如下:
2, 构建cube
这时候,首先在左上角的choose project框里选择,learn_kylin工程。在web UI的model栏可以看到。
这时候,在Actions栏里点击build
在弹出框里做如下选择时间大于开始时间,然后点击submit。
在监控栏里面,可以看到cube构建的进度信息
构建结束后
3, 执行sql
在构建好cube之后,在learn_kylin被选中的时候,insight栏里,cube信息
比如,输入如下SQL
select part_dt, sum(price) as total_selled, count(distinct seller_id) as sellers from kylin_sales group by part_dt order by part_dt
返回结果
4, Web呈现
上步骤返回的结果,实际上可以以图表的形式展示,如下:
展示实际根据,维度及该维度统计的指标。
五, 集群部署
1, kylin Server模式
kylin的实例是无状态的,运行状态存储在他的metadata store(hbase里面存储,文件kylin.properties配置kylin.metadata.url)。为了负载均衡考虑,我们可能会启动多个kylin实例,共享一份元数据(表结构的状态,job的状态,cube的状态)。
特别要提到,每个kylin的实例,我们都要配置kylin.server.mode(conf/kylin.properties),这个属性有三个值:
A,job,运行job 引擎
B,query 运行查询引擎
C,all运行两者。
值得注意的是,仅仅有一个Server可以运行job引擎,也即(处于all模式或者job模式),其它实例必须是query模式。
一个典型的kylin结构图如下:
2, 设置多个kylin REST servers
如果使用kylin的集群模式,这种情况下会有多个REST服务实例,一定要确保每个服务实例在配置文件${KYLIN_HOME}/conf/kylin.properties,有以下配置:
A, kylin.rest.servers
Web服务的地址列表,使能一个web 服务实例跟其他进行数据同步。配置格式如下:
kylin.rest.servers=sandbox1:7070,sandbox2:7070
B, kylin.server.mode
确保,仅仅有一个kylin实例的kylin.server.mode属性被设置为all或者job,其它的为query。
3, 负载均衡
使能kylin的高可用服务,需要在这些服务实例前面设置一个负载均衡器,均衡请求。客户端只需要发送请求给负载均衡器,而不是直接和kylin 服务实例交互。如Nginx。
推荐阅读:
2,hive安装部署
- Java并发学习之Volatile及内存模型探究
- Java并发学习之CountDownLatch实现原理及使用姿势
- Linux基础(day58)
- 携程Android App插件化和动态加载实践
- 15.5 使用pure-ftpd搭建ftp服务
- JDK容器学习之Queue: ArrayBlockingQueue
- 手机APP安装包缩减方案
- react-native添加redux支持
- Java并发学习之ReentrantLock的工作原理及使用姿势
- Linux基础(day63)
- IOS WebView控件详解
- Java并发学习之synchronized使用小结
- 18.3/18.4/18.5 用keepalived配置高可用集群
- JDK容器学习之Queue:DelayQueue
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 从零到一,Serverless 平台在滴滴内部落地
- React 使用 Proxy 代理(create-react-app)
- .Net Core + EF + mysql 从数据库生成实体
- Git 常用命令
- Nodejs 一些细节 (持续更新)
- Jenkins 凭据使用
- React源码解读【一】API复习与基础
- choco 安装 和 mkcert 本地https
- js 函数柯里化(Currying)
- GPS数据Python解析及地图可视化
- 文稿:Ant Design从无到有,带你体悟大厂前端开发范式
- 在React中实现和Vue一样舒适的keep-alive
- uniapp获取接口数据,渲染在picker选择器里面
- 我们是这样一步一步实现分布式锁的
- 缓存并发神技,如何通过双 key 来解决缓存并发问题?