创建MySQL实例:
设置 SequoiaSQL-MySQL 实例程序权限为可执行:chmod +x sequoiasql-mysql-3.4-linux_x86_64-installer.run
创建myinst实例:/opt/sequoiasql/mysql/bin/sdb_sql_ctl addinst myinst -D database/3306/

配置参数有三种修改方式:

  • 使用工具 sdb_sql_ctl 修改配置,配置生效需重新启动 MySQL 服务。例如: bin/sdb_sql_ctl chconf myinst --sdb-auto-partition=OFF
  • 修改实例数据目录下的配置文件 auto.cnf,在 [mysqld] 下添加/更改对应配置项,配置生效需重新启动 MySQL 服务。例如: sequoiadb_auto_partition=OFF
  • 通过 MySQL 命令行修改,配置临时有效,当重启MySQL服务后配置将失效。例如: SET GLOBAL sequoiadb_auto_partition=OFF ;
  • 详情:MySQL实例配置
    启动mysql:/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root
    在SequoiaDB中:
    查看存储引擎中的集合信息:db.list(SDB_LIST_COLLECTIONS);

创建postgreSQL实例:
创建PostgreSQL实例:/opt/sequoiasql/postgresql/bin/sdb_sql_ctl addinst myinst -D database/5432
启动PostgreSQL实例:/opt/sequoiasql/postgresql/bin/sdb_sql_ctl start myinst
检查创建的实例状态:/opt/sequoiasql/postgresql/bin/sdb_sql_ctl status
进入SequoiaDB:
创建company_domain逻辑域:db.createDomain("company_domain", [ "group1", "group2", "group3" ], { AutoSplit: true } );
创建company集合空间:db.createCS("company", { Domain: "company_domain" } );
创建employee集合:db.company.createCL("employee", {"ShardingKey": { "_id": 1}, "ShardingType": "hash", "ReplSize": -1, "Compressed": true, "CompressionType": "lzw", "AutoSplit": true, "EnsureShardingIndex": false } );
插入数据:

 db.company.employee.insert( { "empno": 1, "ename": "Georgi", "age": 48 } );
db.company.employee.insert( { "empno": 2, "ename": "Bezalel", "age": 21 } );

创建company数据库:/opt/sequoiasql/postgresql/bin/sdb_sql_ctl createdb company myinst
进入PostgreSQL shell:/opt/sequoiasql/postgresql/bin/psql -p 5432 company
加载SequoiaDB连接驱动:create extension sdb_fdw
配置与SequoiaDB连接参数:CREATE SERVER sdb_server FOREIGN DATA WRAPPER sdb_fdw OPTIONS (address '127.0.0.1', service '11810', preferedinstance 'A', transaction 'on');

  • 如果需要提供多个协调节点地址,options 中的 address 字段可以按格式 'ip1:port1,ip2:port2,ip3:port3’填写。此时,service 字段可填写任意一个非空字符串
  • preferedinstance 设置 SequoiaDB 的连接属性。多个属性以逗号分隔,如:preferedinstance ‘1,2,A’。详细配置请参考 preferedinstance 取值
  • transaction 设置 SequoiaDB 是否开启事务,默认为off。开启为on 更多 SequoiaDB 连接参数说明请参考 PostgreSQL 实例连接
    创建company数据库外表:
CREATE FOREIGN TABLE employee
(empno INTEGER, ename TEXT,age INTEGER
) SERVER sdb_server
OPTIONS (collectionspace 'company', collection 'employee', decimal 'on');
  • collectionspace 参数指定 SequoiaDB 数据库的集合空间名,该集合空间必须已经存在
  • collection 参数指定 SequoiaDB 数据库的集合名,该集合必须已经存在且属于 collectionspace 参数所指定的集合空间
  • decimal 参数值为 on 时,表示需要对接 SequoiaDB 的decimal字段 更多 PostgreSQL 实例外表创建参数请参考 PostgreSQL 实例连接
    更新表的统计信息:ANALYZE employee;

创建SparkSQL实例
连接MySQL实例:/opt/sequoiasql/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root
创建metauser用户:CREATE USER 'metauser'@'%' IDENTIFIED BY 'metauser';
给metauser用户授权:GRANT ALL ON *.* TO 'metauser'@'%';
刷新权限:FLUSH PRIVILEGES;
创建元数据库:CREATE DATABASE metastore CHARACTER SET 'latin1' COLLATE 'latin1_bin';

