诞生于 2009 年的 Apache Spark,已成为全球范围内最流行、功能最全面、社区最活跃的大数据处理技术之一。从 GitHub 的数据中可以看到,在 Apache 的所有开源项目中,Spark 的关注度排名第 3,在所有大数据处理技术中排名第 1。
此外,Spark 在资本市场也得到了极高的认可,其背后的商业化公司得到了 62 亿美元的估值。目前,绝大多数公司和组织会基于 Spark 生态搭建自己的大数据平台,构建支持业务的数据管道。Spark 之于大数据工程师,就好像 Java 对于后台工程师的作用一样:学会了并不能保证你一定能够拿到大数据岗位的 Offer,但是不会spark,拿到 Offer 的概率绝对很小。
Spark 多语言接口与 SQL 支持让它赢得了很多分析师用户,而且这部分用户中 Spark 使用者的占比也越来越大,已经成为了数据工程与数据科学的通用解决方案。
介绍到这里,你应该也已经跃跃欲试,想要掌握 Spark 了,今天我就介绍一下怎么搭建Spark集群环境 。
首先 准备安装包
由于我们使用的是已经配置好的环境,所以这里省略Hadoop集群配置,如果有需要,可以看我另一篇介绍Hadoop配置的文章,大数据分析学习第二课 Hadoop集群安装与配置
我们需要准备的软件有
Scala https://codeload.github.com/scala/scala/tar.gz/v2.13.6
Spark 我们去官网下载 Downloads | Apache Spark,选择和hadoop对应的版本,这里我选的是spark-3.1.1-bin-hadoop2.7.tgz
下载好后,我们先把scala上传到master105节点
接下来解压文件,tar -zxvf scala-2.13.6.tar.gz 解压后,我们先不配置环境变量,等后面和spark一起配置
我们接着上传spark
和上面一样解压 ,解压后进入cd spark-3.1.1-bin-hadoop2.7/conf/
其次 开始配置
1、配置 log4j.properties
复制配置文件模版 mv log4j.properties.template log4j.properties,不用修改 用默认的就好
2、配置 slaves
vi slaves
输入2个节点名称
slave106
slave107
3、配置spark-env.sh
我们复制模版
cp spark-env.sh.template spark-env.sh
然后vi spark-env.sh 添加如下内容(以下为本机示例,配置路径根据实际情况调整)
export JAVA_HOME=/software/jdk1.8.0_181
export SCALA_HOME=/software/scala-2.13.6
export HADOOP_HOME=/software/hadoop-2.7.3
export HADOOP_CONF_DIR=/software/hadoop-2.7.3/etc/hadoop
export SPARK_MASTER_IP=master105
export SPARK_MASTER_HOST=master105
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=2
export SPARK_HOME=/software/spark-3.1.1-bin-hadoop2.7
export SPARK_DIST_CLASSPATH=$(/software/hadoop-2.7.3/bin/hadoop classpath)
4、远程复制scala到其他2台从节点(也可以参照上面介绍的上传解压)
scp -r /software/scala-2.13.6 root@slave106:/software/
scp -r /software/scala-2.13.6 root@slave107:/software/
5、远程复制Spark 安装目录到其它两台主机106、107
scp -r /software/spark-3.1.1-bin-hadoop2.7 root@slave106:/software/
scp -r /software/spark-2.4.3-bin-hadoop2.7 root@slave107:/software/
6、配置三台主机环境变量
vi .bash_profile
内容如下
JAVA_HOME=/software/jdk1.8.0_181
HADOOP_HOME=/software/hadoop-2.7.3
HIVE_HOME=/software/apache-hive-3.1.1-bin
export SCALA_HOME=/software/scala-2.13.6
export SPARK_HOME=/software/spark-3.1.1-bin-hadoop2.7
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin
export JAVA_HOME
export HADOOP_HOME
export HIVE_HOME
export SCALA_HOME
export SPARK_HOME
export PATH
我们保存后 执行 source .bash_profile 使配置生效
7、启动环境
a)启动hadoop集群
start-all.sh
b)启动Spark
cd /software/spark-3.1.1-bin-hadoop2.7/
./sbin/start-master.sh
./sbin/start-slaves.sh
8、查看状态
在三台主机上分别输入jps命令查看状态,结果如下:
105
106
107
9、验证环境
我们在master105 打开浏览器 输入 http://master105:8080/,可以看到如下结果,说明集群运行正常
可以看到我们的集群运行一切正常
10、测试
我们拿以前测试的wordcount的文件测试一下
首先进入spark shell,我们进到spark安装目录spark-3.1.1-bin-hadoop2.7
执行 bin/spark-shell --master spark://master105:7077
我们输入一个简单的wordcount示例 scala语法的,这个示例是多列的
sc.textFile("hdfs://master105:9000/test0326.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).collect
会输出以下内容
再输入一个单词的示例
sc.textFile("hdfs://master105:9000/0409001.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).collect
程序完美运行了MR!
11、关闭集群
spark安装目录:
./sbin/stop-slaves.sh
./sbin/stop-master.sh
总结
感谢能看到这里的朋友😉
本次的分享就到这里,猫头鹰数据致力于为大家分享技术干货😎
如果以上过程中出现了任何的纰漏错误,烦请大佬们指正😅
受益的朋友或对技术感兴趣的伙伴记得点赞关注支持一波🙏
也可以搜索关注我的微信公众号【猫头鹰数据分析】,留言交流🙏