hazelcast-jet 部署和数据摄取
hazelcast-jet deployment and data ingestion
我在 AWS EC2 实例上有一个分布式系统 运行。我的集群有大约 2000 个节点。我想介绍一种流处理模型,它可以处理每个节点定期发布的元数据(cpu 使用情况、内存使用情况、IO 等)。我的系统只关心最新的数据。当处理模型关闭时,丢失几个数据点也是可以的。因此,我选择了 hazelcast-jet,这是一种性能出色的内存处理模型。在这里我有几个关于模型的问题:
- 将 hazelcast-jet 部署到多个 ec2 实例的最佳方法是什么?
- 如何从数千个来源提取数据?来源推送数据而不是被拉取。
- 如何配置客户端,让它知道在哪里提交任务?
如果有一个综合性的例子可以学习,那将是非常有用的。
What is the best way to deploy hazelcast-jet to multiple ec2 instances?
在每台机器上下载并解压 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 集群发现。 AWS 部署的详细信息 here. In this step you'll have to deal with IAM roles, EC2 security groups, regions, etc. There's also a best practices guide。
用jet-start.sh
启动集群。
How to config client so that it knows where to submit the tasks?
一种直接的方法是指定 Jet 为 运行 的机器的 public IP,例如:
ClientConfig clientConfig = new ClientConfig();
clientConfig.getGroupConfig().setName("jet");
clientConfig.addAddress("54.224.63.209", "34.239.139.244");
但是,根据您的 AWS 设置,这些可能不稳定,因此您也可以配置以发现它们。这是解释 here.
How to ingest data from thousands of sources? The sources push data instead of being pulled.
我认为最好的选择是将数据放入 Hazelcast 地图,并使用 mapJournal
源从中获取更新事件。
我在 AWS EC2 实例上有一个分布式系统 运行。我的集群有大约 2000 个节点。我想介绍一种流处理模型,它可以处理每个节点定期发布的元数据(cpu 使用情况、内存使用情况、IO 等)。我的系统只关心最新的数据。当处理模型关闭时,丢失几个数据点也是可以的。因此,我选择了 hazelcast-jet,这是一种性能出色的内存处理模型。在这里我有几个关于模型的问题:
- 将 hazelcast-jet 部署到多个 ec2 实例的最佳方法是什么?
- 如何从数千个来源提取数据?来源推送数据而不是被拉取。
- 如何配置客户端,让它知道在哪里提交任务?
如果有一个综合性的例子可以学习,那将是非常有用的。
What is the best way to deploy hazelcast-jet to multiple ec2 instances?
在每台机器上下载并解压 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 集群发现。 AWS 部署的详细信息 here. In this step you'll have to deal with IAM roles, EC2 security groups, regions, etc. There's also a best practices guide。用
jet-start.sh
启动集群。
How to config client so that it knows where to submit the tasks?
一种直接的方法是指定 Jet 为 运行 的机器的 public IP,例如:
ClientConfig clientConfig = new ClientConfig();
clientConfig.getGroupConfig().setName("jet");
clientConfig.addAddress("54.224.63.209", "34.239.139.244");
但是,根据您的 AWS 设置,这些可能不稳定,因此您也可以配置以发现它们。这是解释 here.
How to ingest data from thousands of sources? The sources push data instead of being pulled.
我认为最好的选择是将数据放入 Hazelcast 地图,并使用 mapJournal
源从中获取更新事件。