【写在前面】本文是基于前文单机部署的基础上,扩展到kylin的集群部署模式。大数据平台使用的是金山云的大数据平台环境,本质也是CDH。如果想进行kylin的集群部署,需要先完成前文kylin多维数据分析(二)教程中的步骤噢。

start

01

Kylin集群部署

一、修改配置文件

在完成前文的单机部署以后,就可以进行集群模式的在线扩展了。扩展前,需要明确即将安装的几台机器,哪个为主节点,哪几个为从节点。只有一台节点是all模式(可提交job也可以当做查询节点,提交构建cube命令的节点),其余节点必须是query模式(只能进行查询)。下文的集群部署为一台all主节点,两台query节点。

1)修改主节点的kylin.properties(kylin安装用户)

## 进入目录
cd /home/etl/kylin/bin
## 如果之前运行过请先关闭,否则跳过此步骤
./kylin.sh stop
## 进入kylin的配置文件目录
cd /home/etl/kylin/conf
## 打开kylin.properties
vi kylin.properties
## 修改如下三条属性,将IP替换成自己节点的IP
kylin.server.mode=all   
kylin.server.cluster-servers=172.19.131.xxx:7070,172.19.131.xx:7070,172.19.131.xx:7070
kylin.web.timezone=GMT+8
## 保存退出
:wq 

## 进入目录
cd /home/etl/kylin/bin
## 如果之前运行过请先关闭,否则跳过此步骤
./kylin.sh stop
## 进入kylin的配置文件目录
cd /home/etl/kylin/conf
## 打开kylin.properties
vi kylin.properties
## 修改如下三条属性,将IP替换成自己节点的IP
kylin.server.mode=all   
kylin.server.cluster-servers=172.19.131.xxx:7070,172.19.131.xx:7070,172.19.131.xx:7070
kylin.web.timezone=GMT+8
## 保存退出
:wq

2)修改其他两台从节点的kylin.properties前必须执行前文同样的环境检查。

2.1)检查安装kylin的机器是否开启时钟同步(root用户)

## 查看状态
systemctl status ntpd
## 如果状态是active,则跳过后面的步骤,执行检查 2)
## 状态为inactive,执行如下步骤,先启动
systemctl start ntpd 
## 设置开机自启动ntp服务
systemctl enable ntpd
## 再次检查
systemctl status ntpd
## 如果状态是ntpd.service没找到,则需要安装再启动
su root 
sudo yum install ntp 

## 查看状态
systemctl status ntpd
## 如果状态是active,则跳过后面的步骤,执行检查 2)
## 状态为inactive,执行如下步骤,先启动
systemctl start ntpd 
## 设置开机自启动ntp服务
systemctl enable ntpd
## 再次检查
systemctl status ntpd
## 如果状态是ntpd.service没找到,则需要安装再启动
su root 
sudo yum install ntp

2.2)安装net-tools(root用户)

## 安装net-tools,否则后面执行kylin环境检查./check-env.sh会报错
yum install -y net-tools
## 安装net-tools,否则后面执行kylin环境检查./check-env.sh会报错
yum install -y net-tools

2.3)检查hive是否可用(用kylin的安装用户去检查)

## 进入habse,如果需要输入密码,请配置成免密登录
hbase shell
## 进入后使用list命令
list
## 查看desc命令是否可用
desc '[namespacename:]tablename' 

## 进入habse,如果需要输入密码,请配置成免密登录
hbase shell
## 进入后使用list命令
list
## 查看desc命令是否可用
desc '[namespacename:]tablename'

有时候会出现scan或者desc命令不能使用,考虑权限不够,需要修改权限。

2.4)检查hbase是否可用(用kylin的安装用户去检查)

## 进入hive,如果需要输入密码,请配置成免密登录
hive
## 进入后使用show databases命令
show databases 
## 检查hive的default库有没有增删改查权限

## 进入hive,如果需要输入密码,请配置成免密登录
hive
## 进入后使用show databases命令
show databases 
## 检查hive的default库有没有增删改查权限

2.5)检查hive的hive-site.xml是否配置了如下属性,如果没有,请配置

