1. 程式人生 > >Spark叢集安裝

Spark叢集安裝

    Spark的版本1.6.0,Scala的版本2.12,jdk版本1.8。最近使用spark,在這裡記錄下。

    一個master和三個worker,同時Hadoop-2.7.7叢集,namdenode在master上,倆個datanode在worker1和worker2上。

    List-1

192.168.33.30  worker1  master
192.168.33.31  worker2
192.168.33.32  worker3

    修改master機器的hostname為master,修改worker2機器的hostname為node1,修改worker2機器的hostname為node2。

    將spark放置於/opt下,如下List-2所示,三臺機器上的都一樣:

    List-2

[root@master opt]# ll
total 20
drwxr-xr-x  2 root root   22 4月  13 13:51 applog
drwxr-xr-x 11 root root 4096 4月  11 16:31 hadoop-2.7.7
drwxr-xr-x  8 root root 4096 4月  11 14:52 jdk1.8
drwxr-xr-x  6 root root   46 4月  13 13:35 scala2.12
drwxr-xr-x 14 root root 4096 4月  13 13:27 spark-1.6.0-bin-hadoop2.6

    master到倆個node的ssh面密就可以了,即在master上ssh  node1/node2都可以面密碼。

    /etc/profile如下List-3,在master這樣就可以了。

    List-3

#spark
export SPARK_HOME=/opt/spark-1.6.0-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin

    最重要的是spark的conf下的配置檔案,在master上,如下描述:

1、spark-env.sh

    cp spark-env.sh.template  spark-env.sh,之後修改spark-env.sh的內容,如下,之後用這個檔案替換node1和node2的spark-env.sh。

    List-4

export JAVA_HOME=/opt/jdk1.8
export HADOOP_HOME=/opt/hadoop-2.7.7
export SCALA_HOME=/opt/scala2.12
export HADOOP_CONF_DIR=/opt/hadoop-2.7.7/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_WORKDER_CORES=4
export SPARK_WORKER_MEMORY=1024m
export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.7.7/bin/hadoop classpath);

2、spark-defaults.conf

    cp  spark-defaults.conf.template  spark-defaults.conf,之後修改spark-defaults.conf,如下List-5。此外要手動在hdfs中建/opt/applogs/spark-eventlog目錄,用於儲存spark的event日誌。之後用這個檔案替換node1和node2的spark-defaults.conf。

    List-5

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://master:9000/opt/applogs/spark-eventlog

3、log4j.properties

    cp log4j.properties.template  log4j.properties,修改log4j.properties,內容如下List-6。最後用這個檔案替換node1和node2的此檔案。

  • log4j.rootCategory的值最後加上", FILE"。
  • 加入List-7中的內容,最終結果是List-6所示。

    List-6

log4j.rootCategory=INFO, console,FILE
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Settings to quiet third party logs that are too verbose
log4j.logger.org.spark-project.jetty=WARN
log4j.logger.org.spark-project.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.Threshold=INFO
log4j.appender.FILE.file=/opt/applog/spark.log
log4j.appender.logFile.Encoding = UTF-8
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] [%C{1}:%M:%L] %m%n

# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR

    List-7 通過實際實踐發現/opt/applog/spark.log這個目錄最終在宿主機上,而非在hdfs上

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.Threshold=INFO
log4j.appender.FILE.file=/opt/applog/spark.log
log4j.appender.logFile.Encoding = UTF-8
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] [%C{1}:%M:%L] %m%n

4、slaves

    cp  slaves.template  slaves,修改slaves檔案,如下List-8。最後用這個檔案替換node1和node2上的此檔案。

    List-8 這個檔案裡面的host上,都會啟動spark worker

master
node1
node2

 

    在master上執行List-9中的start-all.sh,之後在master上用jps命令檢視會看到有個master和worker,在node1/node2上用jps命令可以看到worker。

    List-9 

[root@node1 spark-1.6.0-bin-hadoop2.6]# pwd
/opt/spark-1.6.0-bin-hadoop2.6
[root@node1 spark-1.6.0-bin-hadoop2.6]# sbin/start-all.sh 

    在瀏覽器中輸入http://192.168.33.30:8080/,看到如下

                                                                                      圖1

 

Reference:

  1. https://www.jianshu.com/p