执行 ssh-keygen 生成公钥和密钥,执行后连续回车即可:ssh-keygen -t rsa
执行 ssh-copy-id,把公钥拷贝到本机的 sdbadmin 用户:ssh-copy-id sdbadmin@sdbserver1
进行Spark的配置目录:cd /opt/spark-2.4.4-bin-hadoop2.7/conf
从模板中拷贝spark-env.sh文件:cp spark-env.sh.template spark-env.sh
设置Spark实例的Master:echo "SPARK_MASTER_HOST=sdbserver1" >> spark-env.sh
指定Spark实例的元数据信息存放的数据库信息。
创建设置元数据库配置文件 hive-site.xml

cat > /opt/spark-2.4.4-bin-hadoop2.7/conf/hive-site.xml << EOF
<configuration><property><name>hive.metastore.schema.verification</name><value>false</value></property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/metastore?useSSL=false</value><description>JDBC connect string for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>metauser</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>metauser</value></property><property><name>datanucleus.autoCreateSchema</name><value>true</value><description>creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once</description></property>
</configuration>
EOF

检查是否创建成功:cat /opt/spark-2.4.4-bin-hadoop2.7/conf/hive-site.xml

拷贝相关驱动:
用户只要将 SequoiaDB for Spark 连接器 spark-sequoiadb_2.11-3.4.jar 和 SequoiaDB 的 Java 驱动 sequoiadb-driver-3.4.jar 加入 Spark 的 jar 目录即可,另外本示例使用了 MySQL 作为元数据存储数据库,也需要加入 MySQL 的 Java 驱动 mysql-jdbc.jar。
拷贝spark-sequoiadb_2.11-3.4.jar驱动连接器:cp /opt/sequoiadb/spark/spark-sequoiadb_2.11-3.4.jar /opt/spark-2.4.4-bin-hadoop2.7/jars/
拷贝 SequoiaDB 的 java 驱动 sequoiadb-driver-3.4.jar:cp /opt/sequoiadb/java/sequoiadb-driver-3.4.jar /opt/spark-2.4.4-bin-hadoop2.7/jars/
拷贝 MySQL 的 java 驱动 mysql-jdbc.jar:cp /home/sdbadmin/soft/mysql-jdbc.jar /opt/spark-2.4.4-bin-hadoop2.7/jars/

设置Spark日志级别:
由于 Spark 默认日志级别为 INFO ,运行 spark-sql 客户端时会打印大量日志输出屏幕,为了避免这个问题把日志级别改为 ERROR。
拷贝 log4j.properties:cp log4j.properties.template log4j.properties
log4j.properties 中设置日志级别:sed -i 's/log4j.rootCategory=INFO, console/log4j.rootCategory=ERROR, console/g' log4j.properties
检查日志输出配置是否成功:cat log4j.properties

测试SparkSQL实例:
进入 Spark 的安装目录:cd /opt/spark-2.4.4-bin-hadoop2.7
启动 Spark:sbin/start-all.sh
查看 Spark 的 master 和 worker 是否启动完成:jps
启动 spark-sql 客户端:bin/spark-sql
创建company数据库:create database company; use company;
创建映射表:

CREATE TABLE company.employee
(
empno INT,
ename STRING,
age INT
) USING com.sequoiadb.spark OPTIONS (host 'localhost:11810', collectionspace 'company', collection 'employee', username '', password '');

测试运行sql:SELECT AVG(age) FROM company.employee;

PostgreSQL实例访问数据:
创建company数据库:/opt/sequoiasql/postgresql/bin/sdb_sql_ctl createdb company myinst
进入PostgreSQL shell:/opt/sequoiasql/postgresql/bin/psql -p 5432 company
加载SequoiaDB连接驱动:CREATE EXTENSION sdb_fdw;
配置与SequoiaDB连接参数:

CREATE SERVER sdb_server FOREIGN DATA WRAPPER sdb_fdw OPTIONS
(
address '127.0.0.1',
service '11810',
preferedinstance 'A',
transaction 'off'
);
  • 如果需要提供多个协调节点地址,options 中的 address 字段可以按格式 'ip1:port1,ip2:port2,ip3:port3’填写。此时,service 字段可填写任意一个非空字符串
  • preferedinstance 设置 SequoiaDB 的连接属性。多个属性以逗号分隔,如:preferedinstance ‘1,2,A’。详细配置请参考 preferedinstance 取值
  • transaction 设置 SequoiaDB 是否开启事务,默认为off。开启为on 更多 SequoiaDB 连接参数说明请参考 PostgreSQL 实例连接
    创建company数据库外表:

关联存储引擎中的集合:
创建company数据库外表:

