我在Windows 7上使用R的最新版本.
我想用RSelenium
这样的方法并行运行很多测试,我的问题是:
RSelenium
测试的方法是什么?假设我想进行1000次测试,每步需要1小时.逐个运行测试需要花费很多时间(每天24次测试,因此总共需要42天).我知道如何使用doParallel和foreach包在我的机器上并行运行测试:并行运行RSelenium,但有时,这还不够.我想并行运行大约100个测试.我尝试使用Azure Batch,但在启动selenium服务器时在某些节点上遇到很多错误.
更具体地说,我写了dockerfile:
FROM rocker/r-base:latest
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libxml2-dev \
libcurl4-openssl-dev \
libssl-dev \
gnupg2 \
libfftw3-dev \
libtiff-dev \
libx11-dev \
libcairo2-dev \
libxt-dev \
firefox
#RUN add-apt-repository -y ppa:mozillateam/firefox-next
## Install Java
RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" \
| tee /etc/apt/sources.list.d/webupd8team-java.list \
&& echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" \
| tee -a /etc/apt/sources.list.d/webupd8team-java.list \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys …
Run Code Online (Sandbox Code Playgroud) 我正在测试函数的CPU性能,所以我创建了一个函数,用于查找数字中的素数.它由Azure Service Bus触发.在我的本地机器上它运行350ms.
在消费计划中运行时,该功能大约需要1000毫秒.当我批量发送100条消息到函数时,它可以扩展到大约16个实例,但每个函数的性能大大降低到3000-7000ms之间.
在尝试使用4核的标准服务计划时,性能会更好,但不是那么多.它仍然比我的笔记本电脑慢得多.这家伙有类似的问题.
这是功能所期望的性能/扩展吗?Eq不适合批量处理CPU密集型方法?
Azure批次会更合适吗?
我首先看到Windows Azure中有3个选项来安排作业.批处理,调度程序和Web作业.是否有任何链接或视频解释了什么是差异以及什么时候和利益使用?提前致谢
我想使用Python创建我的Pool。当使用市场上的映像(Ubuntu Server 16.04)时,我可以执行此操作,但是我想使用自定义映像(但也要使用Ubuntu Server 16.04)-我已经准备了所需的库和设置。
这就是我创建池的方式:
new_pool = batch.models.PoolAddParameter(
id=pool_id,
virtual_machine_configuration=batchmodels.VirtualMachineConfiguration(
image_reference=image_ref_to_use, # ??
node_agent_sku_id=sku_to_use),
vm_size=_POOL_VM_SIZE,
target_dedicated_nodes=_POOL_NODE_COUNT,
start_task=start_task,
max_tasks_per_node=_CORES_PER_NODE
)
Run Code Online (Sandbox Code Playgroud)
我在成像时需要使用它batch.models.ImageReference()
来创建我的图像参考...但是我不知道如何使用它。
是的,我检查了文档,其中显示以下内容:
对Azure虚拟机市场映像或自定义Azure虚拟机映像的引用。
它列出的参数为:
但是,该参数virtual_machine_image_id
不存在...换句话说,这batch.models.ImageReference(virtual_machine_image_id)
是不允许的。
如何为我的游泳池使用自定义图像?
更新
因此,我弄清楚了如何使用自定义映像...事实证明,无论我卸载Azure python库并重新安装多少次,该库virtual_machine_image_id
都无法使用。
然后我去这里下载了zip文件。打开它,检查ImageReference
类并查看,该类virtual_machine_image_id
的__init__
功能可用ImageReference
。然后,我下载了python wheel并使用pip进行安装。繁荣它的工作。
还是我想。
然后,我不得不尽力而为,试图找出答案是什么node_agent_sku_id
……仅通过手动创建一个Pool并查看该Batch Node Agent SKU ID
字段即可找到它。
现在我正在努力进行身份验证...
我得到的错误是:
服务器无法验证请求。确保包括签名在内的Authorization标头的值正确形成。
AuthenticationErrorDetail:当链接类型为Compute的外部资源时,不允许使用指定的身份验证SharedKey类型。
azure.batch.models.batch_error.BatchErrorException:{'lang':'en-US','value':'服务器无法验证请求。请确保正确构成授权标头的值,包括签名。\ nRequestId:f8c1a3b3-65c4-4efd-9c4f-75c5c253f992 \ nTime:2017-10-15T20:36:06.7898187Z'}
从错误中得知,我不允许使用SharedKeyCredentials
:
credentials = batchauth.SharedKeyCredentials(_BATCH_ACCOUNT_NAME, …
Run Code Online (Sandbox Code Playgroud) VM 规模集可用于根据业务需求创建多个 VM,此外,Azure 批处理还可用于在多个 VM 中执行作业。
Azure Batch 和 VM 规模集之间的确切区别是什么?
在Azure之上决定数据处理方法的利弊是什么?我们看到了Azure Web作业,Azure批处理和Azure工作者角色,但实际上无法确定每种选择的优缺点,尤其是在可伸缩性和成本方面。
假设e具有来自天蓝色队列的数据处理。从每天1-5个数据项到每分钟500个数据项。每个项目都需要自定义处理(如果使用C#逻辑,则需要一些位),具体时间在5秒到5分钟之间,具体取决于数据的性质。
有了这样的负载,我们如何决定Web作业,Azure批处理或工作人员?决定的主要标准是什么?
我坚持用.net 4.6.1创建azure批处理池.
我经历了那些非常好的资源:
我发现有一种方法可以使用.net 4.6.1 而无需在节点上手动安装它.有一种编程方式可以使用最新的.net版本(.net 4.6.1)设置Windows Ghost映像,但我的节点是事先定义的.
我需要.net 4.6.1,因为我们使用Data Factory和在azure批处理节点上运行的自定义活动.我们在该节点上手动升级了.net版本,但Microsoft不保证该状态将保留,我们注意到该节点已重置为其原始状态几次.
我的问题是:
你知道在天蓝门户上有没有办法选择安装了.net 4.6.1版本的OS系列的OS系列?
有没有人知道什么时候会有.net 4.6.1的操作系统?
或者我应该使用StartTask功能并尝试手动安装.net 4.6.1?但是,该选项听起来像是一些解决方法,而不是正确的解决方案.
我正在尝试访问Azure提供的GET请求的结果,如示例中所示:https : //msdn.microsoft.com/sv-se/library/azure/dn820159.aspx
我的问题是,这api-version
是一个强制性参数,但是我不知道该写些什么。我对Azure Batch文档有些迷茫,它似乎并不完整。
我在Azure网页中找到了一些东西:https : //azure.microsoft.com/zh-cn/documentation/articles/search-api-versions/,并且api版本是api-version=2015-02-28
。但是,如果我在浏览器中尝试过,则会收到以下回答:"key":"Reason","value":"The specified api version string is invalid"
。
我可以在api-version
参数中添加任何内容吗?
我正在尝试创建一个在所有节点上安装了应用程序包的池,但是我不断发现计算节点不可用。我的猜测是应用程序包的安装出现错误,导致节点进入不可用状态。但后来我感到困惑,因为我能够在另一个池中的任务级别安装相同的应用程序包。可能是什么问题?是什么导致节点进入不可用状态?如果我的猜测是正确的,什么可能导致应用程序包无法正确安装在池中以及如何解决这个问题?
谢谢!
我使用此 Microsoft 教程作为使用 Azure Batch 池、作业和容器的起点。
我已经稍微修改了他们删除池和作业的代码
// Cleanup Batch Account Resources
// Clean up Job
await batchClient.JobOperations.DeleteJobAsync($"{BatchConstants.JobIdPrefix}-{Guid}");
// Clean up Pool
await batchClient.PoolOperations.DeletePoolAsync($"{BatchConstants.PoolIdPrefix}-{Guid}");
Run Code Online (Sandbox Code Playgroud)
当我在本地运行此代码时,这非常有效,但是当它进入我的开发环境时,在删除池或作业(通常是作业)时会遇到问题。我收到状态代码“ServiceUnavailable”。
当我手动登录到 Azure 门户时,我可以看到容器已被毫无问题地删除(因此我知道可以建立连接并且可以成功删除 Azure 对象),但请注意池和作业仍然存在。
它似乎没有JobOperations
重PoolOperations
试策略的概念,所以如果它返回 ServiceUnavailable 状态,是否有其他方法可以让它重试删除池和/或作业几次?或者我应该在本质上是一个 for 循环中尝试它,如果它返回一个错误的状态代码,该循环最多运行 5(或更多)次,或者如果返回一个好的状态代码,则继续执行程序的其余部分?
谢谢您的帮助。
azure-batch ×10
azure ×8
azureportal ×1
c# ×1
foreach ×1
python ×1
r ×1
rselenium ×1
selenium ×1
web-worker ×1