一、spark启动有standalong、yarn、cluster,具体的他们之间的区别这里不在赘述,请参考官网。本文采用的是standalong模式进行搭建及将接使用。

1、首先去官网下载需要的spark版本:

http://spark.apache.org/downloads.html

本例使用的是spark-2.2.0-bin-hadoop2.7,hadoop使用的是2.7版本,spark是需要scala环境的,可以下载编译好的spark,这样就不需要自己在安装了。

同时使用了hive仓库,还有kafka。hive版本:apache-hive-2.1.1-bin,(下载地址 http://mirrors.shuosc.org/apache/hive/)

kafka版本:kafka_2.11-0.11.0.1(下载地址  http://mirrors.shuosc.org/apache/kafka/0.11.0.1/kafka_2.11-0.11.0.1.tgz)

上述版本要搭配好,否则运行过程会报错。

2、搭建spark的standalong集群

1)将下载好的包上传到服务器上面,创建好一个目录用于安装,安装spark集群需要用到hdfs集群做存储,所以要先搭建hadoop集群,主要使用hdfs文件系统。

#mkdir /data

分别将包解压到data目录下面,然后就是设置环境变量:

# cat  /etc/profile

export HADOOP_HOME=/data/hadoop-2.7.3/
export PATH=$PATH:$HADOOP_HOME/bin:/data/apache-hive-2.1.1-bin/bin
JAVA_HOME=/usr/local/java
JRE_HOME=/usr/local/java/jre
JAVA_BIN=/usr/local/java/bin
JRE_BIN=$JRE_HOME/bin
PATH=$PATH:$JAVA_BIN:$JRE_BIN
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JRE_HOME JRE_BIN JAVA_BIN PATH CLASSPATH
export KE_HOME=/data/kafka-eagle
export PATH=$PATH:$KE_HOME/bin
export HIVE_AUX_JARS_PATH=/data/apache-hive-2.1.1-bin/lib

2)java环境要设置好,jdk1.8+。

接下来就是修改配置文件:

!hadoop参考我的其他文章(http://www.cnblogs.com/cuishuai/p/7496228.html),这里主要不一样的就是修改/etc/hosts文件将所有节点的ip和主机名的映射添加进去。然后修改$HADOOP/etc/hadoop目录下的slaves文件,将所有节点的主机名添加进来,所有的配置文件都用主节点上的。

!所有的数据目录都要创建好,主要在$HADOOP目录下创建一个hdfs目录,并在改目录下创建两个子目录分别为data、name

!启动集群

只在master节点上执行:

如果所有节点都是新的,需要先对namenode进行初始化:

$HADOOP/bin/hdfs  namenode  -format

$HADOOP/sbin/start-dfs.sh

$HADOOP/sbin/start-yarn.sh

#注:如果只是单纯的想要扩展hdfs的容量,那么在hdfs-site.xml里的:

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

将上面的值设置为1,表示只有一个副本,也就是不备份。如果想要进行备份,就要设置为2或想要的值。

master节点上启动后使用jps命令查看:

其他slave节点上查看:

[root@spark-worker ~]# jps
17363 DataNode
17660 NodeManager
26350 Jps

hadoop集群搭建完成,查看一下大小:

[root@spark-worker ~]# hdfs dfs -df -h
Filesystem          Size     Used  Available  Use%
hdfs://spark:9000  1.3 T  456.4 G    794.2 G   35%

其他hdfs常用的命令,参考我的其他文章。

3)接下来大搭建spark集群:

修改conf文件夹下的如下文件:

!#cp   spark-env.sh.template   spark-env.sh

export PYTHONPATH=$PYTHONPATH:/data/sftp/huoqiu/script
export SPARK_DRIVER_MEMORY=10g
export SPARK_LOCAL_DIRS=/data/sparktmp
export JAVA_HOME=/usr/local/java
export SPARK_WORKER_MEMORY=55g
export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=1800 -Dspark.worker.cleanup.appDataTtl=3600"
export SPARK_PID_DIR=/tmp

#设置spark 数据临时存放目录,一定要放在法存储的地方,否则数据量太大会报错。
export SPARK_LOCAL_DIRS=/data/sparktmp

!#cp   spark-defaults.conf.template   spark-defaults.conf

