详解Apache Kylin安装和踩坑

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 1. 背景 最近在学习kylin,在安装的时候遇到一些坑,特意记录起来,也希望同样在学习kylin的人,少踩一些坑(要是连安装都过不去,还怎么学!!!)。 2. 环境 我选的kylin版本是1.5.4,因为买了一本叫《Apache kylin权威指南》,书中以1.5.x为蓝本,为了避免少踩坑,保持和书中版本一致。

1. 背景

最近在学习kylin,在安装的时候遇到一些坑,特意记录起来,也希望同样在学习kylin的人,少踩一些坑(要是连安装都过不去,还怎么学!!!)。

2. 环境

我选的kylin版本是1.5.4,因为买了一本叫《Apache kylin权威指南》,书中以1.5.x为蓝本,为了避免少踩坑,保持和书中版本一致。

关于kylin安装环境,参考Hadoop Environment,下面是我自己的环境,只是为了学习,所有的安装都是伪分布式的,也没有关注高可用

  1. Ubuntu 14.04.5 LTS
  2. hadoop-2.7.1.tar.gz
  3. jdk-8u172-linux-x64.tar.gz
  4. hbase-1.2.5-bin.tar.gz
  5. apache-kylin-1.5.4-HBase1.x-bin.tar.gz
  6. apache-hive-1.2.1-bin.tar.gz

