从0开始搭建基于Zookeeper的Spark集群

完全从0搭建Spark集群

备注:这个步骤,只适合用root来搭建,正式环境下应该要有权限类的东西后面另外再进行实验写教程

1、安装各个软件,设置环境变量(每种软件需自己单独下载)

export JAVA_HOME=/usr/java/jdk1.8.0_71

export JAVA_BIN=/usr/java/jdk1.8.0_71/bin

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH

export HADOOP_HOME=/usr/local/hadoop-2.6.0

export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib"

export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

export SCALA_HOME=/usr/local/scala-2.10.4

export PATH=${SCALA_HOME}/bin:$PATH

export SPARK_HOME=/usr/local/spark/spark-1.6.0-bin-hadoop2.6

export PATH=${SPARK_HOME}/bin:${SPARK_HOME}/sbin:$PATH

export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6

2、ssh设置

ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa            //生成key到~/.ssh/id_dsa中

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys    //追加到key中

3、主机名和域名的设置

vi /etc/hostname 改成Master或者Worker1、2、3、4

vim /etc/hosts  改域名,各个系统ip对应的域名

4、Hadoop的配置

1)cd $HADOOP_HOME/etc/hadoop/   下改动core-site.xml

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://Master:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/hadoop-2.6.0/tmp</value>

</property>

<property>

<name>hadoop.native.lib</name>

<value>true</value>

<description>Should native hadoop libraries,if present,be used</description>

</property>

</configuration>

2)还是cd $HADOOP_HOME/etc/hadoop/   下改动hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>Master:50090</value>

<description>The secondary namenode http server address and port</description>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>/usr/local/hadoop/hadoop-2.6.0/dfs/name</value>

</property>

<property>

<name>dfs.datanode.dir</name>

<value>/usr/local/hadoop/hadoop-2.6.0/dfs/data</value>

</property>

<property>

<name>dfs.namenode.checkpoint.dir</name>

<value>file:///usr/local/hadoop/hadoop-2.6.0/dfs/namesecondary</value>

<description>Determines where on the local filesystem the DFSsecondary name node should store th temporary images to merge.If this is acomma-delimited list of directories then the image is replicated in all of the irectories foe redundancy.</description>

</property>

</configuration>

3)还是cd $HADOOP_HOME/etc/hadoop/   下改动 mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

4)还是cd $HADOOP_HOME/etc/hadoop/   下改动 yarn-site.xml

<configuration>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>Master</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>

5)还是cd $HADOOP_HOME/etc/hadoop/   下改动 hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_71   对应的jdk目录

如果你想把你的Master也作为一个节点,也可以Master加入,但是机器不够多Driver如果是Master,Driver还有其它程序比如web查询等在跑,不建议把Master作为节点来跑。

=======一台机器配置到上面这个程度,然后开始复制机器,再继续下面的操作=============

6)先再看第3步里面改域名的,到各个机器上把主机名称和域名改好了

7)还是cd $HADOOP_HOME/etc/hadoop/   下改动 slaves

看你有多少slaves,分别把那些机器的域名加入进来,比如

Worker1

Worker2

Worker3

然后分别复制给几台机器:

scp slaves [email protected]:/usr/local/hadoop-2.6.0/etc/hadoop/slaves

scp slaves [email protected]:/usr/local/hadoop-2.6.0/etc/hadoop/slaves

scp slaves [email protected]/usr/local/hadoop-2.6.0/etc/hadoop/slaves

8)还是cd $HADOOP_HOME/etc/hadoop/   下改动 Master,内容就是Master

在Master不做集群的情况下,需要把Master分别拷贝到各个机器上,其实应该拷贝,这样如果不启动集群,也能跑

如果Master是集群,ZooKeeper,在ZooKeeper进行配置

scp Master [email protected]:/usr/local/hadoop-2.6.0/etc/hadoop/Master

scp Master [email protected]:/usr/local/hadoop-2.6.0/etc/hadoop/Master

scp Master [email protected]/usr/local/hadoop-2.6.0/etc/hadoop/Master

9)在Master上格式化系统

mkdir /usr/local/hadoop/hadoop-2.6.0/tmp   如果原来存在,就删除

hdfs namenode -format

10)启动dfs

cd $HADOOP_HOME/sbin

./start-dfs.sh

然后

