Kudu的集群安装(1.6.0-cdh5.14.0)
kudu的架构体系
下图显示了一个具有三个 master 和多个 tablet server 的 Kudu 集群,每个服务器都支持多个 tablet。它说明了如何使用 Raft 共识来允许 master 和 tablet server 的 leader 和 f ollow。此外,tablet server 可以成为某些 tablet 的 leader,也可以是其他 tablet 的 follower。leader 以金色显示,而 follower 则显示为蓝色。
下面是一些基本概念:
Table(表)
一张 talbe 是数据存储在 Kudu 的位置。表具有 schema 和全局有序的 primary key(主键)。table 被分成称为 tablets 的 segments。
Tablet
一个 tablet 是一张 table 连续的 segment,与其它数据存储引擎或关系型数据库中的 partition(分区)相似。给定的 tablet 冗余到多个 tablet 服务器上,并且在任何给定的时间点,其中一个副本被认为是 leader tablet。任何副本都可以对读取进行服务,并且写入时需要在为 tablet 服务的一组 tablet server之间达成一致性。
Tablet Server
一个 tablet server 存储 tablet 和为 tablet 向 client 提供服务。对于给定的 tablet,一个 tablet server 充当 leader,其他 tablet server 充当该 tablet 的 follower 副本。只有 leader服务写请求,然而 leader 或 followers 为每个服务提供读请求。leader 使用 Raft Consunsus Algorithm来进行选举 。一个 tablet server 可以服务多个 tablets ,并且一个 tablet 可以被多个 tablet servers 服务着。
节点规划
节点 Kudu-master Kudu-tserver
Hadoop01 是 是
Hadoop02 是 是
Hadoop03 是 是
配置本地的CDH-yum源
所有cloudera软件下载地址:
http://archive.cloudera.com/cdh5/cdh/5/ 或者http://archive.cloudera.com/cdh5/
1):上传压缩包并解压
5个G的压缩文件上传/yumData目录下,并进行解压
cd /yumData/ tar -zxvf cdh5.14.0-centos6.tar.gz
2):
yum -y install httpd
service httpd start
cd /etc/yum.repos.d
vim localimp.repo
[localimp] name=localimp baseurl=http://hadoop01/5.14.0 gpgcheck=0 enabled=1
创建apache httpd的读取连接
setenforce 0 ln -s /yumData/cdh/5.14.0 /var/www/html/ (删除软连接方式):rm -rf ./5.14.0 (错误删除方式):rm -rf ./5.14.0/
页面访问本地yum源,出现这个界面表示本地yum源制作成功 访问http://hadoop01/5.14.0/
将制作好的localimp配置文件发放到所有需要安装impala的节点上去
cd /etc/yum.repos.d/
scp localimp.repo hadoop02:$PWD
scp localimp.repo hadoop03:$PWD
下载命令:
sudo yum install kudu # Base Kudu files sudo yum install kudu-master # Kudu master init.d service script and default configuration sudo yum install kudu-tserver # Kudu tablet server init.d service script and default configuration sudo yum install kudu-client0 # Kudu C++ client shared library sudo yum install kudu-client-devel # Kudu C++ client SDK
服务器 命令 hadoop01 yum install -y kudu kudu-master kudu-tserver kudu-client0 kudu-client-devel hadoop02 yum install -y kudu kudu-master kudu-tserver kudu-client0 kudu-client-devel hadoop03 yum install -y kudu kudu-master kudu-tserver kudu-client0 kudu-client-devel
安装完成之后。 需要在所有节点的/etc/kudu/conf目录下有两个文件:master.gflagfile和tserver.gflagfile 。
默认配置(不采用):
master.gflagfil
# cat /etc/kudu/conf/master.gflagfile # Do not modify these two lines. If you wish to change these variables, # modify them in /etc/default/kudu-master. --fromenv=rpc_bind_addresses --fromenv=log_dir --fs_wal_dir=/opt/kudu/master --fs_data_dirs=/opt/kudu/master
tserver.gflagfile::
# cat /etc/kudu/conf/tserver.gflagfile # Do not modify these two lines. If you wish to change these variables, # modify them in /etc/default/kudu-tserver. --fromenv=rpc_bind_addresses --fromenv=log_dir --fs_wal_dir=/opt/kudu/tserver --fs_data_dirs=/opt/kudu/tserver
自定义配置:(每一台节点) 在所有节点操作如下:
1):配置master
master.gflagfil:
[angel@angel1 kudu]$ vim /etc/default/kudu-master export FLAGS_log_dir=/var/log/kudu export FLAGS_rpc_bind_addresses=hadoop01:7051 【指定每台主机】
[angel@angel1 kudu]$ vim /etc/kudu/conf/master.gflagfile
# Do not modify these two lines. If you wish to change these variables, # modify them in /etc/default/kudu-master. --fromenv=rpc_bind_addresses --fromenv=log_dir --fs_wal_dir=/opt/cdh/kudu/master --fs_data_dirs=/opt/cdh/kudu/master --master_addresses=hadoop01:7051,hadoop02:7051,hadoop03:7051
2):配置tserver
tserver.gflagfile: [angel@angel1 kudu]$ vim /etc/default/kudu-tserver
export FLAGS_log_dir=/var/log/kudu export FLAGS_rpc_bind_addresses=hadoop01:7050【指定每台主机】
[angel@angel1 kudu]$ vim /etc/kudu/conf/tserver.gflagfile
# Do not modify these two lines. If you wish to change these variables, # modify them in /etc/default/kudu-tserver. --fromenv=rpc_bind_addresses --fromenv=log_dir --fs_wal_dir=/opt/cdh/kudu/tserver --fs_data_dirs=/opt/cdh/kudu/tserver --tserver_master_addrs=hadoop01:7051,hadoop02:7051,hadoop03:7051
注意
kudu的默认权限是kudu , 所以如果使用root用户的话,需要将/opt/cdh/kudu的权限修改为kudu drwxr-xr-x. 4 kudu kudu 4096 Nov 8 09:35 kudu
配置完成后,将配置文件tserver.gflagfile、tserver.gflagfile 以及自定义目录:/opt/cdh/kudu的权限修改为当前使用用户的权限(chown -R angel:angel XXXXX)【如果是普通用户】
另外:如果使用普通用户,需要为普通用户配置sudo权限:
/etc/sudoers文件中添加
/etc/sudoers文件中添加:
注意:kudu的日志文件需要定期清理,否则占用磁盘空间非常大(/var/log/kudu目录)
启动和关闭kudu
方式1: 启动:
sudo service kudu-master start
sudo service kudu-tserver start
启动的时候注意服务器时钟是同步 :
/etc/init.d/ntpd restart
关闭:
sudo service kudu-master stop
sudo service kudu-tserver stop
方式2: 启动:
sudo /etc/init.d/kudu-master start
sudo /etc/init.d/kudu-tserver start
关闭:
sudo /etc/init.d/kudu-master stop
sudo /etc/init.d/kudu-tserver stop
1:给用户添加sudo权限的时候报错
sudo: /etc/sudoers is world writable 解决方式:pkexec chmod 555 /etc/sudoers
2:启动kudu的时候报错
Failed to start Kudu Master Server. Return value: 1 [FAILED] 去日志文件中查看: 错误:F0810 09:04:08.354552 4866 master_main.cc:68] Check failed: _s.ok() Bad status: Service unavailable: Cannot initialize clock: Error reading clock. Clock considered unsynchronized 解决: 第一步:首先检查是否有安装ntp:如果没有安装则使用以下命令安装: yum -y install ntp 第二步:设置随机启动: service ntpd start chkconfig ntpd on
3:启动过程中报错
F0810 21:31:12.620932 20143 master_main.cc:71] Check failed: _s.ok() Bad status: Invalid argument: Unable to initialize catalog manager: Failed to initialize sys tables async: on-disk master list 解决: (1):停掉master和tserver (2):删除掉之前所有的/opt/cdh/kudu/master/*和/opt/cdh/kudu/tserver/*
4:启动过程中报错:
F0913 15:12:00.628237 20859 master_main.cc:74] Check failed: _s.ok() Bad status: IO error: Could not create new FS layout: unable to create file system roots: unable to write instance metadata: Call to mkstemp() failed on name template /opt/cdh/kudu/master/instance.kudutmp.XXXXXX: Permission denied (error 13) 这是因为kudu默认使用kudu权限进行执行,可能遇到文件夹的权限不一致情况,更改文件夹权限即可
Master的web地址:http://hadoop01:8051/masters