export PYTHONPATH=$PYTHONPATH:/data/sftp/huoqiu/script
export SPARK_DRIVER_MEMORY=10g
export SPARK_LOCAL_DIRS=/data/sparktmp
export JAVA_HOME=/usr/local/java
export SPARK_WORKER_MEMORY=55g
export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=1800 -Dspark.worker.cleanup.appDataTtl=3600"
export SPARK_PID_DIR=/tmp
[root@spark-worker conf]# cat spark-defaults.conf
spark.driver.extraClassPath /data/bigdata/mongo-hadoop-spark-2.0.2.jar:/root/elasticsearch-hadoop-6.0.0-beta1.jar:/data/bigdata/mysql-connector-java-5.1.43-bin.jar:/data/bigdata/spark-streaming-kafka-0-8-assembly_2.11-2.2.0.jar
spark.jars /data/bigdata/mongo-hadoop-spark-2.0.2.jar,/data/bigdata/spark-streaming-kafka-0-8-assembly_2.11-2.2.0.jar,/root/elasticsearch-hadoop-6.0.0-beta1.jar
spark.hadoop.validateOutputSpecs false
spark.ui.reverseProxyUrl http://spark.evo.xinpinget.com
spark.ui.reverseProxy true
spark.executor.memory 2g
spark.eventLog.dir /data/spark-events
spark.history.fs.logDirectory file:/data/spark-events
spark.eventLog.enabled true
spark.executor.cores 2
spark.cores.max 14
spark.driver.maxResultSize 5g
spark.driver.memory 10g
spark.driver.extraJavaOptions -Duser.timezone="Asia/Shanghai"
spark.es.nodes.discovery false
spark.es.nodes.data.only false
spark.es.nodes.wan.only false
spark.history.fs.cleaner.enabled true
spark.yarn.historyServer.address=127.0.0.1:18080
spark.history.ui.port=18080
spark.history.fs.cleaner.maxAge 7d
spark.history.fs.numReplayThreads 40%
spark.history.retainedApplications 50
spark.history.fs.update.interval 15s
spark.scheduler.mode FAIR
spark.scheduler.allocation.file /data/spark-2.2.0-bin-hadoop2.7/conf/fairscheduler.xml

!将mysql-connector-java-8.0.9-rc.jar放到spark的jars目录下面:

下载地址:http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.9-rc/mysql-connector-java-8.0.9-rc.jar

!cat  hive-site.xml

<configuration>
 <property>
      <name>hive.server2.thrift.bind.host</name>
      <value>0.0.0.0</value>
      <description>metadata is stored in a MySQL server</description>
   </property>
 <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://spark:3306/metastore?createDatabaseIfNotExist=true&amp;useSSL=false</value>
      <description>metadata is stored in a MySQL server</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.cj.jdbc.Driver</value>
      <description>MySQL JDBC driver class</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
      <description>user name for connecting to mysql server</description>
   </property>
   <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>1qaz*@WSX</value>
      <description>password for connecting to mysql server</description>
   </property>
   <property>
         <name>hive.metastore.warehouse.dir</name>
         <value>hdfs://spark:9000/data/metastore/</value>
             <description>location of default database for the warehouse</description>
         </property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://spark:9000</value>
</property>
    <property>
        <name>bson.output.build_splits</name>
        <value>false</value>
     </property>
     <property>
        <name>bson.split.write_splits</name>
        <value>false</value>
     </property>
     <property>
        <name>bson.split.read_splits</name>
        <value>false</value>
     </property>
     <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
     </property>
     <property>
        <name>mapred.reduce.child.java.opts</name>
        <value>-Xmx2g</value>
     </property>
 <property>
      <name>hive.exec.parallel</name>
      <value>false</value>
   </property>
 <property>
      <name>hive.support.sql11.reserved.keywords</name>
      <value>false</value>
   </property>

<property>

<name>hive.metastore.schema.verification</name>

<value>false</value>

</property>

</configuration>

1)       在HDFS上创建目录

构建集群还需要一个slaves文件:

cp slaves.template  slaves

cat  slaves

spark-worker
spark

将原有的slaves里面localhost注释掉。

将上述的服务分别copy到其他服务器上。

2)  启动spark

到sbin目录下:

# ./start-all.sh

!!!可以访问如下地址:

http://ip:8080

此时使用jps在master上查看:

[root@spark conf]# jps
26912 Kafka
16577 ConsoleConsumer
26401 Jps
11363 jar
31013 HistoryServer
24232 ConsoleProducer
26602 CoarseGrainedExecutorBackend
24810 NodeManager
26443 SparkSubmit
17166 Master
21811 SparkSubmit
23220 NameNode
23479 DataNode
24569 ConsoleConsumer
25945 QuorumPeerMain
17468 Worker
24349 ResourceManager

