簡體   English   中英

為Spark集群和Cassandra設置和配置Titan

[英]Setup and configuration of Titan for a Spark cluster and Cassandra

關於aurelius郵件列表以及有關配置Titan以使其與Spark一起使用的特定問題的stackoverflow,已經有幾個問題。 但我認為缺少的是對使用Titan和Spark的簡單設置的高級描述。

我正在尋找的是使用推薦設置的有點小設置。 例如,對於Cassandra,復制因子應為3,並且應使用專用數據中心進行分析。

根據我在Spark,Titan和Cassandra文檔中找到的信息,這樣的最小設置可能如下所示:

  • 實時處理DC:帶Titan + Cassandra的3個節點(RF:3)
  • 分析DC:1個Spark主人+ 3個Cassandra的Spark派對(RF:3)

關於該設置和Titan + Spark的一般問題:

  1. 這個設置是否正確?
  2. Titan是否也應安裝在3個Spark從節點和/或Spark主節點上?
  3. 是否有其他設置可供您使用?
  4. Spark Slave是否只從分析DC讀取數據,理想情況下甚至可以從同一節點上的Cassandra讀取數據?

也許有人甚至可以共享支持這種設置(或更好的設置)的配置文件。

所以我只是試了一下並設置了一個簡單的Spark集群來與Titan(和Cassandra作為存儲后端)一起工作,這就是我想出來的:

高級概述

我只是專注於集群的分析方面,所以我放出了實時處理節點。

分析數據中心的高級概述

Spark由一個(或多個)主服務器和多個從服務器(工作者)組成。 由於從站進行實際處理,因此需要訪問它們所處理的數據。 因此,Cassandra安裝在工人身上並保存Titan的圖表數據。

工作從泰坦節點發送給火花大師,火星大師將他們分發給他的工人。 因此,Titan基本上只與Spark主人通信。

僅需要HDFS,因為TinkerPop將中間結果存儲在其中。 請注意, 這在TinkerPop 3.2.0中發生了變化

安裝

HDFS

我只是按照我在這里找到的教程。 泰坦只有兩件事需要記住:

  • 為Titan 1.0.0選擇兼容版本,這是1.2.1。
  • 不需要來自Hadoop的TaskTrackers和JobTrackers,因為我們只需要HDFS而不是MapReduce。

火花

同樣,版本必須兼容,對於Titan 1.0.0也是1.2.1。 安裝基本上意味着使用編譯版本提取存檔。 最后,您可以通過導出應該指向Hadoop的conf目錄的HADOOP_CONF_DIR來配置Spark以使用您的HDFS。

泰坦的配置

您還需要要從中啟動OLAP作業的Titan節點上的HADOOP_CONF_DIR 它需要包含指定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文檔包含有關它的更多信息以及如何檢查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 Slave是否只從分析DC讀取數據,理想情況下甚至可以從同一節點上的Cassandra讀取數據?

由於Cassandra節點(來自分析DC)是顯式配置的,因此Spark從屬服務器不應該從完全不同的節點提取數據。 但我仍然不確定第二部分。 也許其他人可以在這里提供更多見解?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM