手把手教你在华为云编译和使用Apache Kudu

he lifu 发表于 2020/06/09 20:38:53 2020/06/09
【摘要】 大数据系统又重又复杂,对于很多感兴趣、又想玩一把的同学来讲,门槛着实有点高,今天我选择了Apache Kudu这个项目,来手把手指导大家从源码开始构建一个本地的集群,然后进行简单的数据读写和集群管理。

1 前言

大数据系统又重又复杂,对于很多感兴趣、又想玩一把的同学来讲,门槛着实有点高,今天我选择了Apache Kudu这个项目,来手把手指导大家从源码开始构建一个本地的集群,然后进行简单的数据读写和集群管理。

注意,以下操作只需要ctrl+c & ctrl+v 即可:)

2 准备工作

在开始本文之前,建议在华为云购买一台云服务器,同时考虑到后续的顺利操作,云服务器需要有一些要求:

  • CPU架构:x86计算

  • 规格:c6.2xlarge.2(提高编译速度)

  • 镜像:公共镜像,CentOS CentOS 8.0 64bit

  • 系统盘:高IO,100GB

  • 弹性公网:按流量计费(提高下载速度)

3 操作系统

安装软件包

[root@ecs-kudu ~]# yum install -y git autoconf automake libtool flex rsync gcc-c++.x86_64 cyrus-sasl-devel.x86_64 cyrus-sasl-plain.x86_64 openssl-devel.x86_64 java-1.8.0-openjdk-devel.x86_64

创建软连接

[root@ecs-kudu ~]# cd /usr/bin
[root@ecs-kudu bin]# ln -s python3 python
[root@ecs-kudu bin]# ls -lrt python*
lrwxrwxrwx 1 root root    32 Nov 21  2019 python3.6m -> /usr/libexec/platform-python3.6m
lrwxrwxrwx 1 root root    31 Nov 21  2019 python3.6 -> /usr/libexec/platform-python3.6
lrwxrwxrwx 1 root root    25 Feb 12  10:34 python3 -> /etc/alternatives/python3
lrwxrwxrwx 1 root root    7 Jun  8  19:05 python -> python3

4 编译源码

clone代码:

[root@ecs-kudu ~]# git clone https://github.com/apache/kudu

编译三方包

[root@ecs-kudu ~]# cd kudu/
[root@ecs-kudu kudu]# ./thirdparty/build-if-necessary.sh

编译源码

[root@ecs-kudu kudu]# mkdir -p build/release
[root@ecs-kudu kudu]# cd build/release/
[root@ecs-kudu release]# ../../thirdparty/installed/common/bin/cmake -DCMAKE_BUILD_TYPE=release ../..
[root@ecs-kudu release]# make -j8

5 部署集群 

这里我们以1个master + 3个tserver的集群进行举例说明。

创建目录

[root@ecs-kudu release]# cd ~/kudu
[root@ecs-kudu kudu]# 
mkdir -p cluster/master/wal
mkdir -p cluster/master/data
mkdir -p cluster/master/conf
mkdir -p cluster/master/log
mkdir -p cluster/tserver1/wal
mkdir -p cluster/tserver1/data
mkdir -p cluster/tserver1/conf
mkdir -p cluster/tserver1/log
mkdir -p cluster/tserver2/wal
mkdir -p cluster/tserver2/data
mkdir -p cluster/tserver2/conf
mkdir -p cluster/tserver2/log
mkdir -p cluster/tserver3/wal
mkdir -p cluster/tserver3/data
mkdir -p cluster/tserver3/conf
mkdir -p cluster/tserver3/log

配置文件

  • master节点配置

[root@ecs-kudu kudu]# cd cluster
[root@ecs-kudu cluster]# vi master/conf/master.conf
-rpc_bind_addresses=localhost:7051
-webserver_interface=localhost
-webserver_port=8051
-fs_wal_dir=/root/kudu/cluster/master/wal
-fs_data_dirs=/root/kudu/cluster/master/data
-log_dir=/root/kudu/cluster/master/log
-unlock_unsafe_flags
-never_fsync
-time_source=system_unsync
  • tserver1节点配置

[root@ecs-kudu cluster]# vi tserver1/conf/tserver.conf
-rpc_bind_addresses=localhost:7150
-webserver_interface=localhost
-webserver_port=8150
-fs_wal_dir=/root/kudu/cluster/tserver1/wal
-fs_data_dirs=/root/kudu/cluster/tserver1/data
-log_dir=/root/kudu/cluster/tserver1/log
-unlock_unsafe_flags
-never_fsync
-time_source=system_unsync
  • tserver2节点配置

[root@ecs-kudu cluster]# vi tserver2/conf/tserver.conf
-rpc_bind_addresses=localhost:7250
-webserver_interface=localhost
-webserver_port=8250
-fs_wal_dir=/root/kudu/cluster/tserver2/wal
-fs_data_dirs=/root/kudu/cluster/tserver2/data
-log_dir=/root/kudu/cluster/tserver2/log
-unlock_unsafe_flags
-never_fsync
-time_source=system_unsync
  • tserver3节点配置

[root@ecs-kudu cluster]# vi tserver3/conf/tserver.conf
-rpc_bind_addresses=localhost:7350
-webserver_interface=localhost
-webserver_port=8350
-fs_wal_dir=/root/kudu/cluster/tserver3/wal
-fs_data_dirs=/root/kudu/cluster/tserver3/data
-log_dir=/root/kudu/cluster/tserver3/log
-unlock_unsafe_flags
-never_fsync
-time_source=system_unsync

启动进程

[root@ecs-kudu cluster]# 
../build/release/bin/kudu-master  --flagfile=./master/conf/master.conf &
../build/release/bin/kudu-tserver --flagfile=./tserver1/conf/tserver.conf &
../build/release/bin/kudu-tserver --flagfile=./tserver2/conf/tserver.conf &
../build/release/bin/kudu-tserver --flagfile=./tserver3/conf/tserver.conf &


测试尝鲜

  • "OK"表示集群的状态正常:

[root@ecs-kudu cluster]# ../build/release/bin/kudu cluster ksck localhost:7051
... ...
OK
[root@ecs-kudu cluster]#
  • 写数据

[root@ecs-kudu cluster]# ../build/release/bin/kudu perf loadgen localhost:7051 -table_num_hash_partitions=3 -table_num_replicas=3 -num_rows_per_thread=10000 -keep_auto_table
Using auto-created table 'default.loadgen_auto_d1de323678bd4aa5a5dea618cbb8449c'

INSERT report
    rows total: 20000
    time total: 35.4161 ms
  time per row: 0.0017708 ms
[root@ecs-kud cluster]#
  • 读数据(注意表名和上面的一样)

[root@ecs-kudu cluster]# ../build/release/bin/kudu perf table_scan localhost:7051 default.loadgen_auto_d1de323678bd4aa5a5dea618cbb8449c
T 988dc2eef4b84ed4a9f3f085f01407e1 scanned count 6640 cost 0.00353404 seconds
T f1116c276f10455c8d58ff4720383542 scanned count 6649 cost 0.00355792 seconds
T fb010f4e720d4e4293abcda44f51210a scanned count 6711 cost 0.00305647 seconds
Total count 20000 cost 0.0068044 seconds
[root@ecs-kudu cluster]#

上面是集群状态和读、写集群的操作,通过kudu工具还可以做其他各种丰富的操作,大家可以参考https://kudu.apache.org/docs/command_line_tools_reference.html


以上step by step步骤有什么问题,请大家留言。另外,大家对Apache Kudu有什么想要了解的也可以留言哈^_^


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。