http://Master:50070/dfshealth.html   可以看dfs文件状态

看不到,比如Configured Capacity只有0B,尝试每台机器防火墙关闭:

systemctl stop firewalld.service

systemctl disable firewalld.service

但是这个只适合于开发机,实际生产环境需要仔细看什么端口来确定。

***************如果只做Spark,到这里就足够了,做Hadoop另外说****************

5、Spark的配置

1)spark-env.sh

cd $SPARK_HOME/conf

cp出来spark-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_71

export SCALA_HOME=/usr/local/scala-2.10.4

export HADOOP_HOME=/usr/local/hadoop-2.6.0

export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0/etc/hadoop

#export SPARK_CLASSPATH=$SPARK_CLASSPATH:$SPARK_HOME/lib/ojdbc-14.jar:$SPARK_HOME/lib/jieyi-tools-1.2.0.7.RELEASE.jar

#export SPARK_MASTER_IP=Master

export SPARK_WORKER_MEMORY=2g

export SPARK_EXCUTOR_MEMORY=2g

export SPARK_DRIVER_MEMORY=2g

export SPARK_WORKER_CORES=8

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=Master:2181,Worker1:2181,Worker2:2181 -Dspark.deploy.zookeeper.dir=/spark"

参数意思讲解:

export JAVA_HOME=/usr/java/jdk1.8.0_71

export SCALA_HOME=/usr/local/scala-2.10.4

export HADOOP_HOME=/usr/local/hadoop-2.6.0

export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0/etc/hadoop   //运行在yarn模式下必须配置

export SPARK_MASTER_IP=Master       //Saprk运行的主ip

export SPARK_WORKER_MEMORY=2g   //具体机器

export SPARK_EXCUTOR_MEMORY=2g   //具体计算

export SPARK_DRIVER_MEMORY=2g

export SPARK_WORKER_CORES=8      //线程池并发数

其中export SPARK_MASTER_IP=Master是作为单机的时候,export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=Master:2181,Worker1:2181,Worker2:2181 -Dspark.deploy.zookeeper.dir=/spark"是作为集群的时候的配置

改完之后同步:

scp spark-env.sh [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/spark-env.sh

scp spark-env.sh [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/spark-env.sh

scp spark-env.sh [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/spark-env.sh

2)slaves

cd $SPARK_HOME/conf

cp出来slaves

内容为为:

Worker1

Worker2

Worker3

改完之后同步:

scp slaves [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/slaves

scp slaves [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/slaves

scp slaves [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/slaves

3)spark-defaults.conf

cd $SPARK_HOME/conf

cp spark-defaults.conf出来

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

spark.eventLog.enabled           true

spark.eventLog.dir               hdfs://Master:9000/historyserverforSpark1

spark.yarn.historyServer.address     Master:18080

spark.history.fs.logDirectory    hdfs://Master:9000/historyserverforSpark1

改完之后同步:

scp spark-defaults.conf [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/spark-defaults.conf

scp spark-defaults.conf [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/spark-defaults.conf

scp spark-defaults.conf [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/spark-defaults.conf

或者上面三步一起:

cd $SPARK_HOME

scp -r ./spark-1.6.0-bin-hadoop2.6/  [email protected]:/usr/local/spark

4)创建历史目录(第一次安装必须做)

hadoop dfs -rmr /historyserverforSpark

hadoop dfs -mkdir /historyserverforSpark

然后这里就有了:

5)启动spark

cd $SPARK_HOME/sbin

./start-all.sh

看web控制台

master:8080/

6)启动历史信息的服务

cd $SPARK_HOME/sbin

./start-history-server.sh

7)实验下Pi的算法:

./spark-submit  --class org.apache.spark.examples.SparkPi --master spark://Master:7077 ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100

开始神奇的Spark之旅吧!

***************如果Spark单机,到这里就足够了,开始补充Zookeeper做集群的东西****************

6、ZooKeeper安装集群的东西

1)先在第一台机器上解压zookeeper,目录按照开头的环境变量解压就可以

进入到zookeeper下,创建data和logs两个目录

[email protected]:/usr/local/zookeeper-3.4.6# mkdir data

[email protected]:/usr/local/zookeeper-3.4.6# mkdir logs

2)从zoo_sample.cfg中cp出zoo.cfg并设置

[email protected]:/usr/local/zookeeper-3.4.6/conf# cp zoo_sample.cfg zoo.cfg

[email protected]:/usr/local/zookeeper-3.4.6/conf# vi zoo.cfg

修改(做3台机器的集群)

dataDir=/usr/local/zookeeper-3.4.6/data

dataLogDir=/usr/local/zookeeper-3.4.6/logs

server.0=Master:2888:3888

server.1=Worker1:2888:3888

server.2=Worker2:2888:3888

3)在data下面为机器编号

