本文记录了在虚拟机环境下Spark集群的完整搭建…
系统环境
软件版本
软件 | 安装包版本 |
---|---|
hadoop | hadoop-2.7.7.tar.gz |
jdk | jdk-8u191-linux-x64.tar.gz |
scala | scala-2.12.8.tgz |
mysql | mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz |
spark | spark-2.4.0-bin-hadoop2.7.tgz |
集群环境
ip | hostname | system | |
---|---|---|---|
master | 10.96.81.166 | jms-master-01 | centos7.2 [ CPU: 4 & 内存: 12G & 硬盘大小: 100G ] |
node | 10.96.113.243 | jms-master-02 | centos7.2 [ CPU: 4 & 内存: 12G & 硬盘大小: 100G ] |
node | 10.96.85.231 | jms-master-03 | centos7.2 [ CPU: 4 & 内存: 12G & 硬盘大小: 100G ] |
约定规范
约定所有软件的安装目录:/home/hadoop/tools
约定所有的安装包存放目录:/home/hadoop/tools/package
前期准备
本文默认已经搭建好了hadoop集群环境。
安装包下载
为节省时间,提前在官网下载好和hadoop环境版本匹配的spark安装包spark-2.4.0-bin-hadoop2.7.tgz
如果没有安装scala,请下载scala安装包scala-2.12.8.tgz,并安装。
scala安装
先在master节点完成安装,然后scp到其他各个node节点。
master主节点安装
以下安装在master(jms-master-01)进行:
上传scala安装包至master节点:
1 | scp scala-2.12.8.tgz jms-master-01:/home/hadoop/tools/package |
配置scala环境变量
1 | sudo vim /etc/profile |
环境变量立即生效
1 | source /etc/profile |
验证
1 | [hadoop-01 tools]$ scala -master |
退出scala交互窗口命令
:q
node节点分发
1 | 分发scala |
最后在各节点刷新profile文件使配置生效,并验证scala是否安装成功。
Spark安装
先在master节点完成安装,然后scp到其他各个node节点。
master主节点安装
上传&解压
1 | scp spark-2.4.0-bin-hadoop2.7.tgz jms-master-01:/home/hadoop/tools/package |
添加Spark环境变量
1 | sudo vim /etc/profile |
修改Spark配置文件
spark配置文件模版在: cd ${SPARK_HOME}/conf/
主要修改两个配置文件:spark-env.sh和slaves
spark-env.sh
1 | 复制模版 |
slaves
1 | cp slaves.template slaves |
node节点分发
1 | 分发spark |
最后在各节点刷新profile文件使配置生效。
启动Spark集群
启动前确定Hadoop集群已经启动。
启动命令sh $SPARK_HOME/sbin/start-all.sh
1 | [hadoop@jms-master-01 spark-2.4.0-bin-hadoop2.7]$ cd sbin/ |
Spark集群测试
运行第一个spark任务WorldCount
1,准备一个测试文件,摘录一段百度词条中对spark的介绍内容。
1 | vim spark-test.txt |
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。
2,将测试文件上传到hdfs中hadoop fs -put spark-test.txt /user/hadoop/input
测试代码
val f = sc.textFile(“hdfs://jms-master-01:9000/user/hadoop/input/spark-test.txt”)
f.flatMap(line => line.split(“ “)).map(word => (word, 1)).reduceByKey( +).collect().foreach(println)
启动spark-shell:
spark-shell
1 | [hadoop-01 spark-2.4.0-bin-hadoop2.7]$ spark-shell -master |
测试
1 | scala> val f = sc.textFile("hdfs://jms-master-01:9000/user/hadoop/input/spark-test.txt") |
至此,Spark2.4.0分布式环境搭建完成。
本文链接: https://stefanxiepj.github.io/archives/39023773.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)