如何搭建Spark分布式集群?步骤有哪些?

2020-05-11 09:56发布

3条回答
璞璞
2楼 · 2020-05-11 18:14

一、平台环境
虚拟机:VMware Workstation Pro 64位
操作系统:Ubuntu16.04 64位

二、 软件包
Jdk-8u171-linux-x64.tar(java version 1.8.0_171)
Hadoop 2.9.1.tar
Scala-2.11.6
Spark-2.3.1-bin-hadoop2.7


三、Spark分布式集群环境搭建过程
0. 准备工作
首先,我们只建立一台虚拟机出来。待配置好基本通用的配置信息后,我们再克隆出两台来,这样会方便许多。
系统采用的是Ubuntu16.04,虚拟机网络适配器选择NET模式,手动配置静态IP地址,关闭防火墙。
接下来,到网站上下载搭建Spark集群环境所需的各种软件。所有下载的软件都保存在ubuntu16.04的~/spark工作目录下,其绝对路径为:/home/hadoop/spark。
1.    创建hadoop用户
因为之前我的虚拟机上已安装 Ubuntu16.04,但是为了方便,我们需要创建一个新的系统用户名,比如,我新增加了一个名为“hadoop”的用户。其具体过程如下:
创建hadoop用户、设置密码、为hadoop用户增加管理员权限、注销当前用户(点击屏幕右上角的齿轮,选择注销),在登陆界面使用刚创建的 hadoop 用户进行登陆。
按 ctrl+alt+t 打开终端窗口,输入以下命令,完成创建:

    

    
 
2.    修改计算机环境
1)    集群环境:1台master,2台slave,即slave1、slave2
2)    修改主机名hostname,将主机名改为master,并查看修改后的主机名,之后必须重启计算机!!否则执行其他命令时会报错。
     

     

     


3)    修改自身的IP地址,可通过ifconfig查看修改后的IP地址。

    

    


4)修改hosts文件
注意:hosts文件里正常会存在一个localhost 及其对应的IP地址,千万不要删除它,直接把以上三行信息给加到后边就行了,删除了localhost,Spark会找不到入口!
     

     
 
3.    更新apt(不是必须的)
使用命令sudo apt-get update进行更新,目的是更新所有的依赖软件,以防后面某些软件安装不成功。如果所有主机 Ubuntu 的软件都是最新的,就不需要这一步了。
4.    安装vim
     


5.    安装JDK
1) 在~/spark目录下,使用命令tar -zvxf jdk-8u171-linux-x64.tar.gz解压该压缩包。
2) 修改环境变量,使用命令sudo vi /etc/profile 修改配置文件,之后使用命令 source /etc/profile,使文件修改生效。
3) 使用命令java –version检查jdk是否安装成功。
     

     
 
6.    安装SCALA
1)    使用命令sudo apt install scala进行在线安装scala
2)    使用命令scala –version检查scala是否安装成功
3)    使用命令which scala查看scala的安装位置路径
4)    与JDK一样,使用命令sudo vi /etc/profile 修改环境变量的配置文件,之后使用命令 source /etc/profile,使文件修改生效。
     

     

     


7.    安装SSH服务
使用命令sudo apt-get install openssh-server进行安装,SSH具体配置在克隆出两台slave后再配置。
     


8.    克隆主机
1)    在配置完上述内容后,集群中节点的通用配置已基本完成。接下来,我们克隆两台slave出来,形成1台master、两台slave(slave1、slave1)的集群环境。
2)    修改克隆出的主机hostname文件及自身IP地址(因为克隆的master,则这里的hosts文件不用修改),必须和hosts文件里的主机名和IP地址要对应,可通过ifconfig查看IP地址(参照第2步)。
3)    重启计算机,使用ping命令,查看修改后的计算机能否连通。

    

    
 
9.    配置master与slave
1)    配置每台主机的SSH免密码登录环境
2)    在每台主机上生成公钥和私钥对
     

     

     
 
3)    将slave1与slave2上的id_rsa.pub发送给master
     

     
 
4)    在master上,将所有公钥加载到用于认证的公钥文件authorized_key中,并查看生成的文件。
     


5)    将master上的公钥文件authorized_key分发给slave1、slave2.
     


6)    最后使用SSH命令,检验是否能免密码登录。
     

    

    
 
10.    安装hadoop
1)    在~/spark目录下,解压已下载的hadoop压缩包。
2)    使用命令cd spark/hadoop/hadoop-2.9.1/etc/hadoop,进入hadoop配置目录,在该目录下,需要修改配置文件,分别是:hadoop-env.sh , yarn-env.sh , slaves , core-site.xml , hdfs-site.xml , mapred-site.xml , yarn-site.xml 。使用以下命令依次对上述文件进行修改:
     

     
 
修改hadoop-env.sh,添加JAVA_HOME
     


修改yarn-env.sh ,添加JAVA_HOME
     


修改slaves,配置slave节点的ip或hostname

    


修改core-site.xml
     