特别注意点

  1. kylin的版本要和hbase的版本对应,具体参考官网说明(Hadoop Environment),其实kylin打包的名字也能看出来
  2. 注意hadoop和hbase的版本(hbase hadoop version
  3. jdk和hbase的版本(hbase jdk version
  4. hive和jdk版本(hive jdk version
  5. 最好在linux环境下安装,在mac下,启动kylin的时候,脚本会报错,当然可以改脚本 (mac无法启动kylin)。此外,在Ubuntu下安装也不省心,启动kylin也会报错,改脚本吧。那么,最好使用centos,我尝试了,不会报错。

3. 安装

  1. 下载安装包,这个链接可以下载到apache所有的安装包,但速度不快,有些找不到的安装包,可以在这里下载(Apache Software Foundation Distribution Directory),解压
  2. 设置环境变量
export JAVA_HOME=/root/jdk1.8.0_172
export HADOOP_HOME=/root/hadoop-2.7.1
export HIVE_HOME=/root/hive-1.2.1
export HBASE_HOME=/root/hbase-1.2.5
export KYLIN_HOME=/root/kylin-1.5.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin:$KYLIN_HOME/bin
  1. 安装hadoop,主要编辑的文件有:core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml、yarn-site.xml(都在$HADOOP_HOME/etc/hadoop目录内)(hadoop Pseudo-Distributed Operation

    • ssh to localhost without a passphrase, execute the following commands

      $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
        $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
        $ chmod 0600 ~/.ssh/authorized_keys
    • hadoop-env.sh,加一行JAVA_HOME

      export JAVA_HOME=/root/jdk1.8.0_172
    • core.xml

      <configuration>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9000</value>
          </property>
          <property>
              <name>hadoop.tmp.dir</name>
              <value>/root/tmp</value>
          </property>
      </configuration>
    • hdfs-site.xml

      <configuration>
          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
      </configuration>
    • mapred-site.xml:jobhistory记得也要配置,我之前没有配置,导致使用kylin的sampldata构建cube失败

      <configuration>
          <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
          </property>
          <property>
              <name>mapreduce.jobhistory.address</name>
              <value>localhost:10020</value>
          </property>
          <property>
              <name>mapreduce.jobhistory.webapp.address</name>
              <value>localhost:19888</value>
          </property>
      </configuration>
    • yarn-site.xml

      <configuration>
      
      <!-- Site specific YARN configuration properties -->
          <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
          </property>
      </configuration>

    然后,format namenode bin/hdfs namenode -format,启动hdfssbin/start-dfs.sh,启动yarnsbin/start-yarn.sh,
    http://ip:50070/可以查namenode的情况,http://ip:8088/可以查看resourcemanager情况

  2. 安装hive:主要编辑的文件为hive-site.xml,此文件通过copy hive-default.xml.template而来(hive Installation and Configuration

    • 在hdfs上面创建目录

      $ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
      $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
      $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
      $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse
    • 修改hive-site.xml,主要改的地方为

      <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>hive</value>
      </property>
      <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>hive</value>
      </property>

      上面就是使用mysql存储hive的元数据,如果出现SSL问题,就把useSSL置为false,特别注意,不要使用默认的derby,否则在运行kylin的sampledata时,无法在hive中创建表,此外,还需要把hive-site.xml中的${system:java.io.tmpdir}和${system:user.name}分别替换成/tmp和${user.name},当然还需要把mysql-connector-java.x.jar二方包加入hive的lib目录中,特别注意,使用5.x版本,不要使用6.x版本。最后,运行bin/hive

  3. 安装hbase:主要修改的文件为hbase-env.sh、hbase-site.xml(quickstart

    • 修改hbase-env.sh,添加export JAVA_HOME=/root/jdk1.8.0_172
    • 修改hbase-site.xml

      <configuration>
          <property>
              <name>hbase.rootdir</name>
              <value>hdfs://localhost:9000/hbase</value>
          </property>
          <property>
              <name>hbase.cluster.distributed</name>
              <value>true</value>
          </property>
          <property>
              <name>hbase.zookeeper.property.dataDir</name>
              <value>/root/tmp/hbase/zookeeper</value>
        </property>
      </configuration>

      特别注意,对于伪分布式安装,hbase.cluster.distributed要设置为true。此外,这里使用hbase内置的zookeeper。最后,执行bin/satrt-hbase.sh,启动hbase

  4. 安装kylin

    • 修改check-env.sh:可以先执行bin/check-env.sh,一般来说配置了上面所述的环境变量,是可以通过check,但是这个脚本在mac和ubuntu下执行还是有问题,mac下的问题我没有解决,Ubuntu下面问题解了。原因是get-properties.sh内容在Ubuntu下执行有问题。不过在centos下没有这个问题(安装指南

      ## 原始文件
      if [ $# != 1 ]
      then
          echo 'invalid input'
          exit -1
      fi
      
      IFS=$'\n'
      result=
      for i in `cat ${KYLIN_HOME}/conf/kylin.properties | grep -w "^$1" | grep -v '^#' | awk -F= '{ n = index($0,"="); print substr($0,n+1)}' | cut -c 1-`
      do
         :
         result=$i
      done
      echo $result
      ## 修改后的文件
      if [ $# != 1 ]
      then
          echo 'invalid input'
          exit -1
      fi
      
      #IFS=$'\n'
      result=`cat ${KYLIN_HOME}/conf/kylin.properties | grep -w "^$1" | grep -v '^#' | awk -F= '{ n = index($0,"="); print substr($0,n+1)}' | cut -c 1-`
      #for i in `cat ${KYLIN_HOME}/conf/kylin.properties | grep -w "^$1" | grep -v '^#' | awk -F= '{ n = index($0,"="); print substr($0,n+1)}' | cut -c 1-`
      #do
      #   :
      #   result=$i
      #done
      echo $result
    • 我目前使用的是apache-kylin-1.5.4-HBase1.x-bin.tar.gz版本,此版本在conf目录下,把压缩相关的配置注释了,包括kylin_hive_conf.xml、kylin_job_conf_inmem.xml、 kylin_job_conf.xml、kylin.properties,我之前用1.5.3并没有注释掉,导致在运行构建cube是出现snappy不存在问题。

      # Compression codec for htable, valid value [none, snappy, lzo, gzip, lz4]
      # 1.5.3默认未snappy,但是我使用的hadoop的并没有snappy压缩功能,所以要么把压缩相关的配置注释掉,或者重新打包hadoop
      kylin.hbase.default.compression.codec=none

      之后,运行bin/kylin.sh satrt,启动成功后,访问http://ip:7070/kylin,用户名是ADMIN,密码是KYLIN。然后可以运行bin/sample.sh,体验下kylin,运行完sample.sh后重启kylin,就可以build cube了。

3. 其他

  1. mac无法启动kylin 最好使用linux
  2. 运行sample.sh后hive无法找到表 不要使用derby,使用mysql
  3. build cube出现Unexpected exception: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: native snappy library not available: this version of libhadoop was built without snappy support.

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
66 5
|
1月前
|
存储 SQL 分布式计算
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
58 3
|
1月前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
29 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
1月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
29 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
1月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
31 9
|
1月前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
43 5
|
1月前
|
SQL 分布式计算 大数据
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
42 2
|
1月前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
43 2
|
1月前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
35 1
|
1月前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
53 1

推荐镜像

更多
下一篇
无影云桌面