spark集群构建

一、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节点上查看:

[[email protected] ~]# jps
17363 DataNode
17660 NodeManager
26350 Jps

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

[[email protected] ~]# 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 SCALA_HOME=/usr/share/scala/

export JAVA_HOME=/usr/local/java

export HADOOP_HOME=/da/hadoop-2.7.3/

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export SPARK_HOME=/da/spark-1.6.3-bin-hadoop2.4-without-hive

export SPARK_MASTER_IP=192.168.1.11

export SPARK_EXECUTOR_MEMORY=2048m

export SPARK_DRIVER_MEMORY=5g

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

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

spark.master                     spark://192.168.1.11:7077

spark.eventLog.enabled           true

spark.eventLog.dir               hdfs://192.168.1.11:8021/directory

spark.history.fs.logDirectory file:/data/spark-events

spark.serializer                 org.apache.spark.serializer.KryoSerializer

spark.driver.memory             2048M

spark.executor.extraJavaOptions  -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"

spark.driver.extraJavaOptions -Duser.timezone="Asia/Shanghai"

spark.executor.cores 6

spark.executor.memory 12g

spark.hadoop.validateOutputSpecs false
spark.ui.reverseProxyUrl  http://spark.eee.com 
spark.ui.reverseProxy true

!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.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>
</configuration>

1)       在HDFS上创建目录

因为上面的配置中让spark将eventLog存到HDFS的directory目录下,所以需要执行hadoop命令,在HDFS上创建directory目录,创建目录命令是:

#hadoop   fs  -mkdir  -p   /directory

#hadoop   fs  -chmod  777  /directory

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

cp slaves.template  slaves

cat  slaves

spark-worker
spark

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

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

2)  启动spark

到sbin目录下:

# ./start-all.sh

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

http://ip:8080

此时使用jps在master上查看:

[[email protected] 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

其他节点上:

[[email protected] ~]# jps
1601 CoarseGrainedExecutorBackend
2226 Jps
17363 DataNode
16172 Worker
17660 NodeManager

至此spark集群搭建完毕。

时间: 2024-10-07 09:40:20

spark集群构建的相关文章

Spark教程-构建Spark集群(1)

对于90%以上想学习Spark的人而言,如何构建Spark集群是其最大的难点之一,为了解决大家构建Spark集群的一切困难,家林把Spark集群的构建分为了四个步骤,从零起步,不需要任何前置知识,涵盖操作的每一个细节,构建完整的Spark集群. 从零起步,构建Spark集群经典四部曲: 第一步:搭建Hadoop单机和伪分布式环境: 第二步:构造分布式Hadoop集群: 第三步:构造分布式的Spark集群: 第四步:测试Spark集群: 本文内容为构建Spark集群经典四部曲的第一步,从零起步构建

Spark教程-构建Spark集群-安装Ubuntu系统(2)

3.点击“Finish”完成虚拟系统的创建,如下图所示: 点击我们创建的Ubuntu,如下所示 点击“CD/DVD(IDE)”进入如下界面 选择我们的Ubuntu的ISO的具体存放路径,选择好后如下图所示: 点击“OK”完成设置: 点击“Memory”,进入如下界面: 此时把我们虚拟的内存设置为2G,如下所示: 点击“OK”完成设置. Spark教程-构建Spark集群-安装Ubuntu系统(2)

Spark教程-构建Spark集群-安装Ubuntu系统(1)

Unbuntu系统是我们开发Hadoop时最常用的操作系统,下面带领大家一步步完成Vmware虚拟机下Unbuntu系统的安装 创建Vmware中的虚拟系统: 我们选择的是“Typical”的方式,点击“Next”进入下一步: 选择稍后安装操作系统,点击“Next”进入下一步: 选择安装Linux系统的Ubuntu版本,点击“Next”进入下一步: 家林这里选择了自定义系统的存放路径为“E:\VMware\Virtual Machines\Master” 如下图所示: 点击“Next”进入下一步

Spark教程-构建Spark集群-运行Ubuntu系统(2)

安装Java 1.打开终端,建立新目录“/usr/lib/java”,如下图所示: 2.把下载的JDK文件移到刚刚创建的“/usr/lib/java”中,如下图所示 3.解压JDK文件,如下图所示: 解压完成的文件目录如下图所示: 4.修改环境变量: 进入如下图所示的配置文件中: 按下“i”进入INSERT模式,把Java的环境编写信息加入其中,如下图所示: 按下“esc“键回到正常模式,保存并退出配置文件: 执行以下命令是配置文件的修改生效: 5.在终端中显示刚刚安装的Java版本,如下图所示

Spark教程-构建Spark集群-配置Hadoop单机模式并运行Wordcount(1)

安装ssh Hadoop是采用ssh进行通信的,此时我们要设置密码为空,即不需要密码登陆,这样免去每次通信时都输入秘密,安装如下: 输入“Y”进行安装并等待自动安装完成. 安装ssh完成后启动服务 以下命令验证服务是否正常启动: 可以看到ssh正常启动: 设置免密码登录,生成私钥和公钥: 在/root/.ssh中生成两个文件:id_rsa和id_rsa.pub,id_rsa为私钥,id_rsa.pub为公钥,我们将公钥id_rsa.pub追加到 authorized_keys中,因为author

Spark教程-构建Spark集群-运行Ubuntu系统(1)

为了简化权限等问题,下面我们以root用户的身份登录和使用Ubuntu系统,而Ubuntu在默认情况下并没有开启root用户,这需要我们做如下设置: sudo  -s进入 root用户权限模式 vim /etc/lightdm/lightdm.conf [SeatDefaults] greeter-session=unity-greeter user-session=ubuntu greeter-show-manual-login=true #手工输入登陆系统的用户名和密码 allow-gues

【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(11)

此时我们进入了Spark的shell世界,根据输出的提示信息,我们可以通过“http://SparkMaster:4040” 从Web的角度看一下SparkUI的情况,如下图所示: 当然,你也可以查看一些其它的信息,例如Environment: 同时,我们也可以看一下Executors: 至此,我们 的Spark集群搭建成功,Congratulations!

Spark集群模式&amp;Spark程序提交

Spark集群模式&Spark程序提交 1. 集群管理器 Spark当前支持三种集群管理方式 Standalone-Spark自带的一种集群管理方式,易于构建集群. Apache Mesos-通用的集群管理,可以在其上运行Hadoop MapReduce和一些服务应用. Hadoop YARN-Hadoop2中的资源管理器. Tip1: 在集群不是特别大,并且没有mapReduce和Spark同时运行的需求的情况下,用Standalone模式效率最高. Tip2: Spark可以在应用间(通过集

Spark学习笔记—01 Spark集群的安装

一.概述 关于Spark是什么.为什么学习Spark等等,在这就不说了,直接看这个:http://spark.apache.org, 我就直接说一下Spark的一些优势: 1.快 与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上.Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流. 2.易用 Spark支持Java.Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用.而且Sp