CREATE FOREIGN TABLE employee
(empno INTEGER, ename TEXT,age INTEGER
) SERVER sdb_server
OPTIONS (collectionspace 'company', collection 'employee', decimal 'on');
  • collectionspace 参数指定 SequoiaDB 数据库的集合空间名,该集合空间必须已经存在
  • collection 参数指定 SequoiaDB 数据库的集合名,该集合必须已经存在且属于 collectionspace 参数所指定的集合空间
  • decimal 参数值为 on 时,表示需要对接 SequoiaDB 的decimal字段 更多 PostgreSQL 实例外表创建参数请参考 PostgreSQL 实例连接

更新表的统计信息:ANALYZE employee;

SparkSQL实例中访问数据:

创建映射表:

CREATE TABLE company.employee
(
empno INT,
ename STRING,
age INT
) USING com.sequoiadb.spark OPTIONS (host 'localhost:11810', collectionspace 'company', collection 'employee', username '', password '');

运行测试sql:SELECT AVG(age) FROM company.employee;

创建S3对象存储实例:
配置巨杉数据库事务级别:

设置事务级别及配置为等锁模式:
db.updateConf( { transactionon: true, transisolation: 1, translockwait: true } );

配置SequoiaS3:
进入SequoiaS3程序目录:cd /opt/sequoiadb/tools/sequoias3
配置 SequoiaS3,打开 config 目录中的 application.properties 文件:cat config/application.properties
增加以下内容至 application.properties 文件,配置对外监听端口:echo "server.port=8002" >> /opt/sequoiadb/tools/sequoias3/config/application.properties
增加以下内容至 application.properties 文件,配置 coord 节点的 IP 和端口,可以配置多组并使用逗号分隔:echo "sdbs3.sequoiadb.url=sequoiadb://localhost:11810" >> /opt/sequoiadb/tools/sequoias3/config/application.properties

SequoiaS3配置

启动S3实例:
启动SequoiaS3:./sequoias3.sh start
Note: 如需停止 SequoiaS3 进程,执行 stop -p {port} 停止监听指定端口的 SequoiaS3 进程,或执行 stop -a 停止所有 SequoiaS3 进程:./sequoias3.sh stop -p 8002

操作bucket及文件对象:
在本例中将使用 curl restful 方式来测试 s3 接口。
创建存放数据文件的目录 /home/sdbadmin/s3:mkdir -p /home/sdbadmin/s3
进入目录:cd /home/sdbadmin/s3

创建同sdbbucket:
在 shell 环境中设置变量及相关值:

bucket="sdbbucket"
dateValue=`date -R`
resource="/${bucket}/"
contentType="application/octet-stream"
stringToSign="PUT\n\n\n${dateValue}\n${resource}"
s3Key="ABCDEFGHIJKLMNOPQRST"
s3Secret="abcdefghijklmnopqrstuvwxyz0123456789ABCD"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`

使用 curl 创建一个 sdbbucket:curl -v -X PUT "http://localhost:8002/${bucket}" -H "Host: localhost:8002" -H "Date: ${dateValue}" -H "Authorization: AWS ${s3Key}:${signature}"

获取S3中的sdbbucket信息:
使用 curl 获取上个小节创建的 sdbbucket 的信息:curl -v -X GET "http://localhost:8002" -H "Host: localhost:8002" -H "Date: ${dateValue}" -H "Authorization: AWS ${s3Key}:${signature}"

向桶中写入文件:
查看 /opt/sequoiadb/bin/sdb 文件的信息:ls -l /opt/sequoiadb/bin/sdb
在 shell 环境中设置变量及相关值:

file="/opt/sequoiadb/bin/sdb"
objname="sdb"
bucket=sdbbucket
url="localhost:8002"
resource="/${bucket}/${objname}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"
s3Key="ABCDEFGHIJKLMNOPQRST"
s3Secret="abcdefghijklmnopqrstuvwxyz0123456789ABCD"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`

使用 curl 向 sdbbucket 中写入文件 sdb,在 S3 中的名称是 sdb:curl -X PUT -T "${file}" -H "Host: ${url}" -H "Date: ${dateValue}" -H "Content-Type: ${contentType}" -H "Authorization: AWS ${s3Key}:${signature}" "http://${url}/${bucket}/${objname}"

从桶中下载文件:
使用 curl 从 sdbbucket 中读取文件对象"sdb",并存放到当前目录,保存的文件名为"sdb_download"。

在 shell 环境中设置变量及相关值:

