Kylin实践(一)--Hadoop环境搭建

做了半年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实践(一)--Hadoop环境搭建_第1张图片

以下为版本信息:

jdk:1.8
hadoop:2.7.6
hive:1.2.2
mysql:5.7.21
zookeeper:3.4.10
hbase:1.2.5
kylin:2.1

我对环境基本是一无所知的,之前的环境都是同事搭的,我只大概知道,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-keygen -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的版本信息,如下图所示:

Kylin实践(一)--Hadoop环境搭建_第2张图片

当时没有注意,导致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,加入如下内容:

Kylin实践(一)--Hadoop环境搭建_第3张图片

然后,source /etc/profile使配置生效。

输入hadoop,提示如下说明配置成功了。

Kylin实践(一)--Hadoop环境搭建_第4张图片



3、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的core-site.xml
 
 
     fs.defaultFS
     hdfs://master:9000
 

 
     hadoop.tmp.dir
     file:/home/hadoop/tmp
 

 
     io.file.buffer.size
     131702
 



4、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的hdfs-site.xml
 
   
        dfs.namenode.name.dir
        file:/home/hadoop/hdfs/name
   

   
        dfs.datanode.data.dir
        file:/home/hadoop/hdfs/data
   

   
        dfs.replication
        2
   

   
        dfs.namenode.secondary.http-address
        master:9001
   

   
        dfs.webhdfs.enabled
        true
   



5、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的mapred-site.xml,
复制template,生成xml,命令: cp mapred-site.xml.template mapred-site.xml

   
        mapreduce.framework.name
        yarn
   

   
        mapreduce.jobhistory.address
        master:10020
   

   
        mapreduce.jobhistory.webapp.address
        master:19888
   



 6、配置/home/hadoop/hadoop-2.7.6/etc/hadoop目录下的yarn-site.xml
 



   
        yarn.nodemanager.aux-services
        mapreduce_shuffle
   

   
        yarn.nodemanager.auxservices.mapreduce.shuffle.class
        org.apache.hadoop.mapred.ShuffleHandler
   

   
        yarn.resourcemanager.address
        master:8032
   

   
        yarn.resourcemanager.scheduler.address
        master:8030
   

   
        yarn.resourcemanager.resource-tracker.address
        master:8031
   

   
        yarn.resourcemanager.admin.address
        master:8033
   

   
        yarn.resourcemanager.webapp.address
        master:8088
   

   
        yarn.nodemanager.resource.memory-mb
        2048
   

   
        yarn.scheduler.maximum-allocation-mb
        2048
   



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 root@slave1:/home/
scp -r /home/hadoop root@slave2:/home/

10、在Master服务器启动hadoop,从节点会自动启动,进入/home/hadoop/hadoop-2.7.6目录

(1)初始化,输入命令,bin/hdfs namenode -format,成功后部分消息显示如下:

Kylin实践(一)--Hadoop环境搭建_第5张图片

(2)全部启动sbin/start-all.sh,也可以分开sbin/start-dfs.sh、sbin/start-yarn.sh
(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进行修改:


shell > grep 'temporary password' /var/ log /mysqld. lo
shell> mysql -uroot -p

输入密码登入后修密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
或者
mysql> set password for 'root' @ 'localhost' =password( 'MyNewPass4!' );


三、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数据库,
主键是在同一张表中必须是唯一的,如果在进行数据插入的时候指定的主键与表中已有 的数据重复的话则会导致违反主键约束的异常。 

解决方案:清空数据库
2、 schematool -initSchema -dbType mysql过程报错:Fri Jun 01 17:25:33 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
根据告警提示有两种解决方法:
其中一种方法是设置 useSSL=false  
这里有个坑就是hive的配置文件是 .XML 格式,而 在xml文件中 &; 才表示 & ,所以正确的做法是在Hive的配置文件中,如 hive-site.xml 进行如下设置
Kylin实践(一)--Hadoop环境搭建_第6张图片
3.开放端口号报错
FirewallD is not running
原因:防火墙关闭了,打开就可以
关闭命令:systemctl stop firewalld.service
打开命令:systemctl start firewalld.service

四、Zookeeper安装

https://blog.csdn.net/pucao_cug/article/details/72228973

照着网页一步一步操作就行。

遇到问题:

[root@Centos7 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
原因是防火墙打开了,关闭防火墙即可。

五、Hbase安装

https://blog.csdn.net/pucao_cug/article/details/72229223

hbase安装很顺利,照着网页操作没有遇到问题。

六、Kylin安装

参照官网即可。


你可能感兴趣的:(Kylin实践(一)--Hadoop环境搭建)