【spark】spark-2.4.4的安装与测试

4.2.1 下载并安装spark

下载文件名:spark-2.4.4-bin-without-hadoop.tgz

[[email protected] ~]$ tar -zxvf spark-2.4.4-bin-without-hadoop.tgz

4.2.2 配置linux环境变量

[[email protected] ~]$ gedit ~/.bash_profile
[[email protected] ~]$ source ~/.bash_profile
新加入:
#spark
export SPARK_HOME=/home/hadoop/spark-2.4.4-bin-without-hadoop
export PATH=$PATH:$SPARK_HOME/bin

4.2.3 配置spark-env.sh变量环境

[[email protected] conf]$ cp spark-env.sh.template spark-env.sh
[[email protected] conf]$ gedit spark-env.sh
加入:
export JAVA_HOME=/usr/java/jdk1.8.0_131
export SCALA_HOME=/home/hadoop/scala-2.13.1
export SPARK_MASTER_IP=192.168.1.100
export HADOOP_HOME=/home/hadoop/hadoop-3.2.0
export HADOOP_CONF_DIR=/home/hadoop/hadoop-3.2.0/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/home/hadoop/hadoop-3.2.0/bin/hadoop classpath) #不添加,就会报错

4.2.4 修改slaves文件

[[email protected] conf]$ cp slaves.template slaves
[[email protected] conf]$ gedit slaves
加入:
hadoop02
hadoop03

4.2.5 拷贝到其他节点
scp -r ~/spark-2.4.4-bin-without-hadoop hadoop02:~/
scp -r ~/spark-2.4.4-bin-without-hadoop hadoop03:~/

4.2.6 启动spark

4.2.6.1 直接启动

