集群搭建
1. 安装Centos7虚拟机
1.1 虚拟机下载地址
http://mirrors.aliyun.com/centos/7/isos/x86_64/
http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
1.2 cnetos7安装参考
https://blog.csdn.net/qq_44714603/article/details/88829423
1.3 其他机器直接通过克隆就行
2. 虚拟机集群配置网络
2.1 设置虚拟机网络
选择虚拟机右击--》网络适配器--》NAT模式
2.2 配置虚拟网络
2.2.1 点击编辑旋转虚拟机网络编辑
2.2.2 选择VMnet8
2.2.3 选择NAT模式并勾选
2.2.4 对NAT模式进行设置(这个对虚拟机网络设置很关键)
这里关键看网络设置
2.2.5 对DHCP进行设置(默认就行)
3. 启动虚拟机设置网络配置
修改 ifcfg-ens33文件(不同版本的系统对应文件的文件名可能不同)
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
YPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #将DHCP修改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=41672a30-24c4-4f3a-b617-3317514c78c1
DEVICE=ens33
ONBOOT=yes #将no改为yes
IPADDR=192.168.186.183 #设置虚拟机IP地址,必须在同一个子网,其他机器就改成其他地址
GATEWAY=192.168.186.2 #网关
NETMASK=255.255.255.0 #子网掩码
DNS1=192.168.186.2 #也可以用8.8.8.8
4. 设置hostname并设置主机名与IP映射
# hostname sdbserver1 //每个机器都需要这个操作
# vi /etc/hostname //在文件中设置删除内容加上 sdbserver1
# vi /etc/hosts //主机名与ip映射 在文件末加入
//192.168.186.183 sdbserver1
//192.168.186.184 sdbserver2
//192.168.186.185 sdbserver3
5. 禁用防火墙
# systemctl stop firewalld.service #关闭防火墙 start/status
# systemctl disable firewalld.service #禁用防火墙
6. 安装Sequoiadb
6.1 将安装包拷贝到各虚拟机(可使用winscp连接虚拟机上传文件也可使用U盘挂载)
上传到其他服务器
# scp sequoiadb-3.4-linux_x86_64.tar.gz root@主机名:/root```
### 6.2 解压并赋权限###
tar -zxvf sequoiadb-3.4-linux_x86_64-installer.tar.gz
chmod u+x sequoiadb-3.4-linux_x86_64-installer.run
### 6.3 安装sequoiadb###
./sequoiadb-3.4-linux_x86_64-installer.run --mode text --SMS false
说明:可直接默认(回车)
### 6.4 创建临时协调节点###
6.4.1 切换为sdbadmin用户
su sdbadmin
6.4.2 查看sequoiaDB服务是否启动
service sdbcm status #查看服务状态
service sdbcm start #启动服务
6.4.3 创建协调节点 /opt/sequoiadb目录下
$ cd /opt/sequoiadb/bin
$ ./sdb #启动SequoiaDB Shell控制台
var oma =new Oma("localhost",11790) #连接到本地的集群管理服务进程 sdbcm
oma.createCoord(18800,"/opt/sequoiadb/database/tmp/coord/18800") #创建临时协调节点
oma.startNode(18800)
6.5 配置并启动编目节点
> var db = new Sdb("localhost",18800) #获取临时协调节点
db.createCataRG("sdbserver1", 11800, "/opt/sequoiadb/database/cata/11800") #创建编目节点组
#创建另外两个编码节点(副本)
> var rg = db.getRG(1) #???(这个不是因为分区吗,怎么就确定是1?是不是编码节点在当前机器就为1,)
var node = rg.createNode("sdbserver2", 11800, "/opt/sequoiadb/database/cata/11800")
node.start() #启动
node = rg.createNode("sdbserver3", 11800, "/opt/sequoiadb/database/cata/11800")
node.start() #启动
6.6 创建数据节点组
> var dataRG = db.createRG("datagroup")
> #添加数据节点
> dataRG.createNode("sdbserver1", 11820, "/opt/sequoiadb/database/data/11820")
> dataRG.createNode("sdbserver2", 11820, "/opt/sequoiadb/database/data/11820")
> dataRG.createNode("sdbserver3", 11820, "/opt/sequoiadb/database/data/11820")
> dataRG.start() #启动
6.7 创建协调节点###
> var rg = db.createCoordRG()
> rg.createNode("sdbserver1", 11810, "/opt/sequoiadb/database/coord/11810")
> rg.createNode("sdbserver2", 11810, "/opt/sequoiadb/database/coord/11810")
> rg.createNode("sdbserver3", 11810, "/opt/sequoiadb/database/coord/11810")
> rg.start() #启动协调节点
6.8 删除临时协调节点
> oma.removeCoord(18800)
7. 添加集群间信任关系
# su sdbadmin //在该用户下
$ cd ~ //进入用户目录
$ ssh-keygen -t rsa //每台机器上都需要执行
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //第一台机器上操作
$ chmod 600 ~/.ssh/authorized_keys //第一台上操作
$ scp ~/.ssh/authorized_keys sdbadmin@sdbserver2:~/.ssh/ //同上
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //第二台上操作
$ scp ~/.ssh/authorized_keys sdbadmin@sdbserver3:~/.ssh/ //同上
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //第3台上操作
$ scp ~/.ssh/authorized_keys sdbadmin@sdbserver1:~/.ssh/ //同上
$ scp ~/.ssh/authorized_keys sdbadmin@sdbserver2:~/.ssh/ //同上
在启动Spark才发现这里的信任关系是在Root权限下
8. 安装JDK
8.1 JDK版本
1.8及其以上
8.2 将JDK拷贝到虚拟机并传送到其他虚拟机上(参考前面的相关操作)
8.3 在/etc/profile末文件中加入###
# vi /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_181
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
8.4 使配置文件生效
# source /etc/profile
# java -version //显示JDK版本则表示JDK安装成功
问题
由于起初未删除centos系统自带的OpenJDK导致自己安装的JDK不能使用
解决:卸载OpenJDK
# rpm -qa|grep jdk //查看系统有rpm安装的JDK
# rpm -e --nodeps //卸载所有关于OpenJDK的东西
9. 安装Spark实例(使用SparkStanderAlone部署)
9.1 Spark下载
# wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz
###9.2 解压###
# tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz
9.3 修改Sprak配置
9.3.1 配置spark-env.sh
# cd spark-2.4.5-bin-hadoop2.7/conf
# cp cp spark-env.sh.template spark-env.sh
# vi spark-env.sh //将下面的配置进入到配置文件中
SPARK_MASTER_PORT="7077"
SPARK_MASTER_WEBUI_PORT="8080"
SPARK_MASTER_IP="sdbserver1"
SPARK_WORKER_INSTANCES="1"
MASTER="spark://${SPARK_MASTER_IP}:${SPARK_MASTER_WEBUI_PORT}"
SPARK_WORKER_MEMORY="1g"
SPARK_WORKER_CORES="1"
export JAVA_HOME="/usr/java/jdk1.8.0_231"
9.3.1.1 将配置信息拷贝到其他机器上
# scp spark-env.sh root@sdbserver2:/root/spark-2.4.5-bin-hadoop2.7/conf/
# scp spark-env.sh root@sdbserver3:/root/spark-2.4.5-bin-hadoop2.7/conf/```
9.3.2 配置slaves
# cp slaves.template slaves
# vi slaves //删除localhost,加入
sdbserver1
sdbserver2
sdbserver3
9.3.2.1 将配置信息拷贝到其他机器上
# scp slaves sdbserver2:/root/spark-2.4.5-bin-hadoop2.7/conf/
# scp slaves sdbserver3:/root/spark-2.4.5-bin-hadoop2.7/conf/
9.4 Sequoiadb与Spark链接
# cd /root/spark-2.4.5-bin-hadoop2.7/
# cp /opt/sequoiadb/spark/spark-sequoiadb_2.11-3.4.jar jars/
# cp /opt/sequoiadb/java/sequoiadb-driver-3.4.jar jars/
10. 安装PostgreSQL
在root用户下安装PostgreSQL
10.1 切换到sequoiadb-3.4安装包下
确认PostgreSQL版本是否与sequoiadb版本匹配
10.2 安装PostgreSQL
使用命令的方式安装
# ./sequoiasql-postgresql-3.2-x86_64-enterprise-installer.run --mode text
后面的操作可以直接默认 回车
10.3 部署PostgreSQL实例
10.3.1 检查5432端口是否被占用
# netstat -nap | grep 5432
10.3.2 创建实例相关操作
# su sdbadmin
$ cd /opt/sequoiasql/postgresql
//创建实例
$ bin/sdb_sql_ctl addinst myinst -D database/5432/
//若5432端口被占用,则指定端口用下面这条命令
$ bin/sdb_sql_ctl addinst myinst -D database/5442/ -p 5442
$ bin/sdb_sql_ctl listinst //查看创建的实例列表
$ bin/sdb_sql_ctl start myinst //启动实例进程
$ bin/sdb_sql_ctl status //查看实例状态
//查看对应启动实例端口是否启动成功
# netstat -nap|grep 5432
//创建sdbsql-pgSQL的数据库
$ bin/sdb_sql_ctl createdb db1 myinst
$ bin/psql -p 5432 db1 //进入shell环境
10.3.2 其他相关命令
实例默认交由sequoiasql-postgresqlx系统服务所管理
$ bin/sdb_sql_ctl delfromsvc myinst //不然系统服务管理
//或在创建时指定
$ bin/sdb_sql_ctl addinst myinst -D database/5432/ --addtosvc=false
//将服务交由系统管理
$ bin/sdb_sql_ctl addtosvc myinst
//查看服务
service sequoiasql-postgresql status|start|stop
10.4 卸载
$ /opt/sequoiasql/postgresql/uninstall //不会删除数据
11. 安装MySQL
使用root用户
11.1 到mysql安装包
查看版本是否匹配
11.2 安装
# ./sequoiasql-mysql-3.2-linux_x86_64-enterprise-installer.run --mode text
之后的提示直接默认就行
问题整理
创建数据节点组启动失败
> dRG.start()
(shell):1 uncaught exception: -156
Failed to start the node:
Do command[active group, targe:datagroup] failed, detail: { "HostName": "sdbserver1", "svcname": "11820", "errno": -11 }{ "HostName": "sdbserver2", "svcname": "11820", "errno": -11 }
原因:根目录空间占用100%
1. 网上提示杀deleted进程,使用kill -9 pid 会发现根本不能成功
2. 删文件,这个对于新安装的系统来说不适用
3. 根目录扩容。这个是最直接的方式
根目录扩容
a. 首先需要选择虚拟机先将其磁盘大小设置一下
b. 启动虚拟机使用root用户
# fdisk -l //看磁盘分区
# fdisk /dev/sda //新建分区 后接n p w
c. 设置分区为LVM
# fdisk /dev/sda //新建分区 后接t 3 8e w
d. 重启系统不然下面操作不能成功 reboot重启
e. 重启后:创建Linux文件系统
# mkfs -t ext3 /dev/sda3
f. 查看信息,可跳过
lvs
g. 将物理硬盘分区初始化为物理卷
# pvcreate /dev/sda3
h. 向centos卷组中添加物理卷
# vgextend centos sda3
i. 产看物理卷组的信息,看能扩展的空间大小
# vgdisplay
j. 显示物理卷属性
# lvdisplay
留意 LV Path的值
k. 扩展逻辑卷空间
这里的 +6G 根据vgdispaly来的,超过了那个值是不能成的; /dev/centos/root 是LV Path 对应的值
# lvextend -L +6G /dev/centos/root /dev/sda3
l. 将物理银盘分区初始化为物理卷
# xfs_growfs /dev/centos/root
m. 再次查看根目录扩展成功
# df -h
- Spark启动后服务问题
解决:配置写错误
//原
SPARK_MASTER_HOST="7077"
SPARK_MASTER_WEBUI_PORT="8080"
SPARK_MASTER_IP="sdbserver1"
SPARK_WORKER_INSTANCES="1"
MASTER="spark://${SPARK_MASTER_IP}:${SPARK_MASTER_HOST}"
SPARK_WORKER_MEMORY="1g"
SPARK_WORKER_CORES=1
export JAVA_HOME="/usr/java/jdk1.8.0_231"
//改
SPARK_MASTER_PORT="7077"
SPARK_MASTER_WEBUI_PORT="8080"
SPARK_MASTER_IP="sdbserver1"
SPARK_WORKER_INSTANCES="1"
MASTER="spark://${SPARK_MASTER_IP}:${SPARK_MASTER_WEBUI_PORT}"
SPARK_WORKER_MEMORY="1g"
SPARK_WORKER_CORES="1"
export JAVA_HOME="/usr/java/jdk1.8.0_231"