[英]How to import data into Cassandra on EC2 using DSBulk Loader
我正在尝试使用 dsbulk 加载程序将数据导入 EC2 上的 Cassandra。 我有三个节点配置和通信如下:
UN 172.31.37.60 247.91 KiB 256 35.9% 7fdfe44d-ce42-45c5-bb6b-c3e8377b0eba 2a
UN 172.31.12.203 195.17 KiB 256 34.1% 232f7d98-9cc2-44e5-b18f-f52107a6fe2c 2c
UN 172.31.23.23 291.99 KiB 256 30.0% b5389bf8-c0e5-42be-a296-a35b0a3e68fb 2b
我正在尝试运行以下命令将 csv 文件导入我的数据库:
dsbulk load -url cassReviews/reviewsCass.csv -k bnbreviews -t reviews_by_place -h '172.31.23.23' -header true
我不断收到以下错误:
连接到节点时出错(endPoint=/172.31.23.23:9042,hostId=null,hashCode=b9b80b7)
无法联系到任何联系人,请确保您提供了有效地址
我正在从集群外部运行导入,但在同一个 EC2 实例中。 在每个节点上,我将listen_address 和rpc_address 设置为其privateIP。 端口 9042 已打开 - 所有三个节点都在同一个区域内,我使用的是 Ec2Snitch。 每个节点都在 ubuntu v18.04 服务器上运行。
在运行命令之前,我已确保我的每个节点都已启动,并且 my.csv 文件的路径是正确的。 似乎当我运行 dsbulk 命令时,我使用 -h 标志指定的节点立即关闭。 我缺少的配置可能有问题吗? DSBulk 加载器在本地运行良好,但是否有更理想的方法从 EC2 实例中的 csv 文件导入数据? 谢谢!
编辑:我已经能够使用 dsbulk 加载程序分块加载数据,但该过程偶尔会被此错误中断:
[s0|/xxx.xx.xx.xxx:9042] 打开新频道时出错
我目前解释的方式是指定 IP 的节点已用完存储空间并崩溃,导致任何后续 dsbulk 操作失败。 到目前为止,解决方法是从 /var/log/cassandra 中清除多余的日志文件并重新启动节点,但我认为更好的方法是增加每个实例的 SSD。
正如我在编辑中提到的,通过增加每个节点实例的音量来解决问题。 DSBulk 失败并导致节点崩溃的原因是 EC2 实例的存储空间不足,原因是导入的数据、日志记录和快照的组合。 我最终在具有 30GB SSD 的 t2.medium 实例上运行了我正在运行 DSBulk 命令的主节点实例,从而解决了这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.