大数据学习06-Spark分布式集群部署

Spark分布式部署全攻略:从环境配置到HDFS操作,
本文详细介绍了如何在多台服务器上完全分布式部署Spark,包括配置网络、主机名、环境变量,安装Scala和Spark,以及HDFS文件操作和PySpark使用示例。

前期准备,每台服务器都需要配置

配置好IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="bcd315b9-9d9a-4ad7-8f75-9546f71e49a4"
DEVICE="ens33"
ONBOOT="yes"

IPADDR=192.168.245.200 #IP地址
GATEWAY=192.168.245.1  #默认网关
NETWORK=255.255.255.0  #子网掩码
DNS1=114.114.114.114   #DNS
DNS2=8.8.8.8

修改主机名
vi /etc/hostname

做好IP映射
vim /etc/hosts

192.168.245.200 master
192.168.245.201 slave1
192.168.245.202 slave2

关闭防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
配置SSH免密登录
ssh-keygen -t rsa

for i in {1..2};do scp -r ~/.ssh/authorized_keys root@slave${i}:~/.ssh/;done

安装Scala

解压scala安装包

将下载好的scala安装包上传至服务器,并解压至指定目录

tar -zxvf scala-2.11.12.tgz -C /home/local

配置环境变量

vim /etc/profile

添加如下配置

export SCALA_HOME=/home/local/scala
export PATH=$SCALA_HOME/bin:$PATH

使环境生效

source /etc/profile

验证

scala -version

安装spark

Spark官网
在这里插入图片描述

解压saprk安装包

将下载好的spark安装包上传至服务器,并解压至指定目录

tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz -C /home/local

移动文件目录至spark

mv spark-2.2.3-bin-hadoop2.6 spark

配置环境变量

export SPARK_HOME=/home/local/spark
export PATH=$PATH:${SPARK_HOME}/bin:${SPARK_HOME}/sbin

修改配置

进入${SPARK_HOME}/conf路径下,拷贝spark-env.sh.template为spark-env.sh

cp spark-env.sh.template spark-env.sh

修改spark-env.sh文件

vim spark-env.sh

添加如下配置


export JAVA_HOME=/home/local/java

export SCALA_HOME=/home/local/scala

export SPARK_DIST_CLASSPATH=$(/home/local/hadoop/bin/hadoop classpath)

export HADOOP_CONF_DIR=/home/local/hadoop/etc/hadoop
#指定spark主节点,通过主机映射
export SPARK_MASTER_HOST=master
#指定从节点worker并行数量
export SPARK_WORKER_CORES=2
#指定内存大小
export SPARK_WORKER_MEMORY=2g
#指定主节点端口
export SPARK_MAETER_PORT=7070

拷贝slave.template为slaves

cp slaves.template slaves

修改slaves文件

[root@master conf]# vim slaves
master
slave1
slave2

分发spark目录至每个服务器节点

for i in {1..2};do scp -r /home/local/spark/ root@slave${i}:/home/local/;done

在${SPARK_HOME}/sbin目录下启动spark

./start-all.sh

在Spark Shell中,你可以使用以下方法来读取HDFS文件:

1.读取文本文件:

val textFile = sc.textFile("hdfs://<HDFS路径>")

统计包含mike的数据记录

textFile.filter(line=>line.contains("mike")).count()

2.读取多个文本文件:

val textFiles = sc.wholeTextFiles("hdfs://<HDFS目录>")

3.读取二进制文件:

val binaryFiles = sc.binaryFiles("hdfs://<HDFS目录>")

4.读取其他格式的文件(如Parquet、Avro等):

 val dataframe = sqlContext.read.format("<文件格式>").load("hdfs://<HDFS路径>")
 这将返回一个 DataFrame 对象,可以使用Spark SQL进行数据分析。

pyspark读取文件

1.导入PySpark模块:

from pyspark.sql import SparkSession

2.创建SparkSession:

spark = SparkSession.builder \
    .appName("PySpark Example") \
    .getOrCreate()

3.加载数据

# 加载文本文件
text_data = spark.read.text("path/to/text/file.txt")

# 加载CSV文件
csv_data = spark.read.csv("path/to/csv/file.csv", header=True, inferSchema=True)

# 加载JSON文件
json_data = spark.read.json("path/to/json/file.json")

4.数据处理和转换

# 显示DataFrame的内容
df.show()

# 选择特定的列
df.select("column1", "column2")

# 过滤数据
df.filter(df.column1 > 10)

# 聚合操作
df.groupBy("column1").agg({"column2": "sum"})

# 排序数据
df.orderBy("column1", ascending=False)

# 添加新列
df.withColumn("new_column", df.column1 * 2)

5.执行sql查询

# 创建临时视图
df.createOrReplaceTempView("my_view")

# 执行SQL查询
result = spark.sql("SELECT * FROM my_view WHERE column1 > 10")

6.将数据保存到文件:

# 保存为文本文件
df.write.text("path/to/save/text/file.txt")

# 保存为CSV文件
df.write.csv("path/to/save/csv/file.csv")

# 保存为Parquet文件
df.write.parquet("path/to/save/parquet/file.parquet")

7.关闭SparkSession

spark.stop()
### 关于头歌实践教学平台中的大数据平台运维与Spark实战操作 #### 大数据平台运维概述 在实训环境中,目标是培养能够全面发展的高素质大数据技术人才[^1]。这不仅限于理论知识的学习,更强调实际动手能力和解决具体问题的能力。 #### Spark环境配置与部署 对于基于Spark大数据分析项目来说,首要任务是在平台上成功安装并配置好相应的开发环境。此过程涉及多个方面的工作: - **Scala编程基础**:作为构建分布式计算框架的语言之一,在深入研究之前需先掌握一定的语法要点以及常用库的应用方法[^2]。 - **Hadoop与Spark集群搭建**:理解如何设置一个稳定可靠的存储层(HDFS),并且在此基础上建立起高效的处理引擎(Spark)。由于Hadoop的编程模型较为繁琐,相比之下,Spark提供了更为简洁易用的操作接口来简化开发者工作流程[^3]。 ```bash # 安装依赖包 sudo apt-get update && sudo apt-get install -y openjdk-8-jdk scala git maven # 下载并解压Apache Hadoop和Spark发行版文件至指定目录下 wget https://archive.apache.org/dist/hadoop/core/hadoop-3.2.0/hadoop-3.2.0.tar.gz tar zxvf hadoop-3.2.0.tar.gz -C /usr/local/ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ wget http://mirror.bit.edu.cn/apache/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz tar zxvf spark-3.1.2-bin-hadoop3.2.tgz -C /usr/local/ ``` #### 数据处理与分析案例演练 一旦完成了上述准备工作之后,则可以着手开展具体的业务逻辑实现部分了。比如利用MLlib来进行机器学习算法训练;或是针对海量日志记录执行ETL转换作业等等[^4]。 ```python from pyspark.sql import SparkSession spark = SparkSession.builder.appName('example').getOrCreate() data = [('Alice', 1), ('Bob', 2)] df = spark.createDataFrame(data, ['name', 'age']) df.show() ``` #### 平台性能优化建议 为了确保整个系统的流畅运转及其良好的用户体验感,还需要关注以下几个方面的调整措施[^5]: - 借助监控工具及时发现潜在瓶颈所在从而采取有效手段加以排除。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小蜜蜂127

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

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

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

打赏作者

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

抵扣说明:

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

余额充值