presto+cassandra集群安装部署详细步骤

1、概述

  本文内容是描述利用presto连接cassandra数据库并查询cassandra数据库里面数据的完整步骤,包括cassandra数据库集群安装部署以及presto数据查询引擎的安装部署。在进行本文所说的安装步骤的前提是你准备好了至少2台机器作为集群的节点,各个节点之间能够正常通信,可以ping的通。本文实验所用的集群为三台机器,具体信息如下表1-1所示。
                 表1-1 集群节点配置信息

ip 操作系统 内存 磁盘空间 是否是cassandra种子节点 是否是presto的coordinator节点
10.166.50.231 64位Centos7标准版 8G 127G
10.166.50.232 64位Centos7标准版 8G 127G
10.166.50.233 64位Centos7标准版 8G 127G

  注意:操作系统在安装时一定要勾选上开发工具。附上操作系统下载地址:
  https://www.centos.org/download/

2、集群上cassandra安装部署及测试

2.1、准备安装环境

  cassandra数据库安装所需的软件包名、版本及安装目录见表2-1。
       表2-1 cassandra数据库安装所需软件包名、版本及安装目录信息

软件包名 软件名称 版本 安装目录
Apache-cassandra-3.11.5.bin.tar.gz Cassandra安装包 3.11.5 /usr/local/
jdk-8u241-linux-x64.tar.gz JDK(Java开发工具) 1.8.0_241 /usr/local/

  注意:若是下载的cassandra是3.0以上的版本,需要下载1.8及以上的JDK。附上软件包下载地址:
  cassandra:http://cassandra.apache.org/download/
  jdk:https://www.oracle.com/technetwork/java/javase/downloads

2.2、安装过程

2.2.1、上传安装包

  利用xshell和xftp将Apache-cassandra-3.11.5.bin.tar.gz和jdk-8u241-linux-x64.tar.gz上传到10.166.50.231节点上的/usr/local/目录下。这里我们采用的方式是在一个节点(10.166.50.231)编辑好所有配置文件后利用scp命令将配置文件传到集群其余各个节点上,若是不想这样干也可以一个个节点单独配置。

2.2.2、解压安装包

  在10.166.50.231节点的/usr/local目录下执行如下命令解压Apache-cassandra-3.11.5.bin.tar.gz和jdk-8u241-linux-x64.tar.gz,并重命名。

tar -zxvf Apache-cassandra-3.11.5.bin.tar.gz
mv apache-cassandra-3.11.5 cassandra
tar -zxvf jdk-8u241-linux-x64.tar.gz
mv jdk1.8.0_241 jdk1.8

2.2.3、配置防火墙

  在集群所有节点执行如下命令关了防火墙,若是不关防火墙需要将cassandra数据库启动所需的端口全部添加到白名单。建议关了防火墙,否则会因为集群间各个机器通信问题会导致错误。

systemctl stop firewalld

2.2.4、配置hosts文件

  在集群所有节点执行如下命令。

vim /etc/hosts

  执行完命令后,在打开的hosts文件编辑内容如下:

127.0.0.1   localhostlocalhost.localdomain localhost4 localhost4.localdomain4
::1         localhostlocalhost.localdomain localhost6 localhost6.localdomain6
10.166.50.231 cluster1
10.166.50.232 cluster2
10.166.50.233 cluster3

  编辑保存后,在/etc/init.d/目录下执行如下命令,使修改后的内容生效。

./network restart

2.2.5、配置jdk

  在集群所有节点执行如下命令:

vim /etc/profile

  执行命令后对/etc/profile文档进行编辑,在最后一行后面换行添加如下内容:

export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre

  保存退出。
  然后执行命令

source /etc/profile

  立即生效环境变量。
  这里可以通过执行java -version命令来检查jdk是否配置好了,若是配置好了显示如图1所示。


图1 jdk安装配置好截图

2.2.6、创建cassandra存储文件夹

  在10.166.50.231执行如下命令:

mkdir /var/lib/cassandra
mkdir /var/lib/cassandra/data
mkdir /var/lib/cassandra/commitlog
mkdir /var/lib/cassandra/saved_caches
mkdir /usr/local/cassandra/logs

2.2.7、配置cassandra参数
  执行如下命令对cassandra.yaml文件进行编辑。

vim /usr/local/cassandra/conf/cassandra.yaml

  执行命令后,对cassandra.yaml文件配置如下所示:

rpc_address: 10.166.50.231

rpc_port: 9160

listen_address: 10.166.50.231

- seeds: "10.166.50.231,10.166.50.232,10.166.50.233"

data_file_directories:
     -/var/lib/cassandra/data
       
commitlog_directory: /var/lib/cassandra/commitlog

saved_caches_directory: /var/lib/cassandra/saved_caches

  配置说明如下:
  rpc_address:本机ip。
  rpc_port:默认9160,若是与机器其他程序发生端口冲突需要修改。
  listen_address:本机ip。
  -seeds:需要填写上集群所有机器的ip。
  data_file_directories:与前面创建的文件路径一致。
  commitlog_directory:与前面创建的文件路径一致。
  saved_caches_directory:与前面创建的文件路径一致。
  注意:这里有一个cluster_name属性需要根据自己实际情况编辑,默认“Test Cluster”,同一个集群的所有机器名字应相同。

