Hadoop环境搭建学习之Spark HA(7)

42 篇文章 0 订阅
33 篇文章 0 订阅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

Hadoop的实时数据通过Spark Streaming读取kafka,需要先了解下Spark,要了解Spark需要搭建Spark环境


提示:以下是本篇文章正文内容,下面案例可供参考

一、Spark是什么?

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) 开发,可用来构建大型的、低延迟的数据分析应用程序。(具体网上查看)

二、使用步骤

1.环境准备

说明软件
操作系统Windows 10
虚拟机VMware 15.5
Linux系统Centos 7 64位
Zookeeperzookeeper-3.4.10
Hadoophadoop-3.3.1
HBaseHbase2.4.4
HiveHive3.1.2
Kafkakafka_2.12-3.0.0
Sparkspark-3.1.3
Scalascala-2.12.10
开发工具IntelliJ IDEA 2020.1

2.集群规划

IPHostNameSoftwareProcess
192.168.74.88hadoop01hadoop,zookeeper,hbase,hive,mysql,kafka,spark,scalaDataNode,NodeManager,QuorumPeerMain,JournalNode,NameNode,DFSZKFailoverController,ResourceManager,HMaster,HRegionServer,RunJar,RunJar,kafka,Master,Worker
192.168.74.89hadoop02hadoop,zookeeper,kafka,spark,scalaDataNode,NodeManager,QuorumPeerMain,JournalNode,NameNode,DFSZKFailoverController,HRegionServer,kafka,Worker
192.168.74.90hadoop03hadoop,zookeeper,hbase,hvie,kafka,spark,scalaDataNode,NodeManager,QuorumPeerMain,JournalNode,ResourceManager,HMaster,HRegionServer,RunJar,kafka,Master,Worker

3.Spark HA部署安装

代码如下(示例):

# 创建一个新目录root
mkdir -p /data/spark
mkdir -p /data/scala
chown hadoop:hadoop /data/spark
chown hadoop:hadoop /data/scala

su hadoop
cd /data/spark
tar -zxvf spark-3.1.3-bin-hadoop3.2.tgz
# 重命名一下文件夹
mv spark-3.1.3-bin-hadoop3.2 app

cd /data/scala
tar -zxvf scala-2.12.10.tgz
# 重命名一下文件夹
mv scala-2.12.10 app

cd /data/spark/app/conf
cp spark-env.sh.template spark-env.sh

vim /data/spark/app/conf/spark-env.sh
gedit  /data/spark/app/conf/spark-env.sh
-------------------------
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre
#指定masster节点的webui端口       
export SPARK_MASTER_WEBUI_PORT=8081
export SPARK_WORKER_WEBUI_PORT=8086
#每个worker从节点能够支配的内存数 
export SPARK_WORKER_MEMORY=512M        
#允许Spark应用程序在计算机上使用的核心总数(默认值:所有可用核心)
export SPARK_WORKER_CORES=1    
#每个worker从节点的实例(可选配置) 
export SPARK_WORKER_INSTANCES=1   
#指向包含Hadoop集群的(客户端)配置文件的目录,运行在Yarn上配置此项
export SCALA_HOME=/data/scala/app
export HADOOP_HOME=/data/hadoop/app
export HADOOP_CONF_DIR=/data/hadoop/app/etc/hadoop    
#指定整个集群状态是通过zookeeper来维护的,包括集群恢复
export SPARK_DAEMON_JAVA_OPTS="      
-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=hadoop01:2181,hadoop02:2181,hadoop03:2181
-Dspark.deploy.zookeeper.dir=/data/spark/sparkmaster"


---------------------------------------------
mkdir -p /data/spark/sparkmaster

# 将spark-defaults.conf.template 改为 spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf
vim  /data/spark/app/conf/spark-defaults.conf
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://nn/spark-logs

vim /data/spark/app/sbin/spark-config.sh

vim spark-config.sh

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre

# cp workers.template workers
vim /data/spark/app/conf/workers
gedit  /data/spark/app/conf/workers
hadoop01
hadoop02
hadoop03

# 系统环境变量
vim ~/.bashrc
gedit ~/.bashrc

export SPARK_HOME=/data/spark/app/
export PATH=$PATH:$SPARK_HOME/bin

export SCALA_HOME=/data/scala/app/
export PATH=$PATH:$SCALA_HOME/bin

source ~/.bashrc

# 分发spark文件
scp -r /data/spark/app hadoop@hadoop02:/data/spark
scp -r /data/scala/app hadoop@hadoop02:/data/scala

scp -r /data/spark/app hadoop@hadoop03:/data/spark
scp -r /data/scala/app hadoop@hadoop03:/data/scala

启动Spark HA

hadoop01: cd /data/spark/app/sbin/
hadoop01: ./start-all.sh
hadoop01: ./stop-all.sh
hadoop03: cd /data/spark/app/sbin/
hadoop03: ./start-master.sh
hadoop03: ./stop-master.sh

浏览器查看 Spark 的 Web UI

http://192.168.74.88:8081(ALIVE)
在这里插入图片描述
http://192.168.74.90:808(STANDBY)
在这里插入图片描述

4.# 测试 Spark 集群

代码如下(示例):

spark-shell  --master spark://hadoop01:7077 --executor-memory 512m -total-executor-cores 3

val textFile = sc.textFile("hdfs://ns/input/datas");
textFile.count

val wordsRDD = textFile.flatMap(_.split(" "));

val pairRDD = wordsRDD.map((_,1));

val wordCountRDD = pairRDD.reduceByKey(_ + _);

wordCountRDD.foreach(wordCount=>println(wordCount._1+"--"+wordCount._2));

wordCountRDD.saveAsTextFile("hdfs://ns/output/wordCount/java/JavaWordCount");

在这里插入图片描述


总结

Spark 使用java 代码执行没成功,不知道为什么:
java.lang.ClassCastException: cannot assign instance of java.lang.invoke.SerializedLambda to field org.apache.spark.rdd.MapPartitionsRDD.f of type scala.Function3 in instance of org.apache.spark.rdd.MapPartitionsRDD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

panda_225400

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值