amazon-ec2 - hazelcast-jet 部署和数据摄取
问题描述
我有一个在 AWS EC2 实例上运行的分布式系统。我的集群有大约 2000 个节点。我想介绍一个流处理模型,它可以处理每个节点定期发布的元数据(cpu 使用情况、内存使用情况、IO 等)。我的系统只关心最新数据。当处理模型关闭时,丢失几个数据点也是可以的。因此,我选择了 hazelcast-jet,它是一种性能出色的内存处理模型。在这里,我有几个关于模型的问题:
- 将 hazelcast-jet 部署到多个 ec2 实例的最佳方法是什么?
- 如何从数千个来源中提取数据?源推送数据而不是被拉取。
- 如何配置客户端以便它知道在哪里提交任务?
如果有一个我可以学习的综合示例,那将非常有用。
解决方案
将 hazelcast-jet 部署到多个 ec2 实例的最佳方法是什么?
在每台机器上下载并解压 Hazelcast Jet 发行版:
$ wget https://download.hazelcast.com/jet/hazelcast-jet-3.1.zip $ unzip hazelcast-jet-3.1.zip $ cd hazelcast-jet-3.1
进入
lib
解压后的发行版目录并下载hazelcast-aws
模块:$ cd lib $ wget https://repo1.maven.org/maven2/com/hazelcast/hazelcast-aws/2.4/hazelcast-aws-2.4.jar
编辑
bin/common.sh
以将模块添加到类路径。文件末尾有一行CLASSPATH="$JET_HOME/lib/hazelcast-jet-3.1.jar:$CLASSPATH"
您可以复制此行并替换
-jet-3.1
为-aws-2.4
.编辑
config/hazelcast.xml
以启用 AWS 集群发现。详情在这里。在此步骤中,您必须处理 IAM 角色、EC2 安全组、区域等。还有 AWS 部署的最佳实践指南。使用 启动集群
jet-start.sh
。
如何配置客户端以便它知道在哪里提交任务?
一种直接的方法是指定运行 Jet 的机器的公共 IP,例如:
ClientConfig clientConfig = new ClientConfig();
clientConfig.getGroupConfig().setName("jet");
clientConfig.addAddress("54.224.63.209", "34.239.139.244");
但是,根据您的 AWS 设置,这些可能不稳定,因此您也可以配置以发现它们。这是解释here。
如何从数千个来源中提取数据?源推送数据而不是被拉取。
我认为您最好的选择是将数据放入 Hazelcast 地图,并使用mapJournal
源从中获取更新事件。
推荐阅读
- c# - 短计数读取时未能将其全部读入内存
- ios - ios UITableView 编辑模式复选标记和圆形 svgs
- swift - 对数组进行分组以匹配另一个数组
- excel - 在 Microsoft 表单上输入新答案时,如何阻止 Microsoft 表格跳过我的公式中的一行
- visual-studio-code - 如何在全局范围内使用 VSCode 设置 nvm 和 ESLint?
- r - 贝叶斯 Beta 回归模型 - jags 中的错误:无效的父值
- r - 如何改进我的代码以将因子列转换为 data.frame 中的列表?
- python-3.x - 在 pandas 中获取非结构化 df 列表并在两列中给出数据结构
- python - 如何使按钮必须是可点击的以更改值并在 PyQt 中继续?
- rest - Jenkins CORS 过滤器插件未添加 Access-Control-Allow-Origins 标头