大数据本地环境搭建03-Spark搭建

需要提前部署好 Zookeeper/Hadoop/Hive 环境

1 Local模式

1.1 上传压缩包

下载链接

链接:https://pan.baidu.com/s/1rLq39ddxh7np7JKiuRAhDA?pwd=e20h
提取码:e20h

将spark-3.1.2-bin-hadoop3.2.tar.gz压缩包到node1下的/export/server目录

1.2 解压压缩包

tar -zxvf /export/server/spark-3.1.2-bin-hadoop3.2.tgz -C /export/server/

1.3 修改权限

如果有权限问题,可以修改为root,方便学习时操作,实际中使用运维分配的用户和权限即可

chown -R root /export/server/spark-3.1.2-bin-hadoop3.2 
chgrp -R root /export/server/spark-3.1.2-bin-hadoop3.2 

1.4 修改文件名

mv /export/server/spark-3.1.2-bin-hadoop3.2 /export/server/spark

1.5 将spark添加到环境变量

echo 'export SPARK_HOME=/export/server/spark' >> /etc/profile
echo 'export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin' >> /etc/profile
source /etc/profile

1.6 启动测试

spark-shell

img

2 Standalone模式

2.1 配置node1中的workers服务

# 进入配置目录
cd /export/server/spark/conf
# 修改配置文件名称
mv workers.template workers
# 将三台机器写入workers
echo 'node1' > workers
echo 'node2' >> workers
echo 'node3' >> workers

2.2 配置spark中的环境变量

cd /export/server/spark/conf
## 修改配置文件名称
mv spark-env.sh.template spark-env.sh
## 修改配置文件
## 设置JAVA安装目录,jdk1.8.0_65 看自己的java目录和版本填写
echo 'JAVA_HOME=/export/server/jdk1.8.0_65' >> spark-env.sh
## 设置python安装目录
echo 'PYSPARK_PYTHON=/export/server/python3/bin/python3' >> spark-env.sh
## HADOOP软件配置文件目录,读取HDFS上文件
echo 'HADOOP_CONF_DIR=/export/server/hadoop-3.3.0/etc/hadoop' >> spark-env.sh
## 指定spark老大Master的IP和提交任务的通信端口
echo 'SPARK_MASTER_HOST=node1' >> spark-env.sh
echo 'SPARK_MASTER_PORT=7077' >> spark-env.sh
echo 'SPARK_MASTER_WEBUI_PORT=8080' >> spark-env.sh
echo 'SPARK_WORKER_CORES=1' >> spark-env.sh
echo 'SPARK_WORKER_MEMORY=1g' >> spark-env.sh
echo 'SPARK_WORKER_PORT=7078' >> spark-env.sh
echo 'SPARK_WORKER_WEBUI_PORT=8081' >> spark-env.sh
## 历史日志服务器
echo 'SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"' >> spark-env.sh

2.3 创建EventLogs存储目录

启动HDFS服务,创建应用运行事件日志目录

hdfs dfs -mkdir -p /sparklog/
hdfs dfs -chown hadoop:root /sparklog
hdfs dfs -chmod 775 /sparklog

2.4 配置Spark应用保存EventLogs

## 进入配置目录
cd /export/server/spark/conf
## 修改配置文件名称
mv spark-defaults.conf.template spark-defaults.conf
## 添加内容如下:
echo 'spark.eventLog.enabled 	true' >> spark-defaults.conf
echo 'spark.eventLog.dir	 hdfs://node1:8020/sparklog/' >> spark-defaults.conf
echo 'spark.eventLog.compress 	true' >> spark-defaults.conf

2.5 设置日志级别

## 进入目录
cd /export/server/spark/conf
## 修改日志属性配置文件名称
mv log4j.properties.template log4j.properties
## 改变日志级别
sed -i "1,25s/INFO/WARN/"  /export/server/spark/conf/log4j.properties

2.6 修改启动文件

避免和hadopp的启动文件名字冲突

mv /export/server/spark/sbin/stop-all.sh /export/server/spark/sbin/stop-all-spark.sh
mv /export/server/spark/sbin/start-all.sh /export/server/spark/sbin/start-all-spark.sh

2.7 拷贝spark到node2和node3

scp -r /export/server/spark node2:/export/server/
scp -r /export/server/spark node3:/export/server/

2.8 拷贝python到node2和node3

scp -r /export/server/python3 node2:/export/server/
scp -r /export/server/python3 node3:/export/server/

2.9 拷贝环境变量文件到node2和node3

