Kudu + IMPALA 的安装部署

Apache Kudu是由Cloudera开源的存储引擎,可以同时提供低延迟的随机读写和高效的数据分析能力。
在存储技术中,基于HDFS的存储技术,比如Parquet,具有高吞吐量连续读取数据的能力;而HBase和Cassandra等技术适用于低延迟的随机读写场景。KUDU则兼具两者的优点。
用户可以使用 Insert,Update和Delete API对KUDU表进行写操作。而在读操作方面,Kudu通过Scan操作来获取数据。用户可以通过指定过滤条件来获取自己想要读取的数据。
接下来本文将在三台服务器127 、128和129 上做kudu的安装部署,kudu的安装部署允许一台或者多台机器跑kudu-master。一般建议跑一个master(无容错机制)、三个master(允许一个节点运行出错)或者五个master(允许两个节点出错)。
一台或者多台机器跑kudu-tserver。当需要使用副本,至少需要三个节点运行kudu-tserver服务。
Impala并没有自己的存储引擎,其负责解析SQL,并连接其底层的存储引擎。在发布之初Impala主要支持HDFS,Kudu发布之后,Impala和Kudu更是做了深度集成。
1、查看三台机子的linux内核以及ext文件格式:
127
Kudu + IMPALA 的安装部署_第1张图片
128
Kudu + IMPALA 的安装部署_第2张图片
129
Kudu + IMPALA 的安装部署_第3张图片
必须是ext4格式 否则会启动失败

2、安装依赖包

yum -y install cyrus-sasl-plain lsb ntp

在yum.repos.d中加入cloudera-kudu.repo源
cloudera-kudu.repo源的链接下载地址:http://kudu.apache.org/docs/installation.html

根据系统选择是centos 6 或者centos 7 例如:172.30.81.127和172.30.81.113是centos 6 就下载centos 6的cloudera-kudu.repo ;172.30.81.123是centos 7的cloudera-kudu.repo。
在yum.repos.d中加入cloudera-kudu.repo源:
Kudu + IMPALA 的安装部署_第4张图片
查看 cloudera-kudu.repo文件
Kudu + IMPALA 的安装部署_第5张图片
以127作为master,在127上安装安装kudu-master

yum install kudu kudu-master kudu-client0 kudu-client-devel -y

Kudu + IMPALA 的安装部署_第6张图片
配置
Kudu + IMPALA 的安装部署_第7张图片

# 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=/var/lib/kudu/master
#--fs_data_dirs=/var/lib/kudu/master
修改为
--fs_wal_dir=/opt/kudu/master
--fs_data_dirs=/opt/kudu/master
设置权限
# mkdir /opt/kudu && chown kudu:kudu /opt/kudu
启动
# /etc/init.d/kudu-master start

在这里插入图片描述
以128和129作为从机
需要修改/etc/hosts 在127 和 128 和129 内加入其他两台机子的hostname 以及ip
安装kudu-tserver

# yum install kudu kudu-tserver kudu-client0 kudu-client-devel -y

Kudu + IMPALA 的安装部署_第8张图片
配置

# cat /etc/kudu/conf/tserver.gflagfile 

Kudu + IMPALA 的安装部署_第9张图片

# 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=/var/lib/kudu/tserver
#--fs_data_dirs=/var/lib/kudu/tserver
修改为
--fs_wal_dir=/opt/kudu/tserver
--fs_data_dirs=/opt/kudu/tserver
--tserver_master_addrs=172.30.81.127:7051
设置权限
 mkdir /opt/kudu && chown kudu:kudu /opt/kudu
启动前需要做ntp同步,使用这条命令:ntpdate us.pool.ntp.org
在三台机子中都启动
# /etc/init.d/kudu-tserver start

安装成功后 启动成功的界面如下:
Web界面
Kudu + IMPALA 的安装部署_第10张图片
Master界面:
Kudu + IMPALA 的安装部署_第11张图片
T-server界面:
Kudu + IMPALA 的安装部署_第12张图片
接下来进行Impala-kudu安装
安装Impala-kudu 需要如下安装包:
Kudu + IMPALA 的安装部署_第13张图片
使用rpm命令进行安装,个别的需要使用 --nodeps 命令强制安装
在主节点安装 impala-kudu、 impala-kudu-catalog、impala-kudu-state-store、 impala-kudu-udf-deve 、bigtop-utils 、impala-kudu-server、impala-kudu-shell
Kudu + IMPALA 的安装部署_第14张图片
在子节点安装 impala-kudu、impala-kudu-server、impala-kudu-shelll 、 impala-kudu-udf-deve 、bigtop-utils。
Kudu + IMPALA 的安装部署_第15张图片
在安装好之后、就可以发现在 /etc/default 和 /etc/impala 生成配置文件/etc/default 路径下会新生成两个文件 bigtop-utils impala
在bigtop-utils 文件中配置 java路径即可:
Kudu + IMPALA 的安装部署_第16张图片
在impala 文件中只需要修改以下两项,将ip改为主机节点IP IMPALA_CATALOG_SERVICE_HOST=172.30.81.127
IMPALA_STATE_STORE_HOST=172.30.81.127
Kudu + IMPALA 的安装部署_第17张图片
/etc/impala 路径先会有这两个空文件夹 conf conf.dist
将Hadoop和hive中的配置文件*.xml 文件拷贝到 conf.dist 下面,之后做如下操作在core-site.xml和hdfs-site.xml文件中增加如下配置
执行拷贝