修改hdfs-site.xml
     


修改mapred-site.xml(先拷贝该文件的模板,再重命名为mapred-site.xml,最后进行修改)
     
     

     

 

修改yarn-site.xml
     


3)    将配置好的hadoop-2.9.1文件分发给所有slave。
     
     


4)    最后,格式化namenode。
     

     


5)    启动hadoop集群
     

    
 
6)    验证hadoop是否安装成功
i)    使用jps命令查看hadoop进程。

    

ii)    在浏览器中输入 http://master:8088 能够访问hadoop管理界面。
     


11.    安装Spark
1)    在~/spark目录下,解压已下载的spark压缩包。
2)    使用命令cd spark/spark-2.3.1/conf,在该目录下,看到很多文件都是以template结尾的,这是因为spark给我们提供的是模板配置文件,我们可以先拷贝一份,然后将.template给去掉,变成真正的配置文件后再编辑。

     


3)    配置spark-env.sh,该文件包含spark的各种运行环境。
     

     
 
4)    配置slaves文件
     

     


5)    将配置好的spark-2.3.1文件分发给所有slave。
     

     
 
6)    启动spark集群
i)    使用命令cd spark/hadoop/hadoop-2.9.1进入hadoop目录,在该目录下,启动 hadoop 文件管理系统 HDFS以及启动 hadoop 任务管理器 YARN。
ii)    启动 spark
     

     
 
7)    查看Spark集群信息
i)    使用jps命令查看spark进程。
     

     
     


ii)    查看spark管理界面,在浏览器中输入:http://master:8080

    
 
8)    运行 spark-shell,可以进入 Spark 的 shell 控制台。

     

9)    停止运行集群
   停止集群时,运行sbin/stop-all.sh停止Spark集群,运行sbin/stop-dfs.sh来关闭hadoop 文件管理系统 HDFS,最后运行sbin/stop-yarn.sh来关闭hadoop 任务管理器 YARN。

 
四、Spark运行示例

使用Spark shell的交互式方式分析数据

1. 加载本地文件到HDFS中

1) 使用命令bin/hdfs dfs -mkdir -p /data/input ,即在虚拟分布式文件系统上创建一个测试目录/data/input

2) 使用命令hdfs dfs -put README.txt /data/input ,即将/hadoop-2.9.1目录下的README.txt文件复制到虚拟分布式文件系统中

3) 使用命令bin/hdfs dfs -ls /data/input ,即查看HDFS文件系统中是否存在我们所复制的文件

    

 

2. 在spark-shell 窗口,编写scala语句,将从HDFS中加载README.txt文件,并对该文件作简单分析

1) 首先,将README.txt的文件打开,可以看到里面的内容,如下所示:

    

2) 在spark-shell窗口上,通过使用count()、first()、collect()等操作,来对README.txt进行分析

    i) 从HDFS中加载README.txt文件

    

    ii) Count()操作的含义:RDD 中的 item 数量,对于文本文件来说,就是其总行数。First()的含义:RDD 中的第一个 item,对于文本文件,就是指其第一行内容,与第1步骤中的第一行内容一样,说明没出错。

    

    iii) 使用collect(),对文件进行词数统计

    

    

 
测试完成,搭建成功!!!
————————————————
版权声明:本文为CSDN博主「BoSeal」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_15349687/java/article/details/82748074

十一郎
3楼 · 2020-05-13 09:07

spark集群有多种,就用典型得master/slave模式举例:

1、上传以.gz结尾的spark压缩包上传到服务器;

2、解压缩;

3、进入到解压后的spark的conf目录中,将spark-env.sh.template和slaves.template改名,去掉template;

4、在slaves.sh文件中配置从节点,在spark-env.sh文件中配置主节点和端口号;

配置完成,进入sbin目录启动集群。

zgtl_20
4楼 · 2021-12-08 17:42

一、架构说明


本次基于spark-2.4.3-bin-hadoop2.6版本进行分布式配置。在此设置一个主节点和两个从节点。


准备3台虚拟机,分别为:


主机名


IP地址


master


192.168.0.41


slave1


192.168.0.42


slave2

192.168.0.75


本章节是记录Spark的搭建,后续会记录Hbase、Zookeeper、Scala、Kafka、Hadoop、Hive等的搭建,都是基于该环境的,一主两从模式的。 


已经在/home下创建了hadoop文件夹,用来存放各种安装的软件。


下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/,这是我找的一个镜像服务器地址


二、搭建步骤


1、上传spark-2.4.3-bin-hadoop2.6.tgz到/home/hadoop下,然后解压tar -zxvf spark-2.4.3-bin-hadoop2.6.tgz


2、配置环境变量,vim /etc/profile

export SPARK_HOME=/home/hadoop/spark-2.4.3-bin-hadoop2.6

export PATH=$PATH:$JAVA_HOME/bin:$SPARK_HOME/bin


3、修改spark-env.sh文件,进入spark-2.4.3-bin-hadoop2.6目录