[[email protected] spark-2.4.4-bin-without-hadoop]$ sbin/start-all.sh
第一次启动报错:
进程显示:failed to launch: nice -n 0 /home/hadoop/spark-2.4.4-bin-without-hadoop/bin/spark-class org.apache.spark.deploy.master.Master --host hadoop01 --port 7077 --webui-port 808
查看spark目录下logs:
Spark Command: /usr/java/jdk1.8.0_131/bin/java -cp /home/hadoop/spark-2.4.4-bin-without-hadoop/conf/:/home/hadoop/spark-2.4.4-bin-without-hadoop/jars/*:/home/hadoop/hadoop-3.2.0/etc/hadoop/ -Xmx1g org.apache.spark.deploy.master.Master --host hadoop01 --port 7077 --webui-port 8080
========================================
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Logger
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

解决办法:在spark-env.sh末尾添加“export SPARK_DIST_CLASSPATH=$(/home/hadoop/hadoop-3.2.0/bin/hadoop classpath)”

再次启动spark:

[[email protected] spark-2.4.4-bin-without-hadoop]$ sbin/start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /home/hadoop/spark-2.4.4-bin-without-hadoop/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-hadoop01.out
hadoop03: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/spark-2.4.4-bin-without-hadoop/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-hadoop03.out
hadoop02: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/spark-2.4.4-bin-without-hadoop/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-hadoop02.out
[[email protected] spark-2.4.4-bin-without-hadoop]$ jps
29200 NodeManager
28595 DataNode
29059 ResourceManager
28804 SecondaryNameNode
30564 Master
28424 NameNode
30777 Jps
[[email protected] spark-2.4.4-bin-without-hadoop]$ ssh hadoop02
Last login: Wed Oct  2 11:21:48 2019 from hadoop01
[[email protected] ~]$ jps
19905 Worker
20098 Jps
18922 DataNode
19054 NodeManager
[[email protected] ~]$ ssh hadoop03
Last login: Tue Oct  1 15:58:07 2019 from hadoop02
[[email protected] ~]$ jps
18896 Jps
17699 DataNode
17829 NodeManager
18694 Worker

注1:通过jps看见三个节点有Master和Worker的进程,其中Master是spark的主控进程
注2:另外需要注意的是spark的启动命令与hadoop的一样,所以启动hadoop和spark的时候需要明确指定目录,如:hadoop-3.2.0/sbin/start-all.sh 或者spark2.4.4/sbin/start-all.sh

4.2.6.2 通过spark提供的web接口查看系统状态,各节点都可以:
http://http://192.168.1.100:8080/
http://http://192.168.1.101:8081/
http://http://192.168.1.102:8081/

4.2.7 停止spark

[[email protected] spark-2.4.4-bin-without-hadoop]$ sbin/stop-all.sh
hadoop02: stopping org.apache.spark.deploy.worker.Worker
hadoop03: stopping org.apache.spark.deploy.worker.Worker
stopping org.apache.spark.deploy.master.Master
[[email protected] spark-2.4.4-bin-without-hadoop]$ jps
29200 NodeManager
28595 DataNode
29059 ResourceManager
28804 SecondaryNameNode
28424 NameNode
31112 Jps

4.2.8 spark的简单使用

4.2.8.1 执行示例程序
在 ./examples/src/main 目录下有一些 Spark 的示例程序,有 Scala、Java、Python、R 等语言的版本。我们可以先运行一个示例程序 SparkPi(即计算 π 的近似值),执行如下命令:
注:执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的 2>&1 可以将所有的信息都输出到 stdout 中,否则由于输出日志的性质,还是会输出到屏幕中):

[[email protected] spark-2.4.4-bin-without-hadoop]$ ./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
Pi is roughly 3.135075675378377

Python 版本的 SparkPi, 则需要通过 spark-submit 运行:

[[email protected] spark-2.4.4-bin-without-hadoop]$ ./bin/spark-submit examples/src/main/python/pi.py 2>&1 | grep "Pi is roughly"
Pi is roughly 3.144580

4.2.8.2 进入shell模式:

[[email protected] jars]$ spark-shell
2019-10-02 21:05:49,292 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://hadoop01:4040
Spark context available as ‘sc‘ (master = local[*], app id = local-1570021558420).
Spark session available as ‘spark‘.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  ‘_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.4
      /_/

Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

附:

【转】Spark集群三种部署模式的区别

Spark最主要资源管理方式按排名为Hadoop Yarn, Apache Standalone 和Mesos。在单机使用时,Spark还可以采用最基本的local模式。

目前Apache
Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on
YARN,其中,第一种类似于MapReduce
1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce,公用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配)。本文将介绍这三种部署方式,并比较其优缺点。

1. Standalone模式

即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。借鉴Spark开发模式,我们可以得到一种开发新型计算框架的一般思路:先设计出它的standalone模式,为了快速开发,起初不需要考虑服务(比如master/slave)的容错性,之后再开发相应的wrapper,将stanlone模式下的服务原封不动的部署到资源管理系统yarn或者mesos上,由资源管理系统负责服务本身的容错。目前Spark在standalone模式下是没有任何单点故障问题的,这是借助zookeeper实现的,思想类似于Hbase
master单点故障解决方案。将Spark standalone与MapReduce比较,会发现它们两个在架构上是完全一致的:
1)  都是由master/slaves服务组成的,且起初master均存在单点故障,后来均通过zookeeper解决(Apache MRv1的JobTracker仍存在单点问题,但CDH版本得到了解决);
2)
各个节点上的资源被抽象成粗粒度的slot,有多少slot就能同时运行多少task。不同的是,MapReduce将slot分为map
slot和reduce slot,它们分别只能供Map Task和Reduce
Task使用,而不能共享,这是MapReduce资源利率低效的原因之一,而Spark则更优化一些,它不区分slot类型,只有一种slot,可以供各种类型的Task使用,这种方式可以提高资源利用率,但是不够灵活,不能为不同类型的Task定制slot资源。总之,这两种方式各有优缺点。

2. Spark On Mesos模式

这是很多公司采用的模式,官方推荐这种模式(当然,原因之一是血缘关系)。正是由于Spark开发之初就考虑到支持Mesos,因此,目前而言,Spark运行在Mesos上会比运行在YARN上更加灵活,更加自然。目前在Spark
On Mesos环境中,用户可选择两种调度模式之一运行自己的应用程序(可参考Andrew Xia的“Mesos Scheduling Mode
on Spark”):
1)   粗粒度模式(Coarse-grained
Mode):每个应用程序的运行环境由一个Dirver和若干个Executor组成,其中,每个Executor占用若干资源,内部可运行多个Task(对应多少个“slot”)。应用程序的各个任务正式运行之前,需要将运行环境中的资源全部申请好,且运行过程中要一直占用这些资源,即使不用,最后程序运行结束后,回收这些资源。举个例子,比如你提交应用程序时,指定使用5个executor运行你的应用程序,每个executor占用5GB内存和5个CPU,每个executor内部设置了5个slot,则Mesos需要先为executor分配资源并启动它们,之后开始调度任务。另外,在程序运行过程中,mesos的master和slave并不知道executor内部各个task的运行情况,executor直接将任务状态通过内部的通信机制汇报给Driver,从一定程度上可以认为,每个应用程序利用mesos搭建了一个虚拟集群自己使用。

2)   细粒度模式(Fine-grained Mode):鉴于粗粒度模式会造成大量资源浪费,Spark On
Mesos还提供了另外一种调度模式:细粒度模式,这种模式类似于现在的云计算,思想是按需分配。与粗粒度模式一样,应用程序启动时,先会启动executor,但每个executor占用资源仅仅是自己运行所需的资源,不需要考虑将来要运行的任务,之后,mesos会为每个executor动态分配资源,每分配一些,便可以运行一个新任务,单个Task运行完之后可以马上释放对应的资源。每个Task会汇报状态给Mesos
slave和Mesos
Master,便于更加细粒度管理和容错,这种调度模式类似于MapReduce调度模式,每个Task完全独立,优点是便于资源控制和隔离,但缺点也很明显,短作业运行延迟大。

3. Spark On YARN模式

这是一种很有前景的部署模式。但限于YARN自身的发展,目前仅支持粗粒度模式(Coarse-grained

Mode)。这是由于YARN上的Container资源是不可以动态伸缩的,一旦Container启动之后,可使用的资源不能再发生变化,不过这个已经在YARN计划中了。

spark on yarn 的支持两种模式:
1) yarn-cluster:适用于生产环境;
2) yarn-client:适用于交互、调试,希望立即看到app的输出

yarn-cluster和yarn-client的区别在于yarn
appMaster,每个yarn
app实例有一个appMaster进程,是为app启动的第一个container;负责从ResourceManager请求资源,获取到资源后,告诉NodeManager为其启动container。yarn-cluster和yarn-client模式内部实现还是有很大的区别。如果你需要用于生产环境,那么请选择yarn-cluster;而如果你仅仅是Debug程序,可以选择yarn-client。

总结:
这三种分布式部署方式各有利弊,通常需要根据实际情况决定采用哪种方案。进行方案选择时,往往要考虑公司的技术路线(采用Hadoop生态系统还是其他生态系统)、相关技术人才储备等。上面涉及到Spark的许多部署模式,究竟哪种模式好这个很难说,需要根据你的需求,如果你只是测试Spark
Application,你可以选择local模式。而如果你数据量不是很多,Standalone
是个不错的选择。当你需要统一管理集群资源(Hadoop、Spark等),那么你可以选择Yarn或者mesos,但是这样维护成本就会变高。
· 从对比上看,mesos似乎是Spark更好的选择,也是被官方推荐的
· 但如果你同时运行hadoop和Spark,从兼容性上考虑,Yarn是更好的选择。 · 如果你不仅运行了hadoop,spark。还在资源管理上运行了docker,Mesos更加通用。
· Standalone对于小规模计算集群更适合!

原文地址:https://www.cnblogs.com/CQ-LQJ/p/11618541.html

时间: 2024-11-14 13:39:30

【spark】spark-2.4.4的安装与测试的相关文章

Spark 1.0.1源码安装

apache 网站上面已经有了已经构建好了的版本,我这里还是自己利用午休时间重新构建一下(jdk,python,scala的安装就省略了,自己可以去安装) http://www.apache.org/dist/spark/spark-1.0.1/ 具体官网的下载链接可以去这里 我下载的是http://www.apache.org/dist/spark/spark-1.0.1/spark-1.0.1.tgz源码包 下载对应的linux服务器上面,然后解压 wget http://www.apach

Spark&Spark性能调优实战

Spark特别适用于多次操作特定的数据,分mem-only和mem & disk.其中mem-only:效率高,但占用大量的内存,成本很高;mem & disk:内存用完后,会自动向磁盘迁移,解决了内存不足的问题,却带来了数据的置换的消费.Spark常见的调优工具有nman.Jmeter和Jprofile,以下是Spark调优的一个实例分析: 1.场景:精确客户群 对一个容量为300g的客户信息表在spark上进行查询优化,该大宽表有1800多列,有效使用的有20列. 2.优化达到的效果:

mosquitto在Linux环境下的部署/安装/使用/测试

mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http://mosquitto.org/files/source/官网下载源码,放到Linux环境中.解压后,找到主要配置文件config.mk,其中包含mosquitto的安装选项,需要注意的是,默认情况下mosquitto的安装需要OpenSSL(一个强大的安全

Etcd学习(一)安装和测试

Etcd是一个比较新的分布式协调框架,现在才只到0.4.6版本,还没发布1.0版本 从网上搜etcd关键字,基本上就只能看到"开源中国"的介绍: etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现.etcd 的灵感来自于 ZooKeeper 和 Doozer,侧重于: 简单:支持 curl 方式的用户 API (HTTP+JSON) 安全:可选 SSL 客户端证书认证 快速:单实例可达每秒 1000 次写操作 可靠:使用 Raft 实现分布式 Etcd

【MYSQL系列】【基础版】第一章 MYSQL的安装以及测试

1. MYSQL的安装以及测试     1.1 什么是数据库,有什么作用,以及有哪些特点         1.1.1 Database,DB,是一个数据的仓库:         1.1.2 用于保存.管理数据         1.1.3 特点:             1.1.3.1 一致性.完整性             1.1.3.2 降低冗余(重复)             1.1.3.3 应用的共享,以及有组织         1.1.4 数据仓库: 偏向于数据分析,是数据挖掘的一种  

Hadoop2.2.0多节点分布式安装及测试

众所周知,hadoop在10月底release了最新版2.2.很多国内的技术同仁都马上在网络上推出了自己对新版hadoop的配置心得.这其中主要分为两类: 1.单节点配置 这个太简单了,简单到只要懂点英语,照着网上说的做就ok了.我这里不谈这个,有兴趣的童鞋可以自己去问度娘和谷哥- 2.多节点配置 这个就是我要重点说明的,老实说网络上说的的确是多节点,但不是真正的分布式部署- 我们为什么要用hadoop?因为hadoop是一个分布式系统基础架构,我们可以在不了解分布式底层细节的情况下,开发分布式

OpenCV安装和测试

参考链接:http://blog.csdn.net/bruce_zeng/article/details/7961153 OpenCv下载链接:http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.2/ 下载的是 OpenCV-2.2.0-win32-vs2010.exe,傻瓜式安装.安装过程中勾选"Add OpenCV to system PATH for all users"选项.或者安装完后自己添加环境变

mycat安装和测试

mycat安装和测试 一.  环境准备 本机环境是三台centos6.5 IP 主机名 数据库名 安装软件 192.168.17.4 master db1 mycat,mysql 192.168.17.5 slave1 db2 mysql 192.168.17.6 slave2 db3 mysql 二.  安装mysql 1.安装mysql软件 linux下安装mysql有两种方式:一种是通过下载源码编译安装,一种是通过rpm包安装,如果配置了yum直接用yum安装会更快 编译安装步骤: ./c

linux mysql 卸载,安装,测试全过程

Mysql卸载 yum remove mysql mysql-server mysql-libs compat-mysql51 rm -rf /var/lib/mysql rm /etc/my.cnf 查看是否还有mysql软件: rpm -qa|grep mysql 有的话继续删除 Mysql安装 1>若本地没有安装包 可以考虑使用yum命令进行下载 # yum -y install mysql-server # yum -y install php-mysql 2>安装后,MySQL自动启