<property>  
<name>hive.security.authorization.sqlstd.confwhitelist.appendname>
<value>mapred.*|hive.*|mapreduce.*|spark.*value>
property>
<property>
<name>hive.security.authorization.sqlstd.confwhitelistname>
<value>mapred.*|hive.*|mapreduce.*|spark.*value>
property>
<property>
<name>hive.server2.builtin.udf.blacklistname>
<value>emptyvalue>
property>

注意:如果使用的是KDE金山云,修改需要在KDE界面上添加,直接去服务器上的配置文件修改的话,重启后会被删除,导致无法生效!

3)完成环境检查后,同理修改其他两台从节点的kylin.properties(kylin安装用户)

## 注意!其他两台从节点的mode为query模式
kylin.server.mode=query  
## 注意!其他两台从节点的mode为query模式
kylin.server.mode=query

4)接着记得设置这两台节点的用户环境变量

## 编辑用户的环境变量,添加如下两个环境变量
vim ~/.bashrc          
export KYLIN_HOME=/home/etl/kylin        

## 编辑用户的环境变量,添加如下两个环境变量
vim ~/.bashrc          
export KYLIN_HOME=/home/etl/kylin

5)还要在server.xml中注释掉一段代码

## 进入配置文件目录
cd /home/etl/kylin/tomcat/conf 
## 进入server.xml编辑       
vi server.xml                

## 进入配置文件目录
cd /home/etl/kylin/tomcat/conf 
## 进入server.xml编辑       
vi server.xml

注释掉的代码如下:

               

6)检查tomcat的lib文件夹下是否有如下jar包,如果没有可以百度下载一下,然后上传到该目录下。

java 集群部署步骤 jar包集群部署_cdh jar包 sqoop2

二、启动并测试

## 进入目录启动
cd /home/etl/kylin/bin   
./kylin.sh start                 

## 进入目录启动
cd /home/etl/kylin/bin   
./kylin.sh start

启动后,进行web页面做简单的测试。

java 集群部署步骤 jar包集群部署_nginx_02

02

Nginx安装


一、安装

安装负载均衡器。为了将查询请求发送给集群而非单个节点,可以部署一个负载均衡器,如Nginx,F5 或cloudlb等,使得客户端和负载均衡器通信代替和特定的Kylin实例通信。关于使用到zxvf pcre-8.35.tar.gz,nginx-1.6.2.tar.gz可以提前下载,也可在线安装。

1) 安装编译工具及库文件(切换到主节点的root用户)

## 先安装一些必要工具
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel               

## 先安装一些必要工具
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2) 接着安装PCRE

## 进入想要安装的目录
cd /usr/local/src/
## 在线下载安装包
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
## 解压
tar zxvf pcre-8.35.tar.gz
## 进入目录
cd pcre-8.35
## 配置和编译
./configure
make && make install
## 查看安装版本               
pcre-config --version

## 进入想要安装的目录
cd /usr/local/src/
## 在线下载安装包
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
## 解压
tar zxvf pcre-8.35.tar.gz
## 进入目录
cd pcre-8.35
## 配置和编译
./configure
make && make install
## 查看安装版本               
pcre-config --version

3) 安装Nginx

## 步骤1:进入目录
cd /usr/local/src/
## 步骤2:下载
wget http://nginx.org/download/nginx-1.6.2.tar.gz
## 步骤3:解压
tar zxvf nginx-1.6.2.tar.gz   
## 步骤4:进入目录
cd nginx-1.6.2
## 步骤5:设置
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35      
## 步骤6:编译
make
## 步骤7:安装
make install
## 步骤8:查看版本
/usr/local/webserver/nginx/sbin/nginx -v 
## 步骤9:创建运行nginx的组
/usr/sbin/groupadd www  
## 步骤10:创建账户
/usr/sbin/useradd -g www www
## 步骤11:配置nginx.conf
cd /usr/local/webserver/nginx/conf/ 
## 步骤12:将原来的conf备份
mv nginx.conf nginx.conf.bak  
## 步骤13:新建nginx.conf  
vi nginx.conf          

