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/91a98fd882e7

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL之查看默认的事物隔离级别 原

        List-2中可以看出事物隔离级别是repeatable-read;事物的read-only是被关闭的,这个tx_read_only在Spring的注解...

    克虏伯
  • Spark集群安装方式2 原

        环境: jdk1.8、hadoop-2.7、spark-1.6、三台centos7(如下List-1所示)

    克虏伯
  • MySQL之如何消除大量的@@session.tx_read_only

        当有好多个线程(我测试时是300个线程)去对数据库进行操作时,用如下命令查看

    克虏伯
  • Fedora 13桌面管理的新发现

    如果有很多程序同时开着,你如果快速找到所需要的窗口呢?怎么就能都快速预览,然后找到所要的窗口呢?

    williamwong
  • js控制浏览器新开窗打开页面

    在a标签有一个属性为target,将其值设置为“_blank“,即可新开一个窗口打开页面,那么通过js也可以控制打开新的窗口来开启页面。

    无邪Z
  • 我是如何通过CSRF拿到Shell的

    织梦内容管理系统(DedeCms) 以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展,目前...

    FB客服
  • JavaScript中的沙箱机制探秘

    最近有需求要研究下开放给用户的自动化工具,于是就顺便整理了下沙箱的相关问题。Sandbox,中文称沙箱或者沙盘,在计算机安全中是个经常出现的名词。Sandbox...

    星回
  • Spring5.0源码深度解析之SpringBean的Aop通知调用链源码分析

    这里就是那五个通知后面还有个TransactionInterceptor,后面会分析它

    须臾之余
  • day39_Spring学习笔记_07_CRM_03

      /day36_06_Spring_crm/WebRoot/WEB-INF/pages/coursetype/listCourse.jsp

    黑泽君
  • java多线程开发容易犯的错误

          昨天在社区上看到有人讨论多线程使用,多线程遇到一些问题以及一些使用技巧记录一下。为什么要使用多线程, 不能是为了用而用,和设计模式一样用的合理,会让...

    杉枫

扫码关注云+社区

领取腾讯云代金券