hbase
节点 | 端口号 | 协议 | 使用 | 说明 |
---|---|---|---|---|
zookeeper | 2181 | zkCli.sh -server zookeeper1:2181 | 客户端接入 | |
2888,3888 | N/A | 集群内部通讯 | ||
HDFS Namenode | 9000 | HDFS | hdfs dfs -ls hdfs://namenode1:9000/ | 客户端接入 |
50070 | HTTP | http://namenode1:50070/ | 集群监控 | |
HDFS SecondaryNamenode | 50090 | HTTP | http://namenode1:50090/ | secondary监控 |
HDFS Datanode | 50010 | N/A | 客户端接入/其他节点接入 | |
50020 | N/A | |||
50075 | HTTP | http://datanode1:50075/ | 节点监控 | |
HBase Master | 16000 | hbase-client-1.x.x.jar | RegionServer接入 | |
16010 | HTTP | http://namenode1:16010/ | 集群监控 | |
HBase RegionServer | 16020 | N/A | 客户端接入 | |
16030 | HTTP | http://datanode1:16030/ | 节点监控 |
neo4j
tips
- cypher语法对大小写敏感,注意属性的大小写
- 导入csv出现乱码时,需要通过记事本更改编码格式,如果文本过大,需要一段一段的复制粘贴到新文本中,且以UTF-8格式编码
- MERGE命令是CREATE命令和MATCH命令的组合。
MERGE = CREATE + MATCH
问题
1.
现象: 在外部处理csv数据,导入服务器,然后load csv到neo4j中,可能由于文件所属问题,不能成功导入csv,提示Couldn't load the external resource
的错误。
解决:复制可以导入的csv文件为副本,把待导入的数据粘贴到副本中,load csv副本即可
2.
现象: 在外部处理csv数据,进行merge操作的时候,提示cannot merge using null property value for uid
的错误。
解决:经发现,是由于指令中的属性拼写错误,导致Neo.ClientError.Statement.SemanticError
的错误,例如把sfzh
拼写成sfhm
。
3.
现象: 大量数据的导入问题。
解决:需使用https://neo4j.com/docs/operations-manual/current/tools/import/
注意:Import tool is only for newly created databases.
You can use LOAD CSV cypher command to load into an existing database.
也就是说neo4j-admin import只会在新建数据库的时候会用到
clickhouse
存储架构
Clickhouse 存储中的最小单位是 DataPart,写入链路为了提升吞吐,放弃了部分写入实时可见性,即数据攒批写入,一次批量写入的数据会落盘成一个 DataPart.
它不像 Druid 那样一条一条实时摄入。但 ClickHouse 把数据延迟攒批写入的工作交给来客户端实现,比如达到 10 条记录或每过 5s 间隔写入,换句话说就是可以在用户侧平衡吞吐量和时延,如果在业务高峰期流量不是太大,可以结合实际场景将参数调小,以达到极致的实时效果。
查询架构
计算能力方面
Clickhouse 采用向量化函数和 aggregator 算子极大地提升了聚合计算性能,配合完备的 SQL 能力使得数据分析变得更加简单、灵活。
数据扫描方面
ClickHouse 是完全列式的存储计算引擎,而且是以有序存储为核心,在查询扫描数据的过程中,首先会根据存储的有序性、列存块统计信息、分区键等信息推断出需要扫描的列存块,然后进行并行的数据扫描,像表达式计算、聚合算子都是在正规的计算引擎中处理。从计算引擎到数据扫描,数据流转都是以列存块为单位,高度向量化的。
高并发服务方面
Clickhouse 的并发能力其实是与并行计算量和机器资源决定的。如果查询需要扫描的数据量和计算复杂度很大,并发度就会降低,但是如果保证单个 query 的 latency 足够低(增加内存和 cpu 资源),部分场景下用户可以通过设置合适的系统参数来提升并发能力,比如 max_threads 等。其他分析型系统(例如 Elasticsearch)的并发能力为什么很好,从 Cache 设计层面来看,ES 的 Cache 包括 Query Cache, Request Cache,Data Cache,Index Cache,从查询结果到索引扫描结果层层的 Cache 加速,因为 Elasticsearch 认为它的场景下存在热点数据,可能被反复查询。反观 ClickHouse,只有一个面向 IO 的 UnCompressedBlockCache 和系统的 PageCache,为了实现更优秀的并发,我们很容易想到在 Clickhouse 外面加一层 Cache,比如 redis,但是分析场景下的数据和查询都是多变的,查询结果等 Cache 都不容易命中,而且在广投业务中实时查询的数据是基于 T 之后不断更新的数据,如果外挂缓存将降低数据查询的时效性。
技巧
唯一键约束
1 | CREATE TABLE IF NOT EXISTS qilu.t_01( |
rqlite
build
1 | cd $GOPATH/src/github.com/rqlite/rqlite |
deploy cluster
1 | node 1 |
shell
1 | .nodes |
postgreSQL
终端登录pg
如果之前没有登录过,需要设置当前用户进行登录操作
There is no default username and password without you creating one. The simplest possible setup is to follow these steps to set up your own user as a superuser.
At a terminal prompt, create a postgres user with your own username
1
sudo -u postgres createuser --superuser $USER # $USER无须替换
Start the postgresql command prompt as your username but running as root since you didn’t set a password yet;
1
sudo -u postgres psql
At the postgresql prompt, set your password;
1
\password $USER # 其中$USER需要替换成当前用户名
After that, you should be able to log on just fine.
如果之前设置了上面的步骤,可直接运行
1
psql postgres
导入文件
1 | psql postgres # login command |
连接指定schema
如果不指定schema的话,会默认访问public的schema
指定schema
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
starrocks
安装部署
注意项
安装前配置环境变量
1
export STARROCKS_HOME=xxx
启动mysql客户端
1
mysql -h <fe_ip> -P<fe_query_port> -uroot -p # 密码为空,直接回车即可
FE
1 | netstat -tunlp | grep 18030 |
启动FE
start_fe.sh --daemon
查看FE状态+
SHOW PROC '/frontends'\G
添加新FE节点(follow和observer)
./start_fe.sh --helper 172.18.244.74:19010 --daemon
注意:
在mysql command先将实例添加进集群,然后逐个启动实例。(只在首次新增节点时操作)
各个节点的时间一定要同步,不然FE的心跳超过5s时差,就会报错
扩容FE
ALTER SYSTEM ADD FOLLOWER 'ip:19010';
ALTER SYSTEM ADD observer 'ip:19010';
缩容FE
ALTER SYSTEM DROP follower "ip:19010";
ALTER SYSTEM DROP observer "ip:19010";
BE
1 | netstat -tunlp | grep 19060 |
查看BE状态
SHOW PROC '/backends'\G
启动BE
./start_be.sh --daemon
添加BE节点
ALTER SYSTEM ADD BACKEND "172.18.244.74:19050";
缩容BE节点
ALTER SYSTEM DECOMMISSION BACKEND "172.18.244.74:19050";
等待该节点BE从列表中消失(查看命令SHOW PROC ‘/backends’;),即可使用./stop_be.sh停掉服务崩溃排查日志
be.out
配置修改
- FE修改端口信息,需要清理meta
1 | 1. 重建meta目录 |
- BE修改端口信息,需要清理storage
1 | 1. 重建storage目录(是否可以修改cluster_id进行集群处理) |
- 修改密码
SET PASSWORD = PASSWORD('datacanvas')
TIPS
- 节点时间需要同步(延迟需要在5秒内),不然starrocks无法扩容FE节点
tools
logstash
Logstash Forwarder/Beats负责在源服务器上收集日志数据,然后将数据发送到集中式的Logstash或Kafka服务器。
Logstash是一个灵活的数据收集引擎,它可以从多个来源(包括日志文件、标准输入、Beats等)采集数据,进行转换、过滤和解析,最后将数据发送到各种目的地,比如Elasticsearch、Kafka等。在日志处理中,Logstash常被用作数据的转换和预处理工具。
mybatis
知识点
about date jdbcType
1
2#{beginDate,jdbcType=DATE} (no time of the day), or
#{beginDate,jdbcType=TIMESTAMP} (if you need to include the time of the day).
And the Java parameter you want to apply should be of type:
1 | java.sql.Date (date without time) |
the Greater Than/Equal Operator and the Less Than/Equal Operators:
1
2ROWNUM >= 20
ROWNUM <= 20
问题解决
使用SpringMVC+Mybatis框架写项目的时候,在mapper里面的sql语句
1 | <if test="updateTime != null"> |
出错:There is no getter for property named 'updateTime' in 'class java.util.Date'
原因是:
如果将and语句中的#{属性}写在if语句中,mybatis会去对象中从它的get方法中取值,而我之前是直接传递的值,并没有封装对象。
解决办法:
1. 把updateTime需改为date
2. 把updateTime代表的参数封装到一个对象中