## 步骤1:进入目录
cd /usr/local/src/
## 步骤2:下载
wget http://nginx.org/download/nginx-1.6.2.tar.gz
## 步骤3:解压
tar zxvf nginx-1.6.2.tar.gz   
## 步骤4:进入目录
cd nginx-1.6.2
## 步骤5:设置
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35      
## 步骤6:编译
make
## 步骤7:安装
make install
## 步骤8:查看版本
/usr/local/webserver/nginx/sbin/nginx -v 
## 步骤9:创建运行nginx的组
/usr/sbin/groupadd www  
## 步骤10:创建账户
/usr/sbin/useradd -g www www
## 步骤11:配置nginx.conf
cd /usr/local/webserver/nginx/conf/ 
## 步骤12:将原来的conf备份
mv nginx.conf nginx.conf.bak  
## 步骤13:新建nginx.conf  
vi nginx.conf

复制的如下的文件内容到nginx的配置文件中:

user www www;
worker_processes auto;
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}
http
{
  include mime.types;
  default_type application/octet-stream;
  log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent" $http_x_forwarded_for';
  #charset gb2312;
  access_log  /usr/local/webserver/nginx/logs/access.log;
  #下面是server虚拟主机的配置
  server
  {
  #监听端口
    listen 18080;  
  #域名,此处好像不影响nginx,可根据实际IP修改
  server_name 172.19.131.*;
  index index.html index.htm index.php;
  #站点目录  #站点目录
  root /usr/local/webserver/nginx/html;
 
 location / 
 {
             proxy_pass http://kylin.com;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
  upstream kylin.com {
  ip_hash;
  server 172.19.131.xxx:7070 weight=3;  #注意替换成自己的IP
  server 172.19.131.xx:7070;    #注意替换成自己的IP
  server 172.19.131.xx:7070;    #注意替换成自己的IP
    }
  }    
  ##如果三台机器性能一样可以不添加weight=3。          

user www www;
worker_processes auto;
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}
http
{
  include mime.types;
  default_type application/octet-stream;
  log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent" $http_x_forwarded_for';
  #charset gb2312;
  access_log  /usr/local/webserver/nginx/logs/access.log;
  #下面是server虚拟主机的配置
  server
  {
  #监听端口
    listen 18080;  
  #域名,此处好像不影响nginx,可根据实际IP修改
  server_name 172.19.131.*;
  index index.html index.htm index.php;
  #站点目录  #站点目录
  root /usr/local/webserver/nginx/html;
 
 location / 
 {
             proxy_pass http://kylin.com;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
  upstream kylin.com {
  ip_hash;
  server 172.19.131.xxx:7070 weight=3;  #注意替换成自己的IP
  server 172.19.131.xx:7070;    #注意替换成自己的IP
  server 172.19.131.xx:7070;    #注意替换成自己的IP
    }
  }    
  ##如果三台机器性能一样可以不添加weight=3。

4) 检查和启动Nginx

## 步骤15:检查配置文件nginx.conf的正确性
/usr/local/webserver/nginx/sbin/nginx -t  
## 步骤16:启动
/usr/local/webserver/nginx/sbin/nginx  
## 步骤14:查看是否启动成功 
ps -ef | grep nginx                         

## 步骤15:检查配置文件nginx.conf的正确性
/usr/local/webserver/nginx/sbin/nginx -t  
## 步骤16:启动
/usr/local/webserver/nginx/sbin/nginx  
## 步骤14:查看是否启动成功 
ps -ef | grep nginx

配置完成以后输入http://172.19.131.xxx:18080/kylin/(所部署的nginx节点的IP)输入用户ADMIN和密码KYLIN,看到kylin正常的页面即成功(确定三台节点kylin都已经启动)

java 集群部署步骤 jar包集群部署_nginx_03

Tips:其他的Nginx命令

## 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reload  
## 重启 
/usr/local/webserver/nginx/sbin/nginx -s reopen
##  Nginx        
Nginx/usr/local/webserver/nginx/sbin/nginx -s stop              

## 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reload  
## 重启 
/usr/local/webserver/nginx/sbin/nginx -s reopen
##  Nginx        
Nginx/usr/local/webserver/nginx/sbin/nginx -s stop

本文的介绍到此结束,下一篇文章记录对kylin的model和cube基础知识点~

end

             

java 集群部署步骤 jar包集群部署_nginx_04