(推广一下本身的我的主页 zicesun.com) 本文讲介绍如何搭建spark集群。html
搭建spark集群须要进行一下几件事情:java
上述全部的文件都安装在/home/zhuyb/opt文件夹中。node
服务器是实验室的,选用了一台master和三台slave机器.IP和机器名在hosts文件中作了映射,所以能够经过hostname直接访问机器。web
ip addr | hostname |
---|---|
219.216.64.144 | master |
219.216.64.200 | hadoop0 |
219.216.65.202 | hadoop1 |
219.216.65.243 | hadoop2 |
详情参考集群环境ssh免密码登陆设置 shh免密登陆配置其实很容易,咱们如今有四台机器,首先咱们master上生成新的公钥和私钥文件。shell
ssh-keygen -t rsa #.ssh文件夹将出现id_rsa,id_rsa.pub
cat id_rsa.pub >> authorized_keys #将公钥拷贝到authorized_keys文件中
复制代码
而后按照一样的方式在三台slave机器上生成公钥和私钥,并将各自的authorized_keys文件拷贝到master上,并将文件中的公钥追加到master的authorized_keys文件中。编程
ssh-copy-id -i master #将公钥拷贝到master的authorized_keys中
复制代码
最后讲master的authorized_keys文件拷贝到三台slave机器上。至此,四台机器便可实现ssh免密登陆。bash
JDK版本是1.8, Scala版本是2.11。Scala 2.12与spark 2.4版本有些不兼容,在后续编程的时候会出现一些问题,以后应该会解决。讲jdk和scala文件解压以后,可在~/.bashrc
文件中配置环境变量。服务器
export JAVA_HOME=/home/zhuyb/opt/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
export SCALA_HOME=/home/zhuyb/opt/scala-2.11.12
export PATH=${SCALA_HOME}/bin:$PATH
复制代码
按照上述方式配置好以后,而后执行命令 source ~/.bashrc
。全部的操做须要在每台机器上进行配置。app
~/opt/
文件夹下。tar -zxvf hadoop-2.7.3.tar.gz
mv hadoop-2.7.3 ~/opt
复制代码
~/.bashrc
文件中配置环境变量,并执行source ~/.bashrc
生效```
export HADOOP_HOME=/home/zhuyb/opt/hadoopp-2.7.6
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin/:$PATH
export CLASSPATH=.:$HADOOP_HOME/lib:$CLASSPATH
export HADOOP_PREFIX=/home/zhuyb/opt/hadoop-2.7.6
```
复制代码
修改相应的配置文件框架
a. 修改$HADOOP_HOME/etc/hadoop/slaves,将原来的localhost删除,改为以下内容:
hadoop0
hadoop1
hadoop2
复制代码
b. 修改$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>file:/home/zhuyb/opt/hadoop-2.7.6/tmp</value>
</property>
</configuration>
复制代码
c. 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.datanode.address</name>
<value>0.0.0.0:50010</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<!-- 备份数:默认为3-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- namenode-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/zhuyb/tmp/dfs/name</value>
</property>
<!-- datanode-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/zhuyb/tmp/dfs/data</value>
</property>
</configuration>
复制代码
d. 复制template,生成xml, cp mapred-site.xml.template mapred-site.xml
,修改$HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
<!-- mapreduce任务执行框架为yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- mapreduce任务记录访问地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
复制代码
e. 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
复制代码
f. 修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh,修改JAVA_HOME
export JAVA_HOME=~/opt/jdk1.8.0_121
复制代码
将master Hadoop文件夹拷贝到Hadoop0,hadoop1,hadoop2三台机器上
scp -r ~/opt/hadoop-2.7.3 zhuyb@hadoop0:~/opt
复制代码
~/opt
下,而后在~/.bashrc
配置环境变量,并执行source ~/.bashrc
export SPARK_HOME=/home/zhuyb/opt/spark-2.4.0-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME
复制代码
cp spark-env.sh.template spark-env.sh
修改$SPARK_HOME/conf/spark-env.sh,添加以下内容:export JAVA_HOME=/home/zhuyb/opt/jdk1.8.0_201
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
复制代码
cp slaves.template slaves
,修改$SPARK_HOME/conf/slaves,添加以下内容:hadoop0
hadoop1
hadoop2
复制代码