SparkRM: Process Pushdown
单流程下推和SparkRM元操作符在一个(单流程下推)或多个(SparkRM) Hadoop集群节点。
元操作符中的子进程可以包含RapidMiner Studio中的任何核心操作符。此外,也可以使用外部扩展(例如Weka、Text Processing),它们由客户端(Studio或Server)自动上传到集群。目前还不支持一些操作符,例如与数据库处理相关的操作符和Execute Script操作符。您还可以设置RapidMiner Studio或任何扩展的非默认首选项设置配置参数参数。这在使用的时候特别有用Python脚本Python安装目录必须通过首选项设置提供。
对于这两个操作符,您可以为数据设置采样(默认禁用)。内部操作符可以使用、创建和操作宏,并且可以在子流程中引用Samples存储库。
单流程下推
单流程下推在第一个输入端口上接受任意大的HadoopExampleSet,并在随后的输入端口上接受任何IOObject。同样,它在第一个输出上提供一个大的HadoopExampleSet,并在其他输出端口上提供任何IOObject。
请注意,只有第一个输入/输出端口可以处理大数据,其他端口将对象临时存储在客户端机器的内存中,因此,它们应该只用于模型,性能向量,小表等。
有关操作器端口和参数的进一步考虑可以在RapidMiner Radoop操作符参考(PDF)。Samples存储库可通过检索操作符在子流程中,其他存储库没有,因此它们必须连接到其中一个操作符输入端口。
的功能单流程下推接线员:
内部的子进程单流程下推:
神经网络是最精确的学习算法之一。在这个过程中,RapidMiner的神经网络操作符用于输入HadoopExampleSet,它是使用生成数据操作符。由于标签总是数字,因此首先将其转换为二进制。分割数据用于创建训练和测试数据集。的神经网络操作符在单流程下推来建立模型。最后,将神经网络模型应用于RapidMiner Radoop的分布式测试数据应用模型操作员和性能矢量计算。
SparkRM(并行进程下推)
的SparkRMmeta操作符是RapidMiner Radoop中最独特的操作符。它能够使用多个集群节点并行执行RapidMiner进程。
就像单进程下推一样,操作符有一个示例集输入端口和一个示例集输出端口(第一个输入和输出端口)。操作符在此输入上接受任意大的HadoopExampleSet,并可以在此输出上提供大的HadoopExampleSet。操作符的其他输入和输出端口用于进一步的对象(模型、性能向量、小型ExampleSets等)。
请注意,只有第一个输入/输出端口可以处理大数据,其他端口将对象临时存储在客户端机器的内存中,并且在执行期间它们也分布到所有分区。因此,这些端口应该只用于模型、性能向量、小表等。
SparkRM的核心概念是分区。当操作符被执行时,第一个输入端口上的数据根据操作符的位置被分割成多个分区分区模式以及相关参数。然后在所有这些分区上执行子进程,最好是并行执行(在集群资源允许的范围内)。乐鱼体育安装可以使用多个集群节点并行执行该进程,并且一个集群节点能够并行处理多个分区。分区方式有以下几种:
- 线性:默认的分区模式。当使用线性分区时,分区的数量与输入数据的大小成正比。一个分区的大小取决于集群中HDFS块的大小。如果您不想指定分区的确切数量,并且对分区之间的数据分布没有任何偏好,请使用此分区模式。这是最快的分区模式,因为数据移动最小化,所以最好在存储数据的地方处理数据。
- 随机:当选择随机分区时,可以指定每个分区的大小(如分区大小设为绝对大小的分区)或分区数量(如果分区大小设为固定数量的分区)。如果您需要知道分区的数量,但对分区之间的数据分布没有任何偏好,请使用此分区模式。随机分区模式重新分配数据以创建所需数量(或大小)的分区,因此,它的开销预计比线性分区模式大。
- 属性:属性分区模式允许您指定数据在分区之间的分布。将输入数据分组分区属性,以便每个分区接收一个唯一属性值的数据。在这种情况下,每个示例都必须移动到特定的节点,这将导致大量的网络流量。如果希望在输入数据的精确组上执行子进程,请使用此分区模式。请注意,对于不均匀分布的数据,性能不是最优的,因为一个分区可能比另一个分区包含更多的示例。
在每个操作符的iooobject输出上创建一个集合,其中包含所有分区的输出。显然,这意味着iooobject集合的大小等于进程中使用的分区的数量。在主要的(第一个)Example Set输出中,您可以在两种行为之间进行选择。的合并输出参数决定是否应该将每个分区的输出合并为单个HadoopExampleSet(推荐值和默认值)或应该创建HadoopExampleSet的集合。默认情况下,如果合并输出,如果不同分区生成具有不同模式的ExampleSets,则该过程将失败。如果您想避免这种情况,请启用解决模式冲突参数——在这种情况下,传递输出模式的联合,并且可以用缺失或指定的值填充数据空白(一个分区有值,而另一个分区没有值)。请注意,如果合并输出参数未选中时,Radoop将在集合的每个元素上创建一个Hive表。管理大量的Hive表会导致开销,并且可能会达到HiveServer2的限制。因此,我们鼓励您在此集合中只使用适量的元素合并输出没有启用。
的简单用例SparkRM操作符通过使用简单的样本数据。
首先检索泰坦尼克号样本数据集,并将Age属性离散为3个bin。这导致Age属性中有4个不同的值:range1[-∞- 26.778];range [26.778 - 53.389];Range3[53.389 -∞]和missing。请注意,不建议在实际用例中使用RapidMiner Radoop运算符来处理适合RapidMiner Studio内存的数据(如Titanic数据集)。如果您有大数据,请在Nest中使用Radoop的Retrieve(推荐)或Read CSV操作符来访问您的输入。
在Radoop Nest中,将幸存的属性指定为标签,并将数据连接到SparkRM的第一个(示例集)输入端口。对于SparkRM操作符属性设置分区,并将离散化的Age属性设置为分区属性。这将产生4个分区。我们希望针对不同的年龄类别建立不同的预测模型。
在下推过程中,使用决策树建模器对4个分区并行执行交叉验证。在SparkRM的输出中,只使用了两个IOObject输出端口,Example Set输出没有连接,因为我们没有更改数据集,只是在其上(在其分区上)构建模型。
在连接的输出上,传递一组决策树模型和另一组性能向量。每个集合包含4个元素,可以在Studio的Result视图中检查。
高级设置和监控
在运行Spark应用程序时,通常需要指定它在Hadoop集群上使用的所需内存和核心。在提交进程时,Radoop使用自定义资源启发式。这在大多数用例的默认设置下工作得很好,但是调整或关闭启发式也是可能的。有关更多信息,请参阅操作人员的帮助面板。
请注意,Spark通常会再次执行失败的RapidMiner进程,以容忍Hadoop集群错误。但是,如果子进程出现进程错误,这也可能导致不必要的重新运行。只有当发生的错误明显是用户错误或进程设置错误时,Radoop才会阻止这种重新运行。参数的值作为默认的试验次数yarn.resourcemanager.am.max-attempts
但是,在集群上,可以通过spark.yarn.maxAppAttempts
高级火花设置。
默认情况下,单流程下推和SparkRM使用内存监视器,以便在子进程内存耗尽时检测并终止它。内存监视器可以在属性设置面板。如果该特性被禁用,进程可能长时间停留在RUNNING状态,然后出现内存不足错误失败。注意:由于一个已知的Spark错误,内存监控服务可能行不通以及SparkRM的属性分区模式。在这种情况下,请按照错误消息的建议关闭内存监视器。