复制目录下conf里的spark-env.sh.template:cp spark-env.sh.template spark-env.sh


修改配置:vim spark-env.sh


export JAVA_HOME=/usr/jdk1.8.0_161

export SCALA_HOME=/home/hadoop/scala-2.11.1

export SPARK_MASTER_IP=192.168.0.41

export SPARK_WORKER_MEMORY=1g

export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.6.0-cdh5.8.0/etc/hadoop




4、配置slaves,还是conf目录下,运行命令:mv slaves.template slaves


然后在slaves里添加配置


master


slave1


slave2




5、复制spark-2.4.3-bin-hadoop2.6到slave1、slave2


scp -r /home/hadoop/spark-2.4.3-bin-hadoop2.6 root@192.168.0.75:/home/hadoop


scp -r /home/hadoop/spark-2.4.3-bin-hadoop2.6 root@192.168.0.42:/home/hadoop


同时将/etc/profile拷贝到slave1、slave2上,或者将配置内容拷贝过去,然后记得source /etc/profile


6、启动spark集群


在spark-2.4.3-bin-hadoop2.6目录下的sbin目录执行./start-all.sh




使用jps和8080端口可以查看集群是否启动成功


 


相关问题推荐

  • spark的优点有哪些?2021-07-05 16:55
    回答 20

    首先, Spark 非常好用。由于高级 API 剥离了对集群本身的关注,你可以专注于你所要做的计算本身, 只需在自己的笔记本电脑上就可以开发 Spark 应用。其次, Spark 很快,支持交互式使用和复杂算法。最后, Spark 是一个通用引擎,可用它来完成各种各样的运算...

  • 回答 5

    现在企业中多数用的是相对稳定的Spark2.2.0版本。

  • 回答 4

        Spark,是一种One Stack to rule them all的大数据计算框架,是一种基于内存计算的框架,是一种通用的大数据快速处理引擎。    这一站式的计算框架,包含了Spark RDD(这也是Spark Core用于离线批处理)、Spark SQL(交互式查询)、Spark Streaming(实时...

  • 回答 10

    常用RDD算子(1)Action RDDforeach:遍历每个元素,无返回值,一般用在将结果存储到数据库中使用saveAsTextFile存储到hdfs,RDD每个partition存到hdfs的一个block块saveAsObjectFile:存储到hdfs,将每个partition的数据序列化后,以sequenceFile(序列化)...

  • 回答 6

    主要功能:管理当前节点内存,CPU的使用状况,接收master分配过来的资源指令,通过ExecutorRunner启动程序分配任务,worker就类似于包工头,管理分配新进程,做计算的服务,相当于process服务。需要注意的是:1)worker会不会汇报当前信息给master,worker心...

  • RDD五大属性2020-07-15 13:45
    回答 3

    1、RDD是一个分片的数据集合;2、RDD的函数针对每个分片进行计算;3、RDD之间是个依赖的集合;4、可选:key-value型RDD是根据哈希来分区的;5、可选:数据本地性优先计算。

  • 回答 3

    在hadoop/bin目录下有yarn命令yarn application -kill 

  • 回答 3
    已采纳

    1.Spark SQLSpark SQL是Spark用来操作结构化数据的组件。通过Spark SQL,用户可以使用SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。Spark SQL支持多种数据源类型,例如Hive表、Parquet以及JSON等。Spark SQL不仅为Spark提供了一个SQL接口,还支持开发...

  • 回答 4

    Spark SQL 在 Spark1.x 中和传统 SQL 不完全一致。但是在 Spark2.x 版本中遵循的美国的ANSI的SQL2003完全标准sql 。oracle和mysql都有自己的语法规则,平时所使用的 SQL 语句都不是标准 SQL 。平时用的 mysql 和 oracle 以及 hive,都是部分遵循标准SQL 。...

  • 回答 3

    #!/bin/bash #队列名 根据yarn的队列提交 realtime_queue=root #提交的任务名 my_job_name=OrderQZspark-shell --master yarn --deploy-mode client \--queue $realtime_queue \ #总的executors数 根据数据量与自己的集群资源来分配--num-executors...

  • 回答 2

    Spark是一种快速、通用、可扩展的大数据分析引擎,于2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。项目是用Scala进行编写。Spark的结构:Spark生态系统已经发展成为一个包含多个子项目的集...

  • 回答 1

    自己随意编写一份测试数据,所用的测试数据如下,需求是按照第一列的字母分组,然后按照第二列数据取出每一组内前N个数据,后面我分别列出了我使用的三种方案来实现该需求,不同方案在不同的场景下会有各自的优势 a 25b 36c 24d 45e 60a 33b 26c 47d 43e 62a...

  • 回答 1

    把数据从redis读出来放到kafka里呗,然后用spark-streaming去读kafka的数据,或者写个程序从redis把数据读出来用socket或文件的形式传给spark-streaming,spark-streaming支持很多种源的方式

没有解决我的问题,去提问