SKIL/工作流程/添加资源

本文介绍如何在SKIL中管理各种云资源,包括AWS S3、EMR、Google Storage、Azure Storage、HDFS和YARN等,涵盖凭证存储、资源添加的方法(CLI、REST API和UI)及具体操作步骤。

添加资源

运行作业需要先将外部资源添加到SKIL的系统中。在添加资源之前,你需要将相关的凭证文件存储在SKIL集群的一个节点中。

 

存储凭证

下面显示了存储每种受支持资源类型的凭据的格式。

注意

For HDFS and YARN, no credentials are required as settings are done locally. You'll have to configure the SPARK_HOME environment variable and point it to the spark root folder for YARN.

对于HDFS和YARN,不需要凭证,因为设置是在本地完成的。你必须配置SPARK_HOME环境变量,并将其指向YARN的spark root文件夹。

{
  "accessKey": "<access_key>",
  "secretKey": "<secret_key>"
}

 

在哪里可以找到凭证?
请访问以下链接以根据你的资源需求获取安全凭据:

  1. AWS S3 and EMR
  2. Azure Storage and HDInsight
  3. Google Storage and Cloud DataProc - 将此信息保存在一个文件中,并给出serviceaccountfile键的路径,如上述代码段中所述。

 

添加资源
存储完资源凭据后,可以使用以下方法添加相应的资源:

  1. CLI
  2. REST端
  3. UI

 

1. CLI

skil resources命令通过CLI管理资源。以下代码段显示了如何添加每种类型的资源:

AWS S3

skil resources create-s3 --name <resource_name> --credentialUri <credentials_uri> --bucketId <bucket_id> --region <region>

AWS EMR

skil resources create-emr --name <resource_name> --credentialUri <credentials_uri> --clusterId <cluster_id> --region <region>

Google Storage

skil resources create-google-storage --name <resource_name> --credentialUri <credentials_uri> --projectId <project_id> --bucketName <bucket_name>

Google Cloud DataProc

skil resources create-dataproc --name <resource_name> --credentialUri <credentials_uri> --projectId <project_id> --sparkClusterName <spark_cluster_name> --region <region>

Azure Storage

skil resources create-azure-storage --name <resource_name> --credentialUri <credentials_uri> --containerName <container_name>

Azure HDInsight

skil resources create-hdinsight --name <resource_name> --credentialUri <credentials_uri> --subscriptionId <subscription_id> --resourceGroupName <resource_group_name> --clusterName <cluster_name>

HDFS

skil resources create-hdfs --name <resource_name> --credentialUri <credentials_uri> --nameNodeHost <name_node_host> --nameNodePort <name_node_port>

YARN

skil resources create-yarn --name <resource_name> --credentialUri <credentials_uri> --localSparkHome <local_spark_home>

 

2. REST 端

使用类似“curl”的工具,你可以通过向http://host:port/resource端点发送post请求来添加资源。通过REST端点添加资源的一般格式如下:

curl -d '<resource_request_data>' -H "Authorization: Bearer <auth_token>" -H "Content-Type: application/json" -X POST http://host:port/resource

注意

你可以通过运行以下curl请求来获取<auth_token>:

curl -d '{"userId":"<userId>", "password":"<password>"}' -H "Content-Type: application/json" -X POST http://localhost:9008/login

其中,<userid>和<password>是登录SKIL的凭据。
对于每种类型的资源,<resource_request_data>将具有以下格式:

AWS S3

{
  "resourceName":"<resource_name>",
  "resourceDetails": {
  	"@class":"io.skymind.resource.model.subtypes.storage.AzureStorageResourceDetails",
    "containerName":"<container_name>"
  },
  "credentialUri":"<credentials_uri>", // 通常看起来像"file:///path/to/credentials.json
  "type":"STORAGE",
  "subType":"AzureStorage",
  "credentialId":<credentials_id> // 一个整数
}
  
//你只需要提供credentialsUri或credentialsId

AWS EMR  

{
  "resourceName":"<resource_name>",
  "resourceDetails": {
  	"@class":"io.skymind.resource.model.subtypes.compute.EMRResourceDetails",
    "clusterId":"<cluster_id>",
    "region":"<region>"
  },
  "credentialUri":"<credentials_uri>", // 通常看起来像 "file:///path/to/credentials.json
  "type":"COMPUTE",
  "subType":"EMR",
  "credentialId":<credentials_id> // 一个整数
}
  
//你只需要提供credentialsUri或credentialsId

Google Storage  

{
  "resourceName":"<resource_name>",
  "resourceDetails": {
  	"@class":"io.skymind.resource.model.subtypes.storage.GoogleStorageResourceDetails",
    "projectId":"<project_id>",
    "bucketName":"<bucket_name>"
  },
  "credentialUri":"<credentials_uri>", // 通常看起来像"file:///path/to/credentials.json
  "type":"STORAGE",
  "subType":"GoogleStorage",
  "credentialId":<credentials_id> // 一个整数
}
  
