Skip to content

做了一个数据实时同步es 的功能,简单改了几个配置就可以,在申请向官方合并,不过感觉希望不大。毕竟做这块的人太多了。

License

Notifications You must be signed in to change notification settings

xiaodizi/cassandra

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Apache Cassandra

Apache Cassandra 是一个高度可伸缩的分区行存储。行用主键key组织成表.

Partitioning 的意思是Cassandra可以在应用程序透明的情况下将数据分布到多台机器上。 Cassandra 将在添加和从集群中删除机器时自动重新分区。

Row store 的意思是就像关系数据库一样, Cassandra 按行和列组织数据。 Cassandra查询语言(CQL)是SQL的近亲。

查看更多信息, 请查看 the Apache Cassandra web site.

这个项目要做什么?

目前是个镜像项目,好多内容还在看,不知道会做些什么,以后做什么,文档里会说。

跟官方比源码修改内容

  1. 注释掉了一些cassandra需要去官方下载一些文件的代码,改为直接读取本地的文件。

  2. 修改了FileAuditLogger写入sql带有换行符,导致数据不是一条的问题。

  3. 默认分发包配置会自动打开FileAuditLogger

  4. v4.1.1.1 分支修改了AuditLogger数据直接发送写入elasticsearch。表对应es的索引。

  5. v4.1.1.1 分支在cassandra.yaml 增加 配置 es_node_listhttps://xxx 配置交换数据的es集群节点的9200端口服务地址。

  6. v4.1.1.1 完善了数据写入 elasticsearch 的逻辑 测试数据

  7. v4.1.1.3 cassandra.yaml 增加 配置,配置哪些表需要同步到elasticsearch

  8. v4.1.1.3 修改同步到elasticsearch 的索引名称为 keyspace+"-"+表名

  9. v4.1.1.6 这个版本完全是为了集成到 opensearch 里边做的修改,作为 opensearch 的一个子项目。单独使用慎用。

  10. v4.1.1.8 版本 去掉了 sync_keyspace:sync_es_table: 两个配置,增加表属性 WITH syncEs=true;。但是这个配置写在内存,服务重启后需要重新写入。 第二是在创建表的时候,会主动向elasticsearch 创建 索引,获取elasticsearch 集群节点数量,平均分配主分片和副本数量,保证所有的分片均衡分配到所有节点上。

安装要求

. Java >= 1.8 (OpenJDK and Oracle JVMS have been tested)
. Python 3.6+ (for cqlsh)

如何开始

这个简短的指南将引导您完成一个基本的单节点集群 和运行, 并演示一些简单的读写。 有关更完整的指南,请参阅 Apache Cassandra website’s Getting Started Guide.

首先,解压压缩文件:

  $ tar -zxvf apache-cassandra-$VERSION.tar.gz
  $ cd apache-cassandra-$VERSION
之后可以直接运行服务, 使用 -f 参数运行启动脚本,Cassandra 将运行前台,控制台会输出标准日志; 如果想停止它可以使用 ctrl-C.
  $ bin/cassandra -f
现在让我们尝试使用Cassandra查询语言读取和写入一些数据:
  $ bin/cqlsh
命令行客户端是交互式的,如果没有什么问题,大概是这个样子的:
Connected to Test Cluster at localhost:9160.
[cqlsh 6.0.0 | Cassandra 4.1 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
cqlsh>

可以使用"help;"或者"?",看看CQL都能做什么。 如果要退出,可以使用"quit;"或者"exit";

下边就是个单节点启动的例子,左边是 -f 参数启动界面,右边是CQL的界面。

1

接下来尝试写入一些测试数据

cqlsh> CREATE KEYSPACE schema1
       WITH replication = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
cqlsh> USE schema1;
cqlsh:Schema1> CREATE TABLE users (
                 user_id varchar PRIMARY KEY,
                 first varchar,
                 last varchar,
                 age int
               );
cqlsh:Schema1> INSERT INTO users (user_id, first, last, age)
               VALUES ('jsmith', 'John', 'Smith', 42);
cqlsh:Schema1> SELECT * FROM users;
 user_id | age | first | last
---------+-----+-------+-------
  jsmith |  42 |  john | smith
cqlsh:Schema1>

写入数据的操作界面大概就是下图这个样子的。

2

如果没有出现其他问题,那么一个单节点的安装就完成了!

有关CQL的更多的信息, 可以查看 the CQL reference

一种合理的理解方式是,"SQL减去连接和子查询,加上集合。"

Cassandra 集群,几个关键设置

举例 节点一的配置:

cluster_name: Test Cluster     ## 集群名字,集群内的所有节点要全部一样。

- seeds: "ip1:7000,ip2:7000,ip3:7000"  ## 集群内所有节点的通信地址和端口,默认的端口是7000

listen_address: ip1   ## 这个节点绑定的对外IP地址

rpc_address: ip1   ## 传输地址

# es 节点 列表
# es_node_list: http://ip1:9200,http://ip2:9200,http://ip3:9200
es_node_list:

同步es,表属性配置

本来是希望把同步配置,保留在元数据里边,但是with配置,集群间不共享,只是在内存里边 存储了一个hashMap。

所以只能恢复到 sync_es_table: 这个配置。

默认是同步到es的,但是如果配置上表名,就不同步了。

配置例子:keyspace名字.表名

About

做了一个数据实时同步es 的功能,简单改了几个配置就可以,在申请向官方合并,不过感觉希望不大。毕竟做这块的人太多了。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 96.9%
  • Python 1.6%
  • HTML 0.8%
  • Shell 0.4%
  • GAP 0.3%
  • Lex 0.0%