最近基友送了台电脑,准备将其作为一个虚拟机用来平时在家的学习环境,因为在公司学习的话会被认为是摸鱼或者工作量不饱和。由于是16G的内存,所以也做不了集群,用来学习的话也没必要,就搞个单节点吧。
1. 环境说明
本次安装环境:
- CentOS 7 lastest
- Scala_2.11
- Java_1.8
- Hadoop_3.1.3
- Spark_2.4.4
机器列表:
- 192.168.40.128 node1 hadoop_3.1.3
- 192.168.40.129 node2 spark_2.4.4
2. 准备环境
虚拟机安装CentOS就不多说了,Hadoop环境也已经搭建好,可参考《Hadoop3.1.3单节点部署》。下载spark-2.4.4-bin-hadoop2.7.tgz、jdk-8u231-linux-x64.tar.gz、scala-2.11.12.tgz。将hadoop-3.1.3的安装目录拷贝到该机器。
scp -r hadoop-3.1.3 cdhuser@node2:/home/cdhuser/
将jdk-8u231-linux-x64.tar.gz、scala-2.11.12.tgz分别解压到/usr/local/java、/usr/local/scala目录,配配置环境变量:
vim /etc/profile # 追加如下配置 export JAVA_HOME=/usr/local/java/jdk1.8.0_231 export SCALA_HOME=/usr/local/scala/scala-2.11.12 export PATH=$JAVA_HOME/bin:$PATH:$SCALA_HOME/bin
使其生效:
source /etc/profile
3.配置Spark
将spark-2.4.4-bin-hadoop2.7.tgz解压到cdhuser的家目录/home/cdhuser/,进入conf目录:
spark-2.4.4-bin-hadoop2.7.tgz cd spark-2.4.4-bin-hadoop2.7/conf/
3.1 配置spark-env.sh
拷贝spark-env.sh.template文件为spark-env.sh。
cp spark-env.sh.template spark-env.sh
填入如下内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_231 export SCALA_HOME=/usr/local/scala/scala-2.11.12 export HADOOP_HOME=/home/cdhuser/hadoop-3.1.3 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export SPARK_WORKING_MEMORY=1g #每一个worker节点上可用的最大内存 export SPARK_MASTER_IP=node2 #驱动器节点IP
3.2 配置spark-defaults.conf
拷贝spark-defaults.conf.template为spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf
填入如下内容:
#spark.master yarn spark.master spark://node2:7077 spark.yarn.jars hdfs://node1:9000/spark_jars/*.jar spark.driver.extraJavaOptions -Dhdp.version=current spark.yarn.am.extraJavaOptions -Dhdp.version=current spark.yarn.am.memory=512M spark.driver.memory=512M spark.executor.memory=512M
说明一下,这里本来要配置spark on yarn的模式,但是最终因为找不到主类的错误放弃了,就用spark集群模式即可。这里的spark.yarn.jars配置需要执行如下操作:
hadoop fs -mkdir /spark_libs hadoop fs -put $SPARK_HOME/jars/* /spark_libs
由于已经配置了Hadoop的环境变量,所以这里就没必要指定为hdfs://node1:9000/spark_libs了。
4. 启动Spark
使用start-all.sh即可启动Spark的Master和Worker
[cdhuser@node2 ~]$start-all.sh starting org.apache.spark.deploy.master.Master, logging to /home/cdhuser/spark-2.4.4-bin-hadoop2.7/logs/spark-cdhuser-org.apache.spark.deploy.master.Master-1-node2.out node2: starting org.apache.spark.deploy.worker.Worker, logging to /home/cdhuser/spark-2.4.4-bin-hadoop2.7/logs/spark-cdhuser-org.apache.spark.deploy.worker.Worker-1-node2.out
由于我们配置Hadoop的环境变量时,并没有配置$HADOOP_HOME/sbin,所以不用担心这两个脚本名字重复的问题。
5. 配置防火墙
一般大家安装时都会将防火墙给关了,其实也没必要,安装完成后通过netstat命令查看下端口即可,这里我们将添加如下防火墙策略:
sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --add-port=7077/tcp --permanent sudo firewall-cmd --add-port=8081/tcp --permanent sudo firewall-cmd --add-port=8030/tcp --permanent sudo firewall-cmd --add-port=30000-50000/tcp --permanent sudo firewall-cmd --reload
此时,Spark2.4.4单节点就已经部署完成。