【问题标题】:Setup and configuration of Titan for a Spark cluster and Cassandra为 Spark 集群和 Cassandra 设置和配置 Titan
【发布时间】:2017-02-27 12:55:48
【问题描述】:

aurelius 邮件列表和 stackoverflow 上已经有几个关于配置 Titan 以使其与 Spark 一起工作的特定问题的问题。但在我看来,缺少的是对使用 Titan 和 Spark 的简单设置的高级描述。

我正在寻找的是使用推荐设置的最小设置。例如,对于 Cassandra,复制因子应为 3,并且应使用专用数据中心进行分析。

根据我在 Spark、Titan 和 Cassandra 的文档中找到的信息,这样的最小设置可能如下所示:

  • 实时处理 DC:3 个节点,Titan + Cassandra(RF:3)
  • Analytics DC:1 个 Spark 主站 + 3 个带 Cassandra 的 Spark 从站(RF:3)

我对该设置和 Titan + Spark 有一些疑问:

  1. 该设置是否正确?
  2. Titan 是否也应该安装在 3 个 Spark 从节点和/或 Spark 主节点上?
  3. 您是否可以使用其他设置?
  4. Spark 从属设备是否仅从分析 DC 读取数据,理想情况下甚至从同一节点上的 Cassandra 读取数据?

也许有人甚至可以共享一个支持这种设置(或更好的设置)的配置文件。

【问题讨论】:

    标签: apache-spark cassandra titan tinkerpop tinkerpop3


    【解决方案1】:

    所以我只是尝试了一下,并设置了一个简单的 Spark 集群来与 Titan(以及 Cassandra 作为存储后端)一起工作,这就是我想出的:

    高级概述

    我这里只专注于集群的分析方面,所以我放出了实时处理节点。

    Spark 由一个(或多个)master 和多个 slave(worker)组成。由于从站进行实际处理,因此他们需要访问他们处理的数据。因此 Cassandra 安装在 worker 上并保存来自 Titan 的图形数据。

    作业从 Titan 节点发送到 spark master,后者将它们分发给他的工人。因此,Titan 基本上只与 Spark Master 通信。

    仅需要 HDFS 是因为 TinkerPop 将中间结果存储在其中。请注意,this changed in TinkerPop 3.2.0.

    安装

    HDFS

    我刚刚按照我找到的here 的教程进行操作。对于 Titan,这里只需要记住两件事:

    • 选择兼容版本,对于 Titan 1.0.0,这是 1.2.1。
    • 不需要来自 Hadoop 的 TaskTracker 和 JobTracker,因为我们只需要 HDFS 而不是 MapReduce。

    火花

    同样,版本必须兼容,Titan 1.0.0 也是 1.2.1。安装基本上意味着使用编译版本提取存档。最后,您可以通过导出HADOOP_CONF_DIR 来配置Spark 以使用您的HDFS,该HADOOP_CONF_DIR 应该指向Hadoop 的conf 目录。

    泰坦的配置

    您还需要在 Titan 节点上设置一个 HADOOP_CONF_DIR,以便从中启动 OLAP 作业。它需要包含一个指定NameNode的core-site.xml文件:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
      <property>
         <name>fs.default.name</name>
         <value>hdfs://COORDINATOR:54310</value>
         <description>The name of the default file system.  A URI whose
           scheme and authority determine the FileSystem implementation.  The
           uri's scheme determines the config property (fs.SCHEME.impl) naming
           the FileSystem implementation class.  The uri's authority is used to
           determine the host, port, etc. for a filesystem.</description>
      </property>
    </configuration>
    

    HADOOP_CONF_DIR 添加到您的CLASSPATH,TinkerPop 应该能够访问 HDFS。 TinkerPop documentation 包含更多信息以及如何检查 HDFS 是否配置正确。

    最后,一个适合我的配置文件:

    #
    # Hadoop Graph Configuration
    #
    gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
    gremlin.hadoop.graphInputFormat=com.thinkaurelius.titan.hadoop.formats.cassandra.CassandraInputFormat
    gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
    gremlin.hadoop.memoryOutputFormat=org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat
    
    gremlin.hadoop.deriveMemory=false
    gremlin.hadoop.jarsInDistributedCache=true
    gremlin.hadoop.inputLocation=none
    gremlin.hadoop.outputLocation=output
    
    #
    # Titan Cassandra InputFormat configuration
    #
    titanmr.ioformat.conf.storage.backend=cassandrathrift
    titanmr.ioformat.conf.storage.hostname=WORKER1,WORKER2,WORKER3
    titanmr.ioformat.conf.storage.port=9160
    titanmr.ioformat.conf.storage.keyspace=titan
    titanmr.ioformat.cf-name=edgestore
    
    #
    # Apache Cassandra InputFormat configuration
    #
    cassandra.input.partitioner.class=org.apache.cassandra.dht.Murmur3Partitioner
    cassandra.input.keyspace=titan
    cassandra.input.predicate=0c00020b0001000000000b000200000000020003000800047fffffff0000
    cassandra.input.columnfamily=edgestore
    cassandra.range.batch.size=2147483647
    
    #
    # SparkGraphComputer Configuration
    #
    spark.master=spark://COORDINATOR:7077
    spark.serializer=org.apache.spark.serializer.KryoSerializer
    

    答案

    这导致以下答案:

    这个设置正确吗?

    好像是的。至少它适用于这种设置。

    Titan 是否也应该安装在 3 个 Spark 从节点和/或 Spark 主节点上?

    由于不是必需的,我不会这样做,因为我更喜欢用户可以访问的 Spark 和 Titan 服务器的分离。

    您会使用其他设置吗?

    我很高兴收到其他设置不同的人的意见。

    Spark 从站是否只会从分析数据中心读取数据,理想情况下甚至从同一节点上的 Cassandra 读取数据?

    由于显式配置了 Cassandra 节点(来自分析 DC),Spark 从站不应该能够从完全不同的节点提取数据。但我仍然不确定第二部分。也许其他人可以在这里提供更多见解?

    【讨论】:

    • 这个设置对我很有效 - 谢谢。到目前为止,我已经尝试过运行所有东西的单节点实例 - 很快就会尝试您的集群设置。
    • 很高兴听到,当您遇到任何问题或对此设置有任何改进建议时,请告诉我。
    • 我确实很快就遇到了问题,即使使用单节点设置但尝试使用更大的图表:-(我已经在用户论坛上发布了它:如果你有一些建议会很棒。网址:groups.google.com/forum/#!topic/janusgraph-users/vDFxULNsfcU
    • 注意:我在上面的配置文件中又添加了两行,但到目前为止还没有帮助我:cassandra.thrift.framed.size_mb=200 和 spark.executor.memory= 1克
    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2018-01-18
    • 2015-08-08
    • 2020-04-12
    相关资源
    最近更新 更多