开源的分布式分析引擎 Kylin 2.0.0 的环境部署

前序:

经过将近一周深夜调试到3、4点终于把环境配置好了(无数次的重新安装)囧。配置过程中也明白了很多关联的知识点,本文记录我成功搭建的过程。

主角介绍:

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

 介绍:
 - 可扩展超快OLAP引擎: 
 Kylin是为减少在Hadoop上百亿规模数据查询延迟而设计
 - Hadoop ANSI SQL 接口: 
 Kylin为Hadoop提供标准SQL支持大部分查询功能
 - 交互式查询能力: 
 通过Kylin,用户可以与Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能
 - 多维立方体(MOLAP Cube):
 用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体
 - 与BI工具无缝整合:
 Kylin提供与BI工具,如Tableau,的整合能力,即将提供对其他工具的整合
 - 其他特性: 
 - Job管理与监控 
 - 压缩与编码 
 - 增量更新 
 - 利用HBase Coprocessor
 - 基于HyperLogLog的Dinstinc Count近似算法 
 - 友好的web界面以管理,监控和使用立方体 
 - 项目及立方体级别的访问控制安全
 - 支持LDAP

环境:

 系统:
 Centos 7.2 64位  

 软件:
 apache-hive-1.2.1-bin.tar.gz
 apache-kylin-2.0.0-bin-hbase1x.tar.gz
 hadoop-2.7.2.tar.gz
 hbase-1.1.9-bin.tar.gz
 jdk-8u144-linux-x64.tar.gz
 zookeeper-3.4.8.tar.gz

 mysql:mysql-community-release-el7-5.noarch.rpm

(当然也有虚拟机HDP可以配置好的这一系列,如果遇到问题也可以下方留言我们共同探讨)

注意:环境搭配是必须的,你前期不要试图再重新尝试其他版本,这样会给你带来困扰的,而且会出现一系列奇怪的问题。

安装过程:

三个大步骤就可以完成环境的部署了,酒足饭饱,泡好茶客官准备开始咯:

1.更改服务器名称:

192.168.6.220 hadoop 这一行就是我们添加192.168.6.220 就是本地IP,这里不要写成127.0.0.1,否则你会遇到大坑。 改完要重启服务器。

1.1 更改hostname

设定:hadoop。

命令:
[root@hadoop workspace]# hostnamectl set-hostname hadoop

1.2 更改hadoop对应IP

命令:   vi /etc/hosts
192.168.6.220   hadoop   
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

2.上传这些文件到服务器上。

apache-hive-1.2.1-bin.tar.gz apache-kylin-2.0.0-bin-hbase1x.tar.gz hadoop-2.7.2.tar.gz hbase-1.1.9-bin.tar.gz jdk-8u144-linux-x64.tar.gz zookeeper-3.4.8.tar.gz 为了整洁方便使用, 我统一解压放在根目录workspace ,jdk放在/user/java/目录下。

[root@hadoop workspace]# ls
hadoop  hbase  hive  kylin zookeeper

2.1 配置环境变量:

命令:vi /etc/profile

添加如下环境配置

JAVA_HOME=/usr/java/jdk
JRE_HOME=/usr/java/jdk/jre
HADOOP_HOME=/workspace/hadoop
HIVE_HOME=/workspace/hive
HBASE_HOME=/workspace/hbase
KYLIN_HOME=/workspace/kylin 



HBASE_CLASSPATH=/workspace/hbase

export ZOOKEEPER_HOME=/workspace/zookeeper
export CLASSPATH=$CLASSPATH:$KYLIN_HOME/lib:$HIVE_HOME/lib:$HBASE_CLASSPATH/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin
export JAVA_HOME JRE_HOME PATH

2.2 配置hadoop

目录位置: hadoop\etc\hadoop core-site.xml

<configuration>
 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop:9000</value>
    </property>

<property>
        <name>hadoop.tmp.dir</name>
        <value>/workspace/hadoop/tmp</value>
    </property>
</configuration>

