4

集群配置:

物理机P1:controller
物理机P2:agent1,datanode1,datanode2
物理机P3:agent2,datanode3,datanode4

controller.cfg文件中:

dfsReplicationFactor=2
//表示有两个副本
dfsReplicaReliabilityLever=1
//示不同的副本必须写入到不同的物理机器上

集群控制web界面如下:

image

所有节点启动正常,执行如下代码创建分布式数据库:

login("admin","123456")
n=1000000
date=rand(2018.08.01..2018.08.05,n)
sym=rand(`AAPL`MS`C`YHOO,n)
qty=rand(1..1000,n)
price=rand(100.0,n)
t=table(date,sym,qty,price)
if(existsDatabase("dfs://db2")){
    dropDatabase("dfs://db2")
}
db=database("dfs://db2",VALUE,2018.08.01..2018.08.05)
trades=db.createPartitionedTable(t,`trades,`date).append!(t)

分布式数据库无法创建,返回如下错误:

db = database("dfs://db2", VALUE, 2018.08.01 .. 2018.08.05) => RemoteRun[controller3] openChunks failed to find enough datanodes for write, need 2 datanodes, found 1

问题:从web界面发现,由于P3物理机上的数据节点存储磁盘已满,导致其无法正常使用,而上述创建的分布式数据库需要有两个副本,且不能同时存在一台物理机上(controller.cfg文件中设置的),所以无法正常创建上述分布式数据库。

web监控显示如下:

image

解决方法:

打开P1物理机上,DolphinDB安装目录下的server/config/cluster.cfg文件,重新对datanode3和datanode4分配磁盘,具体指令为:
datanode3.volumes=Path(磁盘位置)
datanode4.volumes=Path(磁盘位置)
保证新的磁盘有足够的空间。
修改完P1物理机上的cluster.cfg文件后,在web界面上关闭数据节点,再重启即可,可以发现datanode3和datanode4的存储位置已经更改为新指定的位置。

JasonTang
3.9k 声望19 粉丝

金融、物联网领域的大数据存储、查询和计算