file="./sdb_download"
objname="sdb"
bucket=sdbbucket
url="localhost:8002"
resource="/${bucket}/${objname}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="GET\n\n${contentType}\n${dateValue}\n${resource}"
s3Key="ABCDEFGHIJKLMNOPQRST"
s3Secret="abcdefghijklmnopqrstuvwxyz0123456789ABCD"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`

使用 curl 从 sdbbucket 中下载文件:curl -o ${file} -X GET -H "Host: ${url}" -H "Date: ${dateValue}" -H "Content-Type: ${contentType}" -H "Authorization: AWS ${s3Key}:${signature}" "http://${url}/${bucket}/${objname}"

观察S3元数据:
查看创建的“sdbbucket” bucket的元数据:db.S3_SYS_Meta.S3_Bucket.find();
查看上载的文件的元数据:db.S3_SYS_Meta.S3_ObjectMeta.find();
文件对象所在的集合,这个集合由 S3 实例自动创建,并且默认按照每年每个季度分表,及每个季度产生一个新的Collection:
db.S3_SYS_Data_2020_1.S3_ObjectData_Q1.listLobs();

在S3实例中删除文件和桶:
在 shell 环境中设置变量及相关值:

objname="sdb"
bucket=sdbbucket
url="localhost:8002"
resource="/${bucket}/${objname}"
contentType="application/x-compressed-tar"
dateValue=`date -R`
stringToSign="GET\n\n${contentType}\n${dateValue}\n${resource}"
s3Key="ABCDEFGHIJKLMNOPQRST"
s3Secret="abcdefghijklmnopqrstuvwxyz0123456789ABCD"
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`

使用 curl 命令 删除 sdbbucket 中的文件对象"sdb":curl -X DELETE -H "Host: ${url}" -H "Date: ${dateValue}" -H "Content-Type: ${contentType}" -H "Authorization: AWS ${s3Key}:${signature}" "http://${url}/${bucket}/${objname}"
使用 curl 命令,从 SequoiaS3 中删除桶"sdbbucket":curl -X DELETE -H "Host: ${url}" -H "Date: ${dateValue}" -H "Content-Type: ${contentType}" -H "Authorization: AWS ${s3Key}:${signature}" "http://${url}/${bucket}"

创建NFS网络文件系统实例:
查看fuse的版本信息:fusermount --version
查看 SequoiaFS 实例程序:ls -lrt /opt/sequoiadb/bin/sequoiafs
创建集合空间和集合:
创建逻辑域:db.createDomain("fs_domain", [ "group1", "group2", "group3" ], { AutoSplit: true } );
创建集合空间:db.createCS("fscs", { Domain: "fs_domain" } );
创建 fscl 集合,存储挂载目录下文件的内容:db.fscs.createCL("fscl", { "ShardingKey": { "_id": 1}, "ShardingType": "hash", "ReplSize": -1, "Compressed": true, "CompressionType": "lzw", "AutoSplit": true, "EnsureShardingIndex": false } );
创建挂载点及配置文件:

创建挂载点mountpoint:mkdir -p /opt/sequoiafs/mountpoint
创建 SequoiaFS 的配置文件目录和日志目录:

mkdir -p /opt/sequoiafs/conf/fscs_fscl/001/
mkdir -p /opt/sequoiafs/log/fscs_fscl/001/

产生一个空配置文件,SequoiaFS 服务在启动时会将指定的值写入该文件中,其他参数使用缺省值:touch /opt/sequoiafs/conf/fscs_fscl/001/sequoiafs.conf

sequoiafs /opt/sequoiafs/mountpoint -i localhost:11810 -l fscs.fscl --autocreate -c /opt/sequoiafs/conf/fscs_fscl/001/ --diagpath /opt/sequoiafs/log/fscs_fscl/001/ -o big_writes -o max_write=131072 -o max_read=131072

sequoiaFS实例参数配置
查看挂载目录:
本地 SequoiaFS 节点通过 mount 可以看到挂载信息。通过 sequoiafs 挂载上的 /opt/sequoiafs/mountpoint 目录,文件系统类型为 fuse.sequoiafs:mount

查看 SequoiaFS 实例在 SequoiaDB 存储引擎存储的挂载信息:db.sequoiafs.maphistory.find();

挂载目录下文件和目录操作:本章节将创建 fsdir 目录和 fsfile.txt 文件用于作为 SequoiaFS 实例的测试例子。

创建目录:
进入挂载目录:cd /opt/sequoiafs/mountpoint/
创建目录:mkdir fsdir

创建文件并写入内容:
进入新建的 fsdir 目录:cd /opt/sequoiafs/mountpoint/fsdir
使用echo重定向内容创建文件:echo 'hello, this is a fsfile!' >> fsfile.txt
查看文件内容是否存在:cat fsfile.txt



