经过将近一周深夜调试到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可以配置好的这一系列,如果遇到问题也可以下方留言我们共同探讨)
注意:环境搭配是必须的,你前期不要试图再重新尝试其他版本,这样会给你带来困扰的,而且会出现一系列奇怪的问题。
192.168.6.220 hadoop 这一行就是我们添加192.168.6.220 就是本地IP,这里不要写成127.0.0.1,否则你会遇到大坑。 改完要重启服务器。
设定:hadoop。
命令:
[root@hadoop workspace]# hostnamectl set-hostname hadoop
命令: 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
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
命令: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
目录位置: 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>
目录: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
目录: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)。
目录zookeeper\conf
zoo.cfg dataDir=/tmp/zookeeper
提示找不到类需要简单修改一下 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}
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/
hive目录下
bin/schematool -initSchema -dbType mysql
/workspace/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
/workspace/hbase/bin/start-hbase.sh
A.导入实例数据:/workspace/kylin/bin/sample.sh
B.启动Kylin :/workspace/kylin/bin/kylin.sh start
OK,到此为止如果都没问题的话,我们就可以访问: http://192.168.6.220:7070/kylin/ 帐号:ADMIN 密码:KYLIN
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
好了,到此为止分享完毕。你可以自己自由折腾了。哈哈
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。