[email protected]:/usr/local/zookeeper-3.4.6/conf# cd ../data/

为机器编号

[email protected]:/usr/local/zookeeper-3.4.6/data# echo 0>myid

[email protected]:/usr/local/zookeeper-3.4.6/data# echo 0>>myid

[email protected]:/usr/local/zookeeper-3.4.6/data# ls

myid

[email protected]:/usr/local/zookeeper-3.4.6/data# cat myid

[email protected]:/usr/local/zookeeper-3.4.6/data# vi myid      在这里在里面写一个0

[email protected]:/usr/local/zookeeper-3.4.6/data# cat myid

0

到这个时候一台机器已经配置好了

4)拷贝给其它两台机器同时更改myid

[email protected]:/usr/local# scp -r ./zookeeper-3.4.6 [email protected]:/usr/local

[email protected]:/usr/local# scp -r ./zookeeper-3.4.6 [email protected]:/usr/local

然后分别进去Worker1和Worker2更改myid为1和2

到这个时候3台机器的Zookeeper已经配置好了

5)下一步就是让Spark支持zookeeper下HA

到spark-env.sh中配置

[email protected]:/usr/local/spark-1.6.0-bin-hadoop2.6/conf# vi spark-env.sh

//整个集群的状态的维护和恢复都是通过zookeeper的,状态信息都是(下面的这段就是上面被注释的东西,要切单机和集群就靠这个了)

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=Master:2181,Worker1:2181,Worker2:2181 -Dspark.deploy.zookeeper.dir=/spark"

已经配置集群了,所以还要注释

#export SPARK_MASTER_IP=Master

[email protected]:/usr/local/spark-1.6.0-bin-hadoop2.6/conf# scp spark-env.sh [email protected]:/usr/local/spark/spark-1.6.0-bin-hadoop2.6/conf/spark-env.sh

spark-env.sh                                  100%  500     0.5KB/s   00:00

[email protected]:/usr/local/spark-1.6.0-bin-hadoop2.6/conf# scp spark-env.sh [email protected]:/usr/local/spark /spark-1.6.0-bin-hadoop2.6/conf/spark-env.sh

spark-env.sh                                  100%  500     0.5KB/s   00:00

到这个时候3台机器的Spark也已经配置好了,下面就是启动了

6)整体启动步骤

启动Hadoop hdfs

cd $HADOOP_HOME/sbin

./start-dfs.sh

三台Zookeeper的机器分别启动Zookeeper:

cd $ZOOKEEPER_HOME/bin

./zkServer.sh start

启动Spark

在Master启动:

cd $SPARK_HOME/sbin

./start-all.sh

./start-history-server.sh

在另外两台机器启动:

cd $SPARK_HOME/sbin

./start-mastser.sh

jps分别在三台机器上查看进程

或者看控制台

整个集群算启动好了

7)如果要实验集群效果

可以启动./spark-shell --master spark://Master:7077,Worker1:7077,Worker2:7077

然后把Master的master进程用 ./stop-master停止,过一段时间(根据机器几秒到几分钟不等)自动切换到另外的机器上

时间: 2024-12-23 06:57:45

从0开始搭建基于Zookeeper的Spark集群的相关文章

spark基于Zookeeper的HA集群重启

1.首先应该了解,spark集群基于Zookeeper的HA实现 当master挂了之后,会重新ElectLeader,不会影响Application的运行.默认的Zookeeper"/spark"目录下,会持久化driver,worker,master等信息. 2.Application需要重新submit的情况是在重启Driver所在的机器的时候,也就是说Driver一旦挂了,那么只有重新去提交Application这一途径. 3.重启步骤: 01,02,03三台master机器.

7.基于yarn的Spark集群搭建