scp /etc/profile node2:/etc/
scp /etc/profile node3:/etc/

2.10 服务启动

  • 集群启动,在node1上执行
# 启动spark
start-all-spark.sh
# 启动历史服务
start-history-server.sh

2.11 测试

  • 使用pyspark连接
spark-shell --master spark://node1:7077

image-20220121171036215

2.12 Web访问

http://node1:8080

image-20220121171102476

3 Standalone高可用

3.1 关闭集群服务

stop-all-spark.sh 

3.2 在node1上进行配置

将/export/server/spark/conf/spark-env.sh文件中的SPARK_MASTER_HOST注释
# SPARK_MASTER_HOST=node1echo 'SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"' >> /export/server/spark/conf/spark-env.sh

3.3 将node1的配置文件进行分发

cd /export/server/spark/conf
scp -r spark-env.sh node2:$PWD
scp -r spark-env.sh node3:$PWD

3.4 三台机器启动集群上的zk服务

zkServer.sh start

3.5 在HDFS上创建高可用日志目录

hadoop fs -mkdir /spark-ha

3.6 node1上启动spark集群

start-all-spark.sh

3.7 在node2上启动master

start-master.sh

3.8 web验证

http://node1:8080
node2:8080

4 Python安装

4.1 上传安装包

链接:https://pan.baidu.com/s/1LkpjREnLXLzebki4VTz1Ag?pwd=6bs5
提取码:6bs5

将python3.tar.gz压缩包到node1下的/export/server目录

4.2 解压安装包

tar -zxvf /export/server/python3.tar.gz -C /export/server

4.3 将Python添加到环境变量

echo 'export PYTHON_HOME=/export/server/python3' >> /etc/profile
echo 'export PATH=$PATH:$PYTHON_HOME/bin' >> /etc/profile
source /etc/profile

4.4 拷贝python到node2和node3

scp -r /export/server/python3 node2:/export/server/
scp -r /export/server/python3 node3:/export/server/

4.5 启动测试

pyspark

img

5 Pysaprk的安装

当前spark依赖的版本为3.1.2

5.1 在线安装

pip3 install pyspark==3.1.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/

5.2 离线安装

链接:https://pan.baidu.com/s/1bZD0KbpXlUYb4UZBtCodAw?pwd=zcsx
提取码:zcsx

上传spark_packages 到root目录下

cd /root/spark_packages
pip3 install --no-index --find-links=spark_packages -r requirements.txt

5.2.1 三台机器环境变量调整

echo 'export ZOOKEEPER_HOME=/export/server/zookeeper' >> /etc/bashrc
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/bashrc
echo 'export JAVA_HOME=/export/server/jdk1.8.0_241' >> /etc/bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/bashrc
echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/bashrc
echo 'export HADOOP_HOME=/export/server/hadoop-3.3.0' >> /etc/bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/bashrc
echo 'export HIVE_HOME=/export/server/hive3.1.2' >> /etc/bashrc
echo 'export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin' >> /etc/bashrc
echo 'export PYTHON_HOME=/export/server/python3' >> /etc/bashrc
echo 'export PATH=$PATH:$PYTHON_HOME/bin' >> /etc/bashrc
echo 'export PYSPARK_PYTHON=/export/server/python3/bin/python3' >> /etc/bashrc
echo 'export PYSPARK_DRIVER_PYTHON=/export/server/python3/bin/python3'  >> /etc/bashrc
echo 'export SPARK_HOME=/export/server/spark'  >> /etc/bashrc
echo 'export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin' >> /etc/bashrcsource /etc/bashrc

6 Spark on Yarn模式

6.1 修改spark-env.sh

cd /export/server/spark/conf
echo 'YARN_CONF_DIR=/export/server/hadoop-3.3.0/etc/hadoop' >> spark-env.sh

6.2 同步到node2和node3

scp -r spark-env.sh node2:/export/server/spark/conf
scp -r spark-env.sh node3:/export/server/spark/conf

6.3 整合历史服务器MRHistoryServer并关闭资源检查

需要修改Hadoop的yarn-site.xml文件

  • 进入Hadoop配置目录
cd /export/server/hadoop-3.3.0/etc/hadoop
  • 修改yarn-site.xml配置文件