cp /etc/hadoop/conf/*.xml /etc/impala/conf
cp /etc/hive/conf/hive-site.xml /etc/impala/conf

添加附属组

usermod -G hive,hdfs,hadoop impala

impala在hdfs上的目录并设置权限

sudo -u hdfs hadoop fs -mkdir /user/impala 
sudo -u hdfs hadoop fs -chown impala /user/impala

设置scoket path
在每个节点上创建/var/run/hadoop-hdfs

mkdir -p /var/run/hadoop-hdfs 

注意:该文件夹可能已经存在,应当确认用impala是否有权限进行读写
如果已经存在,将用户impala加入该文件所属的组,并修改该文件组的权限即:

chmod 775 /var/run/hadoop-hdfs 

修改配置文件
在/etc/hadoop/conf/core-site.xml增加


	dfs.client.read.shortcircuit true


	dfs.client.read.shortcircuit.skip.checksum
    false

 
	dfs.datanode.hdfs-blocks-metadata.enabled 
	true

在/etc/hadoop/conf/hdfs-site.xml增加


	dfs.datanode.hdfs-blocks-metadata.enabled 
	true

 
	dfs.block.local-path-access.user 
	impala


	dfs.client.file-block-storage-locations.timeout.millis
	60000

接下来就可以启动服务了

$ sudo service impala-state-store start 
$ sudo service impala-catalog start 
$ sudo service impala-server start

启动:impala-shell
测试语句:

CREATE TABLE kaka_first
(
	id BIGINT,
	name STRING
)
DISTRIBUTE BY HASH INTO 16 BUCKETS
TBLPROPERTIES(
 'storage_handler' = 'com.cloudera.kudu.hive.KuduStorageHandler',
'kudu.table_name' = 'kaka_first',
'kudu.master_addresses' = '172.30.81.127:7051',
'kudu.key_columns' = 'id'
);

Kudu + IMPALA 的安装部署_第18张图片
Web页面
Kudu + IMPALA 的安装部署_第19张图片
Kudu + IMPALA 的安装部署_第20张图片
可能遇到的问题报错
1、如果不是文件系统不是ext4 kudu启动会遇到如下问题:
Log error日志
Kudu + IMPALA 的安装部署_第21张图片
Running on machine: xdp.yeexun.com
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
F0402 15:31:01.463018 17507 tablet_server_main.cc:72] Check failed: _s.ok() Bad status: IO error: Could not create new FS layout: Unable to create block manager: Error during hole punch test. The log block mana
ger requires a filesystem with hole punching support such as ext4 or xfs. On el6, kernel version 2.6.32-358 or newer is required. To run without hole punching (at the cost of some efficiency and scalability), r
econfigure Kudu with --block_manager=file. Refer to the Kudu documentation for more details. Raw error message follows: Unexpected pre-punch file size for /opt/kudu/tserver/data/hole_punch_test_file: expected 1
6384 but got 0
官网上可以查询到这个错误的解决方案:
http://kudu.apache.org/docs/troubleshooting.html 没法启动的原因应该是 EXT3 文件系统不能支持
Kudu + IMPALA 的安装部署_第22张图片
2、可能遇到权限错误:
Kudu + IMPALA 的安装部署_第23张图片
切换到hdfs所在的用户住
输入 hdfs dfsadmin -safemode leave 可以解决
3、时间同步错误
Running on machine: localhost.localdomain
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
F0402 19:00:55.215814 4907 tablet_server_main.cc:72] Check failed: _s.ok() Bad status: Service unavailable: Cannot initialize clock: Error reading clock. Clock considered unsynchronized
用需要做ntp同步,使用这条命令:ntpdate us.pool.ntp.org
Ntp同步前需先停止ntp服务,之后再重启ntpd服务

你可能感兴趣的:(运维)