构造分布式的Spark1.0.2集群 下载Scala 2.10.4,具体下载地址: http://www.scala-lang.org/download/2.10.4.html 在Ubuntu机器上Scala会帮助我们自动选择“scala-2.10.4.tgz”进行下载: 安装和配置Scala 我们需要在master.slave1以及slave2上分别安装Scala 安装Scala 将Scala安装包拷贝到各台机器上 解压 新建目录/usr/lib/scala 将上述解压之后的文件夹scala-

HyperLedger Fabric基于zookeeper和kafka集群配置解析

简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)--Fabric多节点集群生产部署),该配置文件主要用于构建创世区块(在构建创世区块之前需要先创建与之对应的所有节点的验证文件集合),其中在配置Orderer信息中有一个OrdererType参数,该参数可配置为"solo" and "kafka",之前博文所讲的环境配置皆是solo,即单节点共

Tomcat:基于Apache+Tomcat的集群搭建

根据Tomcat的官方文档说明可以知道,使用Tomcat配置集群需要与其它Web Server配合使用才可以完成,典型的有Apache和IIS. 这里就使用Apache+Tomcat方式来完成基于Tomcat在集群配置. 软件准备 1)Apache HTTP Server: 使用百度搜索httpd-2.2.25-win32-x86-no_ssl.msi,应该可以找到很多相关的下载链接.这里也提供一个:http://vdisk.weibo.com/s/C3trk_uGGkrmc 2)Tomcat

spark集群--elasticsearch

spark集群搭建 elasticsearch读写数据 ==================================================== spark集群搭建 spark官网:http://spark.apache.org 各个版本:spark-2.1.0, java 1.8.0_121以及elasticsearch-5.2.0 本集群利用的是spark的独立集群管理器 准备N台服务器(1台主节点,n-1台工作节点) 分别将N台机器装上java 1.8.0_121以及将sp

Spark集群框架搭建【VM15+CentOS7+Hadoop+Scala+Spark+Zookeeper+HBase+Hive】

目录 1 目的 2 准备工作 3 安装过程 3.1 在虚拟机中安装CentOS7 3.1.1 虚拟机设置 3.1.2 安装Linux系统 3.2 JAVA环境 3.2.1 卸载Linux自带的jdk 3.2.2 下载并安装最新版本的jdk 3.2.3 环境变量设置 3.3 SSH免密登陆 3.3.1 准备工作 3.3.2 设置免密登陆 3.4 Hadoop2.7.2安装及集群配置 3.4.1 Hadoop安装 3.4.2 伪分布式集群配置 3.4.3 启动hadoop 3.5 Spark安装及环

03. 搭建Spark集群(CentOS7+Spark2.1.1+Hadoop2.8.0)

一.下载安装scala 1.官网下载 2.spar01和02都建立/opt/scala目录,解压tar -zxvf scala-2.12.8.tgz 3.配置环境变量 vi /etc/profile 增加一行 export    SCALA_HOME=/opt/scala/scala-2.12.8 同时把hadoop的环境变量增加进去,完整版是: export JAVA_HOME=/opt/java/jdk1.8.0_191export HADOOP_HOME=/opt/hadoop/hadoo

spark集群搭建整理之解决亿级人群标签问题

最近在做一个人群标签的项目,也就是根据客户的一些交易行为自动给客户打标签,而这些标签更有利于我们做商品推荐,目前打上标签的数据已达5亿+, 用户量大概1亿+,项目需求就是根据各种组合条件寻找标签和人群信息. 举个例子: 集合A: ( 购买过“牙膏“的人交易金额在10-500元并且交易次数在5次的客户并且平均订单价在20 -200元)  . 集合B: (购买过“牙刷”的人交易金额在5-50 并且交易次数在3次的客户并且平均订单价在10-30元). 求:<1>  获取集合A  交 集合B 客户数

动手搭建docker并在docker容器中建spark集群

本人亲自测试搭建,由于是初学一路搭建下来走了不少弯路.如有不对或更简洁的步骤请提出环境: win10上安装的虚拟机,虚拟机装的centos7,并liunx界面化(之前搭建一次在网和端口都可以telnet前提下,就是访问不了docker容器中的服务地址,此次是为了防止宿机不能访问下用虚拟机界面浏览器),centos7的命令和centos6有区别,而且centos7中是没有iptables命令,如要使用自己安装.本人搭建的 虚拟机ip:192.168.20.129spark master节点IP: