如何使用 DSBulk Loader 将数据导入 EC2 上的 Cassandra

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

我不断收到以下错误:

Error connecting to Node(endPoint=/172.31.23.23:9042, hostId=null, hashCode=b9b80b7)

Could not reach any contact point, make sure you've provided valid addresses

我运行宁从集群外部导入,但在同一个 EC2 实例中。在每个节点上,我将 listen_address 和 rpc_address 设置为其私有 IP。端口 9042 已打开 - 所有三个节点都在同一区域内,我使用的是 Ec2Snitch。每个节点 运行ning 在 ubuntu v18.04 服务器上。

我已经确保我的每个节点在 运行 执行命令之前都已启动,并且我的 .csv 文件的路径是正确的。似乎当我 运行 dsbulk 命令时,我用 -h 标志指定的节点立即关闭。我的配置可能有什么问题我遗漏了吗? DSBulk 加载器在本地运行良好,但是否有更理想的方法从 EC2 实例中的 csv 文件导入数据?谢谢!

编辑:我已经能够使用 dsbulk 加载程序分块加载数据,但该过程偶尔会被此错误中断:

[s0|/xxx.xx.xx.xxx:9042] Error while opening new channel

我目前的解释是指定 IP 的节点 运行 存储不足 space 并崩溃,导致任何后续 dsbulk 操作失败。到目前为止的解决方法是从 /var/log/cassandra 中清除多余的日志文件并重新启动节点,但我认为更好的方法是增加每个实例的 SSD。

正如我在编辑中提到的,通过增加每个节点实例的音量解决了这个问题。 DSBulk 失败并导致节点崩溃的原因是 EC2 实例 运行 存储不足,这是导入数据、日志记录和快照的组合造成的。我最终 运行 我的主节点实例,其中我是 运行 DSBulk 命令,在具有 30GB SSD 的 t2.medium 实例上,这解决了问题。