SequoiaDB实例管理相关推荐

  1. mysql实例管理工具巨杉_实例管理工具_操作_MySQL实例_关系型数据库实例_文档中心_SequoiaDB巨杉数据库...

    实例管理工具 sdb_mysql_ctl 是 MySQL 实例组件的管理工具.用户通过 sdb_mysql_ctl 既可以初始化.启动和停止实例,也可以修改实例的引擎配置参数. 参数说明 参数 描述 ...

  2. oracle实例文件,ORACLE实例管理之参数文件

    第四章  实例管理 4.1 参数文件 4.1.1 spfile Server parameter file: spfile   数据库服务运行过程中自动维护的参数文件  oracle9i以后新引入的 ...

  3. Elasticsearch 实例管理在京东的使用场景及演进之路

    Elasticsearch 是一个开源的分布式 RElasticsearchTful 搜索引擎,作为一个分布式.可扩展.实时的搜索与数据分析引擎,它可以快速存储.搜索和分析大量数据.同时,Elasti ...

  4. WCF - 服务实例管理模式

    WCF 提供了三种实例上下文模式:PreCall.PreSession 以及 Single.开发人员通过 ServiceBehavior.InstanceContextMode 就可以很容易地控制服务 ...

  5. MYSQLMANAGER实例管理器总结

    好久没有写文章了,今天来看看MYSQL的实例管理器(MYSQLMANAGER). 一.简单介绍: 1.MySQL实例管理器(IM)是通过TCP/IP端口运行的后台程序,用来监视和管理MySQL数据库服 ...

  6. Docker容器网络实例管理

    Docker容器网络实例管理 Linux内核实现名称空间的创建 ip netns命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作.ip netns命令来自于i ...

  7. AWS EC2实例管理

    AWS EC2实例管理 针对近期学习的AWS EC2实例进行知识归纳与总结,欢迎家人们指正错误!ψ(`∇´)ψ AWS:亚马逊网络服务平台(亚马逊云服务平台)(Amazon Web Service) ...

  8. Oracle 实例管理

    Oracle实例(instance)是一组Oracle后台进程和内存结构的集合.后台进程主要包括SMON,  PMON, DBWR, CKPT 和 LGWR 等:内存结构包括数据库高速缓冲区.重做日志 ...

  9. SequoiaDB的MySQL实例管理

    创建MySQL实例: 添加实例:/opt/sequoiasql/mysql/bin/sdb_sql_ctl addinst myinst -D database/3306/ 查看实例:/opt/seq ...

最新文章

  1. 获取用户电脑的上网IP地址
  2. TensorFlow图像分类:如何构建分类器
  3. linux mysql jdk路径_教大家在如何Centos7系统中安装JDK、Tomcat、Mysql(文末附马哥linux全套视频教......
  4. 广域网一般采用什么网络拓扑结构?—Vecloud
  5. dfmea文件_DFMEA和PFMEA的“六步法”其实很不一样
  6. POJ 1293 - Duty Free Shop 01背包记录所选物品
  7. MapReduce算法–顺序反转
  8. 北京活动预告丨来ACOUG 年会过个温暖的冬天吧!
  9. linux系统查看服务进程,Linux服务器系统详细查看进程启动时间
  10. Python UnicodeEncodeError: ‘gbk‘ codec can‘t encode character 解决方法
  11. 未来计算机二级软件vc,江苏省计算机二级VC++上机模拟软件
  12. 服务器配置Token验证失败
  13. STM32驱动直流电机的程序与电路设计(IR2110S自举电路+H桥+高级定时器和死区PWM)
  14. Flowable 流程实例
  15. kvm直通sata_将双系统塞入A4主机:OSX-KVM 显卡直通教程
  16. BMC-IPMB specification
  17. 计算机行业职业名称英语,行业英语学习
  18. 安卓app开发工具_四川智慧社区安卓手机app开发多少钱
  19. CVE-2018-5767 Tenda路由器栈溢出漏洞复现
  20. Docker集群(一) —— Docker网络及flannel介绍

热门文章

  1. 我才不愿做那个任人欺负的人
  2. 关于poi解析word 2007版docx问题
  3. IPC机制(二)--->Binder简介
  4. 浅谈幅度调制(Amplitude Modulation)
  5. python 百度翻译 有道翻译
  6. 控制理论与应用latex模板用texlive
  7. DEVC++实现火柴人跑酷游戏
  8. UVa 10190 - Divide, But Not Quite Conquer!
  9. 为什么安装了python在 cmd不显示_CMD提示Python不是内部或外部命令的解决方法
  10. Springboot秒杀系统(乐观锁+RateLimiter令牌+Redis缓存)