其他节点上:

[root@spark-worker ~]# jps
1601 CoarseGrainedExecutorBackend
2226 Jps
17363 DataNode
16172 Worker
17660 NodeManager

至此spark集群搭建完毕。

spark集群构建的更多相关文章

  1. 学习Hadoop+Spark大数据巨量分析与机器学习整合开发-windows利用虚拟机实现模拟多节点集群构建

    记录学习<Hadoop+Spark大数据巨量分析与机器学习整合开发>这本书. 第五章 Hadoop Multi Node Cluster windows利用虚拟机实现模拟多节点集群构建 5 ...

  2. Spark集群 + Akka + Kafka + Scala 开发(3) : 开发一个Akka + Spark的应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...

  3. Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...

  4. Spark集群 + Akka + Kafka + Scala 开发(4) : 开发一个Kafka + Spark的应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...

  5. Spark系列—01 Spark集群的安装

    一.概述 关于Spark是什么.为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org, 我就直接说一下Spark的一些优势: 1.快 与Hadoop的Ma ...

  6. Spark集群模式概述

    作者:foreyou出处:http://www.foreyou.net/2015/06/22/spark-cluster-mode-overview/声明:本文采用以下协议进行授权: 署名-非商用|C ...

  7. zhihu spark集群,书籍,论文

    spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗? 修改 我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongo ...

  8. Spark集群术语

    Spark集群术语解析 1. Application Application是用户在Spark上构建(编写)的程序,包含driver program 和executors(分布在集群中多个节点上运行的 ...

  9. Spark集群模式&Spark程序提交

    Spark集群模式&Spark程序提交 1. 集群管理器 Spark当前支持三种集群管理方式 Standalone-Spark自带的一种集群管理方式,易于构建集群. Apache Mesos- ...

随机推荐

  1. 关于java的volatile关键字与线程栈的内容以及单例的DCL

    用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最新的值.volatile很容易被误用,用来进行原子性操作. package com.guangshan.test; pub ...

  2. MYC编译器源码之语法分析

    MyC编译器采用自顶向下的方法进行语法解析,这种语法解析方式,一般是从最左边的Token开始,然后自顶向下看哪一条语法规则可能包含这个Token,如果包含这个Token,则自左向右根据这条语法规则逐一 ...

  3. 修改ActiveReports验证文字“给不能为 null 的参数指定一个 null 值”

    转:http://gcdn.gcpowertools.com.cn/showtopic-13759.html ActiveReports官方网站:http://www.gcpowertools.com ...

  4. AJPFX平台有哪些优势?

    AJPFX为全世界的客户提供高端金融投资产品服务.在欧洲,大洋洲.北美洲,亚洲均设有交易专用服务器,以保证交易系统正常和高速运作.给投资者提供可靠.稳定.正确的交易服务系统也是我们一直以来为客户提供的 ...

  5. Day37 多进程

    什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体: ...

  6. Console命令,让js调试更简单

    一.显示信息的命令 console.log("normal"); // 用于输出普通信息 console.info("information"); // 用于输 ...

  7. Django(出版社功能)

    day62 day62 2018-05-02  1. 内容回顾     Django         1. 安装             1. Django版本 1.11.xx            ...

  8. 实现一个算法,寻找字符串中出现次数最少的、并且首次出现位置最前的字符 如"cbaacfdeaebb",符合要求的是"f",因为他只出现了一次(次数最少)。并且比其他只出现一次的字符(如"d")首次出现的位置最靠前。

    实现一个算法,寻找字符串中出现次数最少的.并且首次出现位置最前的字符如"cbaacfdeaebb",符合要求的是"f",因为他只出现了一次(次数最少).并且比其 ...

  9. 频繁项集挖掘之apriori和fp-growth

    Apriori和fp-growth是频繁项集(frequent itemset mining)挖掘中的两个经典算法,虽然都是十几年前的,但是理解这两个算法对数据挖掘和学习算法都有很大好处.在理解这两个 ...

  10. Jmeter监控系统等资源,ServerAgent端口的本次启动端口修改

    默认情况下在下载的ServerAgent下,如果服务是windows系统,则直接启动"startAgent.bat"即可,如果是Linux系统,则直接启动"./start ...