2.2.8、其他节点配置

  执行如下命令将配置文件传到集群所有剩下节点上并配置修改好,这里将10.166.50.231节点上配置好的文件/usr/local/cassandra和/usr/local/jdk1.8传到10.166.50.232和10.166.50.233节点的/usr/local/路径下。

scp -r /usr/local/cassandra root@10.166.50.232:/usr/local
scp -r /usr/local/jdk1.8 root@10.166.50.232:/usr/local

  执行命令后会提示输入密码,输入对应ip的登陆密码即可。
  在所有其余节点(10.166.50.232,10.166.50.233)上按照2.2.3和2.2.4配置好JDK并关闭防火墙。
  在10.166.50.232和10.166.50.233节点按照2.2.6配置好对应文件。

2.2.9、启动cassandra

  在所有节点的/usr/local/cassandra/bin/目录下执行如下命令启动cassandra。

./cassandra -R

  在/usr/local/cassandra/bin目录下执行如下命令查看是否集群所有节点都启动了,如图2所示。

./nodetool status
图2 cassandra安装成功截图

2.3、测试cassandra

2.3.1、登陆sqlsh

  任意一个节点在/usr/local/cassnadra/bin/目录下执行如下命令,这里是在10.166.50.231节点执行:

 ./cqlsh 10.166.50.231

  命令行后面填写任意ip皆可。

2.3.2、创建keyspace

  执行如下cassandra命令创建名为test的keyspace(可理解为数据库实例)。

create keyspace test with replication = {'class':'SimpleStrategy','replication_factor':3}

  这里可以参考:https://www.w3cschool.cn/cassandra/cassandra_create_keyspace.html

2.3.3、创建table

  执行如下cassandra命令创建名为emp的表。

use test;
create table emp(emp_id int primary key,emp_name text,emp_city text,emp_sal varint);

2.3.4、插入数据

  执行如下命令,往emp表中插入几条数据。

insert into emp (emp_id, emp_name, emp_city, emp_sal) VALUES(1,'ram', 'Hs', 50000);
insert into emp (emp_id, emp_name, emp_city, emp_sal) VALUES(2,'ss', 'Hys', 60000);

2.3.5、查询数据

  执行如下命令,可以查询到已经插入的数据,结果如图3所示。至此,cassandra集群部署完成。

 select * from emp;
图3 cassandra结果查询

3、集群上presto安装部署及测试

3.1、准备安装环境

  Presto数据查询引擎安装所需的软件包名、版本及安装目录见表3-1。
          表3-1 presto安装所需软件包名、版本及安装目录信息

软件包名 软件名称 版本 安装目录
presto-server-0.230.tar.gz Presto安装包 0.230 /usr/local/
jdk-8u241-linux-x64.tar.gz Presto客户端连接工具 0.230 /usr/local/

  注意:附上软件包下载地址。
  presto-server:https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.230/
  presto-cli:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.230/

3.2、安装过程

3.2.1、上传安装包

  利用xshell和xftp将presto-server-0.230.tar.gz和presto-cli-0.230-executable.jar上传到10.166.50.231节点上的/usr/local/目录下。这里我们采用的方式是在一个节点(10.166.50.231)编辑好所有配置文件后利用scp命令将配置文件传到集群其余各个节点上,若是不想这样干也可以一个个节点单独配置。

3.2.2、解压安装包

  在10.166.50.231节点的/usr/local目录下执行如下命令解压presto-server-0.230.tar.gz并对presto-server-0.230.tar.gz和presto-cli-0.230-executable.jar重命名,这里我没有对presto-server-0.230.tar.gz重命名了,你可根据自己需要重命名。

tar -zxvf presto-server-0.230.tar.gz
mv presto-cli-0.230-executable.jar presto-cli

3.2.3、创建etc文件夹

  在10.166.50.231节点执行如下命令在/usr/local/presto-server-0.230/目录下创建etc文件夹,其余文件都要创建,但是我们用scp命令因为在231节点创建了,其余节点就不用执行该命令了。

mkdir /usr/local/presto-server-0.230/etc

3.2.4、配置node.properties文件

  在10.166.50.231节点上执行如下命令在/usr/local/presto-server-0.230/etc/目录下创建node.properties文件,其余节点node.properties文件内容和这个相同。

vim /usr/local/presto-server-0.230/etc/node.properties

  创建node.properties文件后编辑内容如下所示。

node.environment=pretest
node.id=cluster1
node.data-dir=/usr/local/presto-server-0.230/presto/data

  配置说明如下:
  node.environment:presto部署集群上的节点该属性值应相同,默认pretest。
  node.id:本机的标识符,只要是唯一确认的名称就行,这里我们写为cluster1。
  node.data-dir:数据备份地址,一般写为/usr/local/presto-server-0.230/presto/data。

3.2.5、配置jvm.config文件

  在10.166.50.231节点上执行如下命令在/usr/local/presto-server-0.230/etc/目录下创建jvm.config文件,其余节点jvm.config文件内容和这个相同。