<configuration><!-- 配置yarn主节点的位置 --><property><name>yarn.resourcemanager.hostname</name><value>node1</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 设置yarn集群的内存分配方案 --><property><name>yarn.nodemanager.resource.memory-mb</name><value>20480</value></property><property><name>yarn.scheduler.minimum-allocation-mb</name><value>2048</value></property><property><name>yarn.nodemanager.vmem-pmem-ratio</name><value>2.1</value></property><!-- 开启日志聚合功能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 设置聚合日志在hdfs上的保存时间 --><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property><!-- 设置yarn历史服务器地址 --><property><name>yarn.log.server.url</name><value>http://node1:19888/jobhistory/logs</value></property><!-- 关闭yarn内存检查 --><property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property>
</configuration>
  • 拷贝到node2和node3
cd /export/server/hadoop-3.3.0/etc/hadoop
scp -r yarn-site.xml node2:/export/server/hadoop-3.3.0/etc/hadoop
scp -r yarn-site.xml node3:/export/server/hadoop-3.3.0/etc/hadoop

6.4 修改spark配置文件

cd /export/server/spark/conf
echo 'spark.yarn.historyServer.address        node1:18080' >> spark-defaults.conf
  • 复制到node2和node3
cd /export/server/spark/conf
scp -r spark-defaults.conf node2:/export/server/spark/conf
scp -r spark-defaults.conf node3:/export/server/spark/conf

6.5 启动服务

start-all.sh
mapred --daemon start historyserver
start-history-server.sh
spark-submit --master yarn --deploy-mode client 文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/250542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——实验01-线性表的链式存储和操作

一、实验内容 二、算法思想与算法实现 1、解题思想 &#xff08;1&#xff09;逆序创建链表La就是使用头插法创建一个链表&#xff0c;所谓头插法就是在创建链表时始终将新元素插入到头结点之后&#xff0c;而正序创建链表Lb就是使用尾插法创建一个链表&#xff0c;所谓尾插法…

Pycharm python用matplotlib 3D绘图显示空白解决办法

问题原因&#xff1a; matplotlib版本升级之后显示代码变了&#xff0c;修改为新的 # ax Axes3D(fig) # 原代码 ax fig.add_axes(Axes3D(fig)) # 新代码import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Ax…

五大架构风格之一:数据流风格

数据流风格详细介绍 系统架构数据流风格是一种软件体系结构风格&#xff0c;它强调了系统内部不同部分之间的数据流动。这种风格侧重于描述系统中的数据处理过程&#xff0c;以及数据是如何从一个组件传递到另一个组件的。以下是系统架构数据流风格的详细介绍&#xff1a; 1 基…

Hadoop:HDFS学习巩固——基础习题及编程实战

一 HDFS 选择题 1.对HDFS通信协议的理解错误的是&#xff1f; A.客户端与数据节点的交互是通过RPC&#xff08;Remote Procedure Call&#xff09;来实现的 B.HDFS通信协议都是构建在IoT协议基础之上的 C.名称节点和数据节点之间则使用数据节点协议进行交互 D.客户端通过一…

代码随想录算法训练营29期Day41|LeetCode 343,96

文档讲解&#xff1a;整数拆分 不同的二叉搜索树 343.整数拆分 题目链接&#xff1a;https://leetcode.cn/problems/integer-break/description/ 思路&#xff1a; 题目要求我们拆分n&#xff0c;拆成k个数使其乘积和最大&#xff0c;然而题目中并没有给出k&#xff0c;所以…

影院购票|电影院订票选座小程序|基于微信小程序的电影院购票系统设计与实现(源码+数据库+文档)

电影院订票选座小程序目录 目录 基于微信小程序的电影院购票系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户功能实现 2、管理员功能实现 &#xff08;1&#xff09;影院信息管理 &#xff08;2&#xff09;电影信息管理 &#xff08;3&#xff09;已…

算法学习——华为机考题库6(HJ36 - HJ40)

算法学习——华为机考题库6&#xff08;HJ36 - HJ40&#xff09; HJ36 字符串加密 描述 有一种技巧可以对数据进行加密&#xff0c;它使用一个单词作为它的密匙。下面是它的工作原理&#xff1a;首先&#xff0c;选择一个单词作为密匙&#xff0c;如TRAILBLAZERS。如果单词中…

链表——C语言——day17

链表 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。在用数组存放数据时&#xff0c;必须事先定义固定的长度&#xff08;即元素个数&#xff09;。链表则没有这种缺点&#xff0c;它根据需要开辟内存单元。 链表有一个“头指针“变量&#xff0c;图中…

kubekey网页版安装k8s集群操作流程

kubekey可以一键拉起k8s集群并完成kubesphere的部署&#xff0c;以后kubekey简称kk。kk 3.2版本以前都是在宿主机上完成对应的创建集群、添加节点、升级等操作的&#xff0c;3.2版本后开始往页面操作的方向演进&#xff0c;kk 3.2版本现在还是alpha&#xff0c;所以不推荐在生产…