//你只需要提供credentialsUri或credentialsId

Google Cloud DataProc

{
  "resourceName":"<resource_name>",
  "resourceDetails": {
  	"@class":"io.skymind.resource.model.subtypes.compute.DataProcResourceDetails",
    "projectId":"<project_id>",
    "region":"<region>",
    "sparkClusterName":"<spark_cluster_name>"
  },
  "credentialUri":"<credentials_uri>", // 通常看起来像 "file:///path/to/credentials.json
  "type":"COMPUTE",
  "subType":"DataProc",
  "credentialId":<credentials_id> // 一个整数
}
  
//你只需要提供credentialsUri或credentialsId

Azure Storage      

{
  "resourceName":"<resource_name>",
  "resourceDetails": {
  	"@class":"io.skymind.resource.model.subtypes.storage.AzureStorageResourceDetails",
    "containerName":"<container_name>"
  },
  "credentialUri":"<credentials_uri>", // 通常看起来像 "file:///path/to/credentials.json
  "type":"STORAGE",
  "subType":"AzureStorage",
  "credentialId":<credentials_id> // 一个整数
}
  //你只需要提供credentialsUri或credentialsId

Azure HDInsight  

{
  "resourceName":"<resource_name>",
  "resourceDetails": {
  	"@class":"io.skymind.resource.model.subtypes.compute.HDInsightResourceDetails",
    "subscriptionId":"<subscription_id>",
    "resourceGroupName":"<resource_group_name>",
    "clusterName":"<cluster_name>"
  },
  "credentialUri":"<credentials_uri>", // 通常看起来像"file:///path/to/credentials.json
  "type":"COMPUTE",
  "subType":"HDInsight",
  "credentialId":<credentials_id> //一个整数
}
//你只需要提供credentialsUri或credentialsId

HDFS    

{
  "resourceName":"<resource_name>",
  "resourceDetails": {
  	"@class":"io.skymind.resource.model.subtypes.storage.HDFSResourceDetails",
    "nameNodeHost":"<name_node_host>",
    "nameNodePort":"<name_node_port>"
  },
  "credentialUri":"<credentials_uri>", // 通常看起来像 "file:///path/to/credentials.json
  "type":"STORAGE",
  "subType":"HDFS",
  "credentialId":<credentials_id> // 一个整数
}
//你只需要提供credentialsUri或credentialsId

YARN

{
  "resourceName":"<resource_name>",
  "resourceDetails": {
  	"@class":"io.skymind.resource.model.subtypes.compute.YARNResourceDetails",
    "localSparkHome":"<local_spark_home>"
  },
  "credentialUri":"<credentials_uri>", // 通常看起来像 "file:///path/to/credentials.json
  "type":"COMPUTE",
  "subType":"YARN",
  "credentialId":<credentials_id> // 一个整数
}
  //你只需要提供credentialsUri或credentialsId

 

注意

如果你已被授予凭证,那么你可以在请求中省略credentialsId,反之亦然。

 

3. UI

你可以通过单击SKIL仪表盘右上角的“齿轮”图标,然后转到“资源(Resources)”来访问添加资源的用户界面:

单击 "添加资源(Add Resource)"来添加资源 :

选择要添加的资源类型:

现在,填写详细信息,最后单击“添加(Add)…”添加所需资源:

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
先看效果: https://pan.quark.cn/s/3756295eddc9 在C#软件开发过程中,DateTimePicker组件被视为一种常见且关键的构成部分,它为用户提供了图形化的途径来选取日期与时间。 此类控件多应用于需要用户输入日期或时间数据的场景,例如日程管理、订单管理或时间记录等情境。 针对这一主题,我们将细致研究DateTimePicker的操作方法、具备的功能以及相关的C#编程理念。 DateTimePicker控件是由.NET Framework所支持的一种界面组件,适用于在Windows Forms应用程序中部署。 在构建阶段,程序员能够通过调整属性来设定其视觉形态及运作模式,诸如设定日期的显示格式、是否展现时间选项、预设的初始值等。 在执行阶段,用户能够通过点击日历图标的下拉列表来选定日期,或是在文本区域直接键入日期信息,随后按下Tab键或回车键以确认所选定的内容。 在C#语言中,DateTime结构是处理日期与时间数据的核心,而DateTimePicker控件的值则表现为DateTime类型的实例。 用户能够借助`Value`属性来读取或设定用户所选择的日期与时间。 例如,以下代码片段展示了如何为DateTimePicker设定初始的日期值:```csharpDateTimePicker dateTimePicker = new DateTimePicker();dateTimePicker.Value = DateTime.Now;```再者,DateTimePicker控件还内置了事件响应机制,比如`ValueChanged`事件,当用户修改日期或时间时会自动激活。 开发者可以注册该事件以执行特定的功能,例如进行输入验证或更新关联的数据:``...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值