httpfs-site.xml

 <configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
  <property>
        <name>dfs.namenode.name.dir</name>
        <value>/workspace/hadoop/dfs/name</value>
    </property>

 <property>
        <name>dfs.datanode.data.dir</name>
        <value>/workspace/hadoop/dfs/data</value>
    </property>

</configuration>

hadoop-env.sh

这里主要是指定jdk位置:
export JAVA_HOME=/usr/java/jdk

yarn-site.xml yarn.resourcemanager.hostname 主要是这个节点记住改名成hadoop

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop</value>
    </property>
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
     <property>
    <name>yarn.log-aggregation-enable</name>          
    <value>true</value>
  </property>

  <property>
    <name>yarn.log-aggregation.retain-seconds</name>          
    <value>864000</value>
  </property>

  <property>
    <name>yarn.log-aggregation.retain-check-interval-seconds</name>          
    <value>86400</value>
  </property>  

  <property>
    <name>yarn.nodemanager.remote-app-log-dir</name>          
    <value>/YarnApp/Logs</value>
  </property>
</configuration>

slaves 由于是单机部署,那么这里设置成hadoop.

mapred-env.sh 和 yarn-env.sh export JAVA_HOME=/usr/java/jdk

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
<property>
    <name>mapreduce.jobhistory.address</name>

       <!-- 配置实际的Master主机名和端口-->
    <value>hadoop:10020</value>
</property>


<property>
    <name>mapreduce.jobhistory.webapp.address</name>

       <!-- 配置实际的Master主机名和端口-->
    <value>hadoop:19888</value>
</property>
</configuration>

2.2 配置 hbase

目录:hbase\conf hbase-site.xml

<configuration>
<property>
        <name>hbase.rootdir</name>  --hbase持久保存的目录
        <value>hdfs://hadoop:9000/hbase</value>   
    </property>
    <property>
        <name>hbase.cluster.distributed</name>  --是否是分布式
        <value>true</value>
    </property>
     <property>     
              <name>hbase.zookeeper.property.clientPort</name>    --指定要连接zk的端口
              <value>2181</value>    
    </property>    
    <property>    
              <name>hbase.zookeeper.quorum</name>    --指定要连接zk的节点
              <value>hadoop</value>    
    </property>  
    <property>        
              <name>hbase.zookeeper.property.dataDir</name>   
               <value>/workspace/zookeeper/conf</value>    
    </property>
</configuration>

hbase-env.sh

export JAVA_HOME=/usr/java/jdk/
export HBASE_CLASSPATH=/workspace/hadoop/etc/hadoop
export HBASE_LOG_DIR=/workspace/hbase/logs
export HBASE_MANAGES_ZK=true

regionservers 里面内容改成hadoop

2.3 配置hive

目录:hive\conf hive-site.xml 此文件内容较多,我把需要更改的写出来

