本文主要完成Kudu 伪分布式安装,方便Kudu入门
安装包下载
地址:http://archive.cloudera.com/kudu/redhat/7/x86_64/kudu/5/RPMS/x86_64/
环境准备
节点配置NTP服务
集群中NTP的配置必不可少,伪分布式可以只配主节点。
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体思路如下:
master节点作为ntp服务器与外界对时中心同步时间,随后对所有datanode节点提供时间同步服务。
所有datanode节点以master节点为基础同步时间。
所有节点安装相关组件:yum install ntp
启动服务: systemctl start ntpd
配置开机启动:systemctl enable ntpd
主节点配置
在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用65.55.56.206作为对时中心,
ntpdate -u ntp1.aliyun.com
编辑配置文件名命令:
vim /etc/ntp.conf
ntp服务只有一个配置文件,配置好了就OK。
这里只给出有用的配置,不需要的配置都用#注掉,这里就不在给出:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap
server ntp1.aliyun.com prefer
minpoll 6
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
配置文件完成,保存退出,启动服务,执行如下命令:service ntpd start
检查是否成功,用 ntpstat
命令查看同步状态,出现以下状态代表启动成功:
synchronised to NTP server () at stratum 2
time correct to within 74 ms
polling server every 128 s
如果出现异常请等待几分钟,一般等待5-10分钟才能同步。
配置ntp客户端(所有datanode节点)
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
#这里是主节点的主机名或者ip
server masterHostName
minpoll 6
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
ok保存退出,请求服务器前,请先使用ntpdate手动同步一下时间:ntpdate -u masterHostName (主节点ntp服务器).
关闭防火墙和SELinux
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙并关闭自启动:
systemctl stop firewalld
Systemctl disable firewalld
关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):
setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
需要单独安装一个软件:
yum install redhat-lsb
KUDU 安装:
安装命令:
rpm -ivh kudu-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
rpm -ivh kudu-client-devel-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
rpm -ivh kudu-client0-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
rpm -ivh kudu-debuginfo-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
rpm -ivh kudu-master-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
rpm -ivh kudu-tserver-1.4.0+cdh5.12.2+0-1.cdh5.12.2.p0.8.el7.x86_64.rpm
配置参数(需要创建好相应目录)
master:
1./etc/default/kudu-master
export FLAGS_log_dir=/opt/kudu-0.9.1/log //日志目录
export FLAGS_rpc_bind_addresses=hadoop01:7051
2./etc/kudu/conf.dist/master.gflagfile
–fs_wal_dir=/opt/kudu-0.9.1/data/master
–fs_data_dirs=/opt/kudu-0.9.1/data/master
–default_num_replicas=1 //设置备份数 不设置默认为3
tserver:
1./etc/default/kudu-tserver
export FLAGS_log_dir=/opt/kudu-0.9.1/log
export FLAGS_rpc_bind_addresses=hadoop02:7050
2./etc/kudu/conf.dist/tserver.gflagfile
–fs_wal_dir=/opt/kudu-0.9.1/data/tserver
–fs_data_dirs=/opt/kudu-0.9.1/data/tserver
–tserver_master_addrs=hadoop01:7051 //绑定master节点
###单节点要修改成1 否则会报错
–unlock_unsafe_flags=true
–allow_unsafe_replication_factor=true
–default_num_replicas=1
启动kudu
service kudu-master start|stop
service kudu-tserver start|stop
常见错误整理:
转自
kudu启动报错:
报错一:
Log file created at: 2018/04/02 10:40:33
Running on machine: mrj001
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
F0402 10:40:33.091943 51977 master_options.cc:46] At least 2 masters are required for a distributed config, but master_addresses flag ('192.168.137.6') only specifies 1 masters.
报错分析:
至少需要配置两个master,但是只配置了一个
报错处理:
kudu-master支持多master备份机制,所以配置时需注意;
vi /etc/kudu/kudu-master
注释掉--master-addresses
该参数配置为master节点以及ip列表,不指定默认为单master节点;如果指定了该配置,但是只有一个master节点就会报错;
报错二:
Log file created at: 2018/04/02 10:46:39
Running on machine: mrj001
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
F0402 10:46:39.101296 52137 tablet_server_main.cc:72] Check failed: _s.ok() Bad status: IO error: Failed to load FS layout: Could not lock /soft/kudu/data/data/block_manager_instance: Could not lock /soft/kudu/data/data/block_manager_instance: lock /soft/kudu/data/data/block_manager_instance: Resource temporarily unavailable (error 11)
报错分析:
kudu-tserver启动报错,对目录/soft/kudu/data/data/block_manager_instance不能够进行锁定
报错三:
Log file created at: 2018/04/06 16:13:39
Running on machine: mrj001
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
F0406 16:13:39.828665 2572 master_main.cc:68] Check failed: _s.ok() Bad status: Service unavailable: Cannot initialize clock: Error reading clock. Clock considered unsynchronized
报错分析:
kudu在启动之前必须保证各个服务器ntp一致,当各个table server不一致时会导致此报错;
解决办法:
查看ntpd服务是否开启:service ntpd status
查看ntpd服务是否已经同步:ntpstat
报错四:
Log file created at: 2018/04/07 13:24:52
Running on machine: mrj001
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
F0407 13:24:52.627974 5771 master_main.cc:68] Check failed: _s.ok() Bad status: IO error: Could not create new FS layout: Unable to write instance metadata: Call to mkstemp() failed on name template /soft/kudu/master/data/instance.kudutmp.XXXXXX: Permission denied (error 13)
报错分析:
经过分析报错可以得出:/soft/kudu/master/data/目录下没有创建文件的权限,同时kudu在启动的时候默认是使用kudu用户进行创建,所以要确定kudu用户能够对该文件夹下面的所有目录进行管理
报错处理:
在没有权限的目录下面执行:chown -R kudu:kudu ./*
,改变用户组和用户为kudu即可解决
报错五:
Log file created at: 2018/04/07 13:37:05
Running on machine: mrj001
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
F0407 13:37:05.960657 5931 tablet_server_main.cc:72] Check failed: _s.ok() Bad status: IO error: Failed to load FS layout: Filesystem root /soft/kudu/tserver/wal contains illegal whitespace
报错分析:
/soft/kudu/tserver/wal包含不符合规则的空白
报错处理:
这个报错是因为tserver配置文件中没有指定master地址造成的;
检查/etc/kudu/conf/tserver.gflagfile配置文件,在该配置文件中添加:--tserver_master_addrs=mrj001:7051
接下来完成JAVA API的增删改查
Presto-Kudu 安装等