简介
Spark 的安装部署比较简单,用户访问官网下载最新版本或历史版本,参阅官方文档作为参考。作者写本文时,最新的版本为2.2.0,因此此文章所述环境搭建均已Spark2.2.0版本为例。
Spark使用了Hadoop的HDFS作为持久化存储层,因此安装Spark时,应先安装与Spark版本兼容的Hadoop。同时Spark计算框架以Scala语言开发,对Scala,JDK版本也有具体要求。以版本2.2.0为例,需要java8,scala2.11.*。
本文的实际搭建环境为 Ubuntu16.04, 其他Linux发行版的安装类似,基本一致。
1 本地文件下载
2 安装 JAVA
- 将下载的JDK文件解压到/usr/local/jvm目录
- JDK 环境配置,用编辑器打开/etc/profile文件,加入如下内容:
关闭并保存profile文件export JAVA_HOME = /use/local/jvm/jdk1.8.0_144 export PATH = $PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
- 输入命令 source /etc/profile 使配置生效
3 安装 SCALA
-
找到下载好的安装包 scala-2.11.11.tgz
-
安装
tar zxvf scala-2.11.11.tgz -C /usr/local/scala cd /usr/local/scala ln -s scala-2.11.11 scala
-
配置,打开/etc/profile,添加如下语句:
export SCALA_HOME = /usr/local/scala/scala export PATH = $PATH:$SCALA_HOME:bin
4 配置SSH免密登录
在分布式系统中,通常使用SSH服务来启动Slave节点上的程序,当节点数量比较大的时候,频繁的输入密码进行身份认证是比较差的体验,切安全性不一定高。使用SSH公私钥的方式达到SSH免密码登录。
首先在MASTER节点上创建一对公司钥(公钥文件 ~/.ssh/id_rsa.pub;私钥文件 /.ssh/id_rsa),然后把公钥拷贝到woeker节点上(/.ssh/authorized_keys)
5 Hadoop的安装配置
-
将hadoop binary压缩包解压到目标目录(软链接自由选择用不用)
tar zvxf hadoop-2.7.4.tar.gz -C /usr/local/hadoop ln -s hadoop-2.7.4 hadoop
-
配置:“core-site.xml”:Hadoop的核心信息,包括临时目录、访问地址等;
<property> <name>fs.defaultFS</name>name> <value>hdfs://Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file://root/bigdata/tmp</value> </property> <property> <name>io.file.buffer.szie</name> <value>131702</value> </property>
-
配置:“yarn-site.xml”:可以简单理解为配置相关job的处理;
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>Master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>Master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>Master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>Master:8033</value> </property> <property> <name>yar.resourcemanager.webapp.address</name> <value>Master:8088</value> </property>
-
创建 namenode 和 datanode目录,并配置路径
mkdir -p /hdfs/namenode
mkdir -p /hdfs/datanode
-
配置:“hdfs-site.xml”:可以确定文件的备份个数、数据文件夹的路径;
<property> <name>dfs.namenode.name.dir</name> <value>file:/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/hdfs/datanode</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>true</value> </property>
-
配置“mapredsite.xml”
<property> <name>mapreduce.jobhistory.address</name> <value>Master:10020</value> </property> <property> <name>mapreduce.hobhistory.webapp.address</name> <value>Master:19888</value> </property>
-
配置”slaves“文件,在其中加入所有从节点的主机名
x.x.x.x worker1 x.x.x.x worker2
-
格式化namenode
/usr/local/hadoop/hadoop-2.7.4/bin/hadoop namenode -format
6 Spark 的安装配置Spark
- 解压spark binary 到目标目录
tar zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /usr/local/spark/spark-2.2.0-bin-hadoop2.7
- 配置spark
- /etc/profile 文件添加:
export SPARK_HOME=/usr/local/spark/spark-2.2.0-bin-hadoop2.7 PATH=$PATH:$SPARK_HOME/bin
- 配置 /etc/hosts,加入集群中master以及哥哥worker节点的ip与hostname配对
x.x.x.x Master-name x.x.x.x worker1 x.x.x.x Worker2 x.x.x.x Worker3
- 进入/usr/local/spark/spark-2.2.0-bin-hadoop2.7/conf,命令行执行
cp spark-env.sh.template spark-env.sh vi spark-env.sh
- 文件末尾加入
保存并退出,执行export JAVA_HOME=/usr/local/jvm/jdk1.8 export SCALA_HOME=/usr/local/scala/scala export SPARK_MASTER_IP=127.0.1.1 export SPARK_WORKER_MEMORY=1g
cp slaves.template slaves vi slaves # 输入 worker节点的hostname worker1 worker2 worker3
7 Hadoop与Spark 集群的复制
我们到此为止已经完成了一台主机的配置,现在将该环境及部分配置文件从Master分发到各个Worker节点上。在集群环境中,有一台主机想多台主机间的文件传输一般使用pssh工具完成。为此,在Master上建立一个workerlist.txt,其中保存了所有Worker的IP.
复制环境 | 命令行 |
---|---|
JDK环境 | pssh -h workerlist -r /usr/local/scala / |
SCALA环境 | pssh -h workerlist -r /usr/local/scala / |
Hadoop环境 | pssh -h workerlist -r /usr/local/hadoop / |
Spark环境 | pssh -h workerlistt -r /usr/local/hadoop / |
系统配置 | pssh -h workerlist /etc/hosts /, pssh -h workerlist /etc/profile / |
至此,Spark Linux 集群环境搭建完毕。
8 Spark 集群试运行
最近还在学习中,随时更新
网友评论