vim /usr/local/presto-server-0.230/etc/jvm.config

  创建jvm.config文件后编辑内容如下所示。

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

  这里的配置是参考官网说明配置的,具体请参考下面网址内容。
https://prestodb.io/docs/current/installation/deployment.html

3.2.6、配置config.properties文件

  config.properties文档在coordinator节点上和worker节点上内容不一样,需要注意。
  1)coordinator节点
  在10.166.50.231节点(coordinator节点)上执行如下命令在/usr/local/presto-server-0.230/etc/目录下创建config.properties文件。

vim /usr/local/presto-server-0.230/etc/config.properties

  创建config.properties文件后编辑内容如下所示。

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=16GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://10.166.50.231:8080

  配置说明如下:
  coordinator:该属性值为true或者false,用来判断该节点是否是集群的coordinator节点。
  node-scheduler.include-coordinator:该属性值为ture或者false,用来判断是否将coordinator节点当做worker节点使用,一般正常集群coordinator节点是不将coordinator节点当做worker使用,其值为false,原因是coordinator若也当成worker使用会影响效率,有兴趣可以深入研究。
  http-server.http.port:用来后面在网页打开presto管理界面的端口,默认8080。
  query.max-memory:集群最大的查询任务量所能用内存。
  query.max-memory-per-node:每个节点能查询的最大数据量所能用内存。
  query.max-total-memory-per-node:每个节点能查询、写入等的最大数据量所能用内存。
  discovery-server.enabled:Presto使用发现服务来查找群集中的所有节点。每个Presto实例在启动时都会向Discovery服务注册。为了简化部署并避免运行其他服务,Presto协调器可以运行Discovery服务的嵌入式版本。它与Presto共享HTTP服务器,因此使用相同的端口。根据官网我们写true值。
  discovery.uri:由于启用了Prestocoordinator内嵌的Discovery服务,因此这个uri就是coordinator节点的uri,这里是10.166.50.231。根据实际环境设置该uri。注意:这个uri一定不能以”/”结尾。
  2)worker节点
  步骤同coordinator节点相同,不同的是config.properties配置文件信息如下所示。

coordinator=false
#node-scheduler.include-coordinator=false
 http-server.http.port=8080
query.max-memory=16GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://10.166.50.231:8080

3.2.7、配置log.properties文件

  在10.166.50.231节点(coordinator节点)上执行如下命令在/usr/local/presto-server-0.230/etc/目录下创建log.properties文件,其余节点log.properties内容和这个相同。

vim /usr/local/presto-server-0.230/etc/log.properties

  创建log.properties文件后编辑内容如下所示。

com.facebook.presto=INFO

3.2.8、配置数据源cassandra

  在/usr/local/presto-server-0.230/etc路径下创建catalog文件夹,其余节点内容和这个相同。

mkdir /usr/local/presto-server-0.230/etc/catalog

  在catalog文件下创建并编辑cassandra.properties文件,其余节点内容和这个相同。

vim /usr/local/presto-server-0.230/catalog/etc/cassandra.properties

  在创建的cassandra.properties文件下编辑内容如下,其余节点内容和这个相同:

connector.name=cassandra
cassandra.contact-points=10.166.50.231,10.166.50.232,10.166.50.233

  配置说明:
  connector.name:连接什么数据源就写什么,这里连接的是cassandra,所以写的是cassandra。
  cassandra.contact-points:集群上所有节点的ip都要写上。

3.2.9、其他节点配置

  执行如下命令将配置文件传到集群所有剩下节点上并配置修改好,这里将10.166.50.231节点上配置好的文件/usr/local/presto-server-0.230传到10.166.50.232和10.166.50.233节点的/usr/local/路径下。

scp -r /usr/local/presto-server-0.230 root@10.166.50.232:/usr/local

  执行命令后会提示输入密码,输入对应ip的登陆密码即可。
  在所有其余节点(10.166.50.232,10.166.50.233)上按照3.2.3、3.2.4、3.2.5、3.2.6、3.2.7和3.2.8章节配置好对应文件。

3.2.10、启动presto服务

  执行如下命令启动presto服务。

sh /usr/local/presto-server-0.230/bin/launcher start

  可以通过如下命令检测节点是否正常启动。

 sh /usr/local/presto-server-0.230/bin/launcher status

3.3、测试presto

3.3.1、登陆presto-cli

  这里我们只在10.166.50.231节点安装了presto-cli客户端,有需要的可以在集群任意节点安装,不限制。
  先对presto-cli命令赋予权限,在/usr/local/目录下执行如下命令。

chmod +x ./presto-cli

  在/usr/local/目录下执行如下命令,启动presto-cli的客户端。

./presto-cli --server 10.166.50.231:8080 --catalog cassandra --schema test

  catalog对应数据源,schema对应数据库实例,结果如下图4所示。


图4 presto-cli启动成功界面

3.3.2、查询数据

  在presto-cli打开的查询界面输入以下命令,结果如图5所示。至此presto成功部署在集群上并连接上了cassandra数据库。

select * from emp;

图5 presto成功安装部署界面

如果您觉得有用,希望转发给更多需要的人

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266