做了半年kylin,基本停留在操作Web UI的层面,当然,期间也遇到一些坑,但是大多是社区好心人帮忙解决的,尤其跟环境相关的,一出问题,很长时间都解决不了,现在项目的kylin服务已经完成并且对外提供服务了,有了一些基础,想更深入一点学习使用kylin,学习需要理论结合实践,生产环境肯定不能随便动了,那就自己动手搭一个环境吧。
三台Centos7的虚拟机,内存8G,8核CUP,200G硬盘。
10.0.86.93 master
10.0.86.94 slave1
10.0.86.95 slave2
将以上内容增加到三台机器的/etc/hosts文件中。
以下为版本信息:
我对环境基本是一无所知的,之前的环境都是同事搭的,我只大概知道,kylin依赖hive和hbase(源数据表存储在hive中,cube信息及数据存储在HBASE中),于是大概知道需要安装hadoop、hive以及HBASE,在安装过程中,发现hive依赖mysql,HBASE依赖zookeeper,这才理清所有的安装步骤。
依次安装,hadoop、mysql、hive、zookeeper、hbase、kylin。
一、Hadoop安装
本次安装参考https://www.linuxidc.com/Linux/2015-11/124800.htm
1、基础环境
在安装Hadoop之前,需要配置ssh免密码登录以及安装jdk。
1.1 ssh免密登录
hadoop需要通过ssh登录到各个节点进行操作,因此需要配置免密登录,我用的是root账户,在root账户下生成各台机器的公钥,然后再将公钥合并到authorized_keys,分发到各台机器。
(1)CentOS默认没有启动ssh无密登录,去掉/etc/ssh/sshd_config其中2行的注释,每台服务器都要设置,
#RSAAuthentication yes
#PubkeyAuthentication yes
(2)输入命令,ssh-****** -t rsa,生成key,都不输入密码,一直回车,/root就会生成.ssh文件夹,每台服务器都要设置,
(3)合并公钥到authorized_keys文件,在Master服务器,进入/root/.ssh目录,通过SSH命令合并,
cat id_rsa.pub>> authorized_keys
ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
ssh [email protected] cat ~/.ssh/id_rsa.pub>> authorized_keys
(4)把Master服务器的authorized_keys、known_hosts复制到Slave服务器的/root/.ssh目录
(5)完成,ssh [email protected]、ssh [email protected]就不需要输入密码了.
1.2 jdk安装
jdk安装也遇到了点问题,一开始安装好之后,用java -version看没有问题,以为安装成功了,但实际上出来的是openjdk的版本信息,如下图所示:
当时没有注意,导致hadoop安装好之后,提示找不到java的路径。这是因为对于centos系统,如果不是最小化安装,会默认安装openjdk,因此在安装jdk之前需要先将openjdk删除,命令为rpm -e --nodeps `rpm -qa | grep java`,centos安装jdk具体请参考https://www.cnblogs.com/panzhaohui/p/6306675.html。
2、安装Hadoop2.7.6,只在Master服务器解压,再复制到Slave服务器
(1)下载“hadoop-2.7.6.tar.gz”,放到/home/hadoop目录下
(2)解压,输入命令,tar -xzvf hadoop-2.7.6.tar.gz
(3)在/home/hadoop目录下创建数据存放的文件夹,tmp、hdfs、hdfs/data、hdfs/name
(4)配置hadoop环境变量:
vim /etc/profile,加入如下内容:
然后,source /etc/profile使配置生效。
输入hadoop,提示如下说明配置成功了。
3、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
4、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
5、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的mapred-site.xml,复制template,生成xml,命令:cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
6、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
</configuration>
7、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME,不设置的话,启动不了(这一点我没有验证,我觉得应该可以不配,因为设置了JAVA_HOME),
export JAVA_HOME=/home/java/jdk1.8.0_171
8、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的slaves,删除默认的localhost,增加2个从节点,10.0.86.94
10.0.86.95
9、将配置好的Hadoop复制到各个节点对应位置上,通过scp传送,
scp -r /home/hadoop [email protected]:/home/
scp -r /home/hadoop [email protected]:/home/
10、在Master服务器启动hadoop,从节点会自动启动,进入/home/hadoop/hadoop-2.7.6目录
(1)初始化,输入命令,bin/hdfs namenode -format,成功后部分消息显示如下:
(3)停止的话,输入命令,sbin/stop-all.sh
(4)输入命令,jps,可以看到相关信息
11、Web访问,要先开放端口或者直接关闭防火墙
(1)输入命令,systemctl stop firewalld.service
(2)浏览器打开http://10.0.86.93:8088/
(3)浏览器打开http://10.0.86.93:50070/
二、MySQL安装
安装mysql请参考https://blog.csdn.net/jssg_tzw/article/details/68944693,步骤详细。
这里主要记录遇到的问题
1、安装完成之后,找不到安装目录,其实参考链接中写了安装目录,我当时以为那是自定义的目录,其实不是,rpm安装mysql后,默认的目录为/var/lib/mysql,有关linux rpm 安装后 mysql 默认安装目录等信息请参考https://www.cnblogs.com/nucdy/p/7727143.html。
2、在安装完成之后,在root路径下找不到.mysql_secret文件。查了很久,发现初始的密码不一定是在 .mysql_secret文件中,至少在本次实践中,不存在
.mysql_secret文件。而是在/var/log/mysqld.log中。mysql安装完成之后,在/var/log/mysqld.log文件中给root用户生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:
输入密码登入后修密码
三、Hive安装
这个链接https://blog.csdn.net/jssg_tzw/article/details/72898635写的非常详细,我基本就是照着操作的。
只有2.3.2中,有点区别
2.3.2修改$HIVE_HOME/conf/hive-site.xml中的临时目录
配置文件hive-site.xml:
- 将文件中的所有 ${system:java.io.tmpdir}替换成/usr/local/hive/tmp
- 将文件中所有的${system:user.name}替换为root(这个我没有替换,而是把这一项都删了,集群经测试没有问题)
期间遇到几个问题:
1、schematool -initSchema -dbType mysql初始化报错:
Duplicate entry ‘1’ for key ‘PRIMARY’
原因:因为我之前手动在mysql数据库当中建立了hive数据库,主键是在同一张表中必须是唯一的,如果在进行数据插入的时候指定的主键与表中已有 的数据重复的话则会导致违反主键约束的异常。
四、Zookeeper安装
https://blog.csdn.net/pucao_cug/article/details/72228973
照着网页一步一步操作就行。
遇到问题:
五、Hbase安装
https://blog.csdn.net/pucao_cug/article/details/72229223
hbase安装很顺利,照着网页操作没有遇到问题。
六、Kylin安装
参照官网即可。