修改目录名:

 <property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, with ${hive.scratch.dir.permission}.</description>
  </property>
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/workspace/hive/iotmp/${system:user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/workspace/hive/iotmp/${hive.session.id}_resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

修改成mysql 连接,以及帐号和密码(我的mysql环境,root,123456)

    <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</value>
    <description>
      JDBC connect string for a JDBC metastore.
      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
  </property>
     <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>Username to use against metastore database</description>
  </property>
    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>password to use against metastore database</description>
  </property>

hive-env.sh

# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/workspace/hadoop

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/workspace/hive/conf

# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/workspace/hive/lib

在hive目录下创建iotmp,给777权限。

顺便说下这里因为要连接mysql所以需要把mysql包复制到lib目录下(mysql-connector-java-5.1.37.jar)。

2.4配置zookeeper

目录zookeeper\conf

zoo.cfg dataDir=/tmp/zookeeper

2.5 配置Kylin

提示找不到类需要简单修改一下 kylin.sh

增加指定目录::/home/apache-hive-2.3.0-bin/lib/*:

export HBASE_CLASSPATH_PREFIX=${KYLIN_HOME}/conf:${KYLIN_HOME}/lib/*:${KYLIN_HOME}/ext/*:/home/apache-hive-2.3.0-bin/lib/*:${HBASE_CLASSPATH_PREFIX}
export HBASE_CLASSPATH=${HBASE_CLASSPATH}:${hive_dependency}:${kafka_dependency}:${spark_dependency}

3 初始化各项数据:

3.1 初始化HDFS,并启动hadoop

hdfs namenode -format 执行完毕就会有success字样说明成功了。(注意这个操作只执行一次)

启动hadoop: workspace/hadoop/sbin/start-all.sh 创建如下目录:

执行命令
hadoop fs -mkdir -p /user/hive/warehouse  
hadoop fs -mkdir -p /tmp/hive/  
hadoop fs -chmod 777 /user/hive/warehouse   
hadoop fs -chmod 777 /tmp/hive/

3.2 初始化hive库。

hive目录下

bin/schematool -initSchema -dbType mysql

3.3 启动historyserver

/workspace/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver

3.4 启动hbase(和zookeeper)

/workspace/hbase/bin/start-hbase.sh

3.5 初始化Kylin样例数据且启动主角 Kylin

A.导入实例数据:/workspace/kylin/bin/sample.sh
B.启动Kylin :/workspace/kylin/bin/kylin.sh start

OK,到此为止如果都没问题的话,我们就可以访问: http://192.168.6.220:7070/kylin/ 帐号:ADMIN 密码:KYLIN

4.小体验:

1.用已经成功导入的样例Cube,进行build。

2.选择一个时间范围2012-01-01 ~2012-04-01

3.观察进度

4.选择learn_kylin项目进行查询

select part_dt, sum(price) as total_selled,count(distinct seller_id) as sellers from kylin_sales group by part_dt

表格形式:

其他形式: Line Chart

Bar Chart

Pie Chart

好了,到此为止分享完毕。你可以自己自由折腾了。哈哈

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

1 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

如何重置Hue用户密码

如果你忘记了Hue用户的密码,同时也不知道MySQL管理员的用户和密码,但仍需要重置密码,那么本文档可以帮助你重置Hue任何用户密码。

6655
来自专栏FreeBuf

如何用树莓派搭建Tor节点,实现科学上网?

* 原创作者:Roy_Chen ? 我们的目标是:用树莓派实现-硬件Tor,通电自动连接Tor节点,所有流量全部强制通过Tor节点引出,到达目标地址。断线无限重...

4729
来自专栏mantou大数据

【大数据安全】Apache Kylin 安全配置(Kerberos)

本文首先会简单介绍Kylin的安装配置,然后介绍启用Kerberos的CDH集群中如何部署及使用Kylin。

873
来自专栏生信技能树

给学徒的ATAC-seq数据实战

查看文章发现数据上传到了GEO,是:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE66581

1223
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)

前言: 回顾上一节,我们利用webapi简单的登录并进行了同域访问与跨域访问来获得Token,您可以跳转到上一节下载代码来一起动手。 继续上一篇的文章,我们...

3038
来自专栏walterlv - 吕毅的博客

使用 Postman 调试 ASP.NET Core 开发的 API

发布于 2018-09-09 12:38 更新于 2018-09...

663
来自专栏数据和云

备份,迁移和克隆Docker镜像

编辑手记:上周我们分享了在MAC上安装Docker并部署Oracle 12.2数据库环境,基于Docker构建测试环境,非常快速和简捷。只通过以下几个步骤即可快...

3614
来自专栏蓝天

Hive 0.12.0安装指南

本文的安装参照了官方的文档:GettingStarted,将Hive 0.12.0安装在Hadoop 2.4.0上。本文将Hive配置成Server模式,并...

543
来自专栏小文博客

使用树莓派搭建最安全tor科学上网?

2583
来自专栏Hadoop实操

如何使用Sentry管理Hive外部表权限

使用如下命令在HDFS的根目录下创建Hive外部表的数据目录/extwarehouse

7288

扫码关注云+社区