fastadmin后台自定义按钮和弹窗

工具栏自定义按钮-ajax请求 前端代码 1.在对应模块的模板文件index.html添加自定义按钮&#xff0c;注意按钮要添加id以绑定点击事件 <div class"panel panel-default panel-intro">{:build_heading()}<div class"panel-body"><div id&qu…

STM32通用定时器、计数器

时间记录&#xff1a;2024/1/30 一、时钟介绍&#xff08;TIM2-TIM5&#xff09; &#xff08;1&#xff09;通用定时器时钟频率介绍 内部时钟AHB为72MHz&#xff0c;经过APB1预分频器2分频变为36MHz&#xff0c;TIMxClk定时器时钟由时钟树可以看出&#xff0c;如果APB1预分…

C#,雅各布斯塔尔—卢卡斯(Jacobsthal Lucas Number)的算法与源代码

1 雅各布斯塔尔序列 雅各布斯塔尔序列是一个与斐波那契序列类似的加法序列&#xff0c;由递归关系JnJn-12Jn-2定义&#xff0c;初始项J00&#xff0c;J11。序列中的一个数字称为雅可布沙尔数。它们是卢卡斯序列Un&#xff08;P&#xff0c;Q&#xff09;的一种特殊类型&#x…

微软Office Plus与WPS Office的较量:办公软件市场将迎来巨变?

微软Office Plus在功能表现上远超WPS Office&#xff1f; 微软出品的Office套件实力强劲&#xff0c;其不仅在办公场景中扮演着不可或缺的角色&#xff0c;为用户带来高效便捷的体验&#xff0c;而且在娱乐生活管理等多元领域中同样展现出了卓越的应用价值 作为中国本土办公软…

IO多路复用机制——select、poll、epoll的原理和区别

select&#xff0c;poll&#xff0c;epoll都是IO多路复用的机制。I/O多路复用就通过一种机制&#xff0c;可以监视多个描述符&#xff0c;一旦某个描述符就绪&#xff08;一般是读就绪或者写就绪&#xff09;&#xff0c;能够通知程序进行相应的读写操作。但select&#xff0c;…

西瓜书学习笔记——k近邻学习(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 K最近邻&#xff08;K-Nearest Neighbors&#xff0c;KNN&#xff09;是一种常用的监督学习算法&#xff0c;用于分类和回归任务。该算法基于一个简单的思想&#xff1a;如果一个样本在特征空间中的 k k k个最近邻居中的大多数属于某个类别…

使用ngrok内网穿透

没有服务器和公网IP&#xff0c;想要其他人访问自己做好的网站&#xff0c;使用这款简单免费的内网穿透小工具——ngrok&#xff0c;有了它轻松让别人访问你的项目~ 一、下载ngrok 官网地址&#xff1a;ngrok | Unified Application Delivery Platform for Developers&#x…

IP定位在社交行业应用

网络社交正成为当下最便捷的交友方式。社交服务平台使用IP地址数据服务&#xff0c;解析用户的地理位置和网络环境等信息&#xff0c;支撑精准配对和用户推荐&#xff0c;帮助用户在海量的网络社交用户中寻找性情相投的好友&#xff0c;建立有价值的社交关系。 匹配目标好友 通…

未来电话呼叫技术的全球影响与社会变革----云微呼

随着科技的快速发展和全球通信网络的日益完善&#xff0c;未来电话呼叫技术将在全球范围内产生深远的影响&#xff0c;并引发社会结构、经济模式和文化交流等多个方面的变革。以下将更详细地探讨未来电话呼叫技术可能带来的全球影响与社会变革&#xff1a; 通信普及与数字鸿沟缩…

人工智能(pytorch)搭建模型23-pytorch搭建生成对抗网络(GAN):手写数字生成的项目应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型23-pytorch搭建生成对抗网络(GAN):手写数字生成的项目应用。生成对抗网络&#xff08;GAN&#xff09;是一种强大的生成模型&#xff0c;在手写数字生成方面具有广泛的应用前景。通过生成…

Mysql学习记录补充

索引 在无索引情况下&#xff0c;就需要从第一行开始扫描&#xff0c;一直扫描到最后一行&#xff0c;我们称之为 全表扫描&#xff0c;性能很低。 如果我们针对于这张表建立了索引&#xff0c;假设索引结构就是二叉树&#xff0c;那么也就意味着&#xff0c;会对age这个字段…