当前位置: 首页 > news >正文

CentOS7 + JDK8 虚拟机安装与 Hadoop + Spark 集群搭建实践

前言

在大数据时代,Hadoop 和 Spark 是两种非常重要的分布式计算框架。本文将详细介绍如何在 CentOS7 + JDK8 的虚拟机环境中搭建 Hadoop + Spark 分布式集群,包括 Spark Standalone 和 Hadoop + Spark on YARN 两种模式,并提供具体的代码示例。

一、CentOS7 + JDK8 虚拟机安装与基础配置

1. 虚拟机准备

使用已安装好的 CentOS7 操作系统虚拟机文件,克隆出三台虚拟机,分别命名为 CentOS7_x64-vm01CentOS7_x64-vm02CentOS7_x64-vm03,并使用 root 账户登录。

2. 配置 IP 地址

通过 VMware 的“虚拟网络编辑器”查看网络配置信息,确保虚拟机的 IP 地址固定且不冲突。在每台虚拟机中,修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,配置静态 IP 地址,例如:

BOOTPROTO=static
IPADDR=192.168.163.201
NETMASK=255.255.255.0
GATEWAY=192.168.163.2
DNS1=8.8.8.8

3. 修改主机名和 hosts 文件

在每台虚拟机中,使用以下命令修改主机名:

hostnamectl set-hostname CentOS7_x64-vm01

编辑 /etc/hosts 文件,添加所有虚拟机的主机名与 IP 地址的映射关系:

192.168.163.201 CentOS7_x64-vm01
192.168.163.202 CentOS7_x64-vm02
192.168.163.203 CentOS7_x64-vm03

4. 测试网络连通性

在每台虚拟机上执行以下命令,测试与其他虚拟机的网络连通性:

ping -c 4 CentOS7_x64-vm02
ping -c 4 CentOS7_x64-vm03

5. 配置免密登录

在每台虚拟机上生成 SSH 密钥对,并将公钥添加到其他虚拟机的 ~/.ssh/authorized_keys 文件中,实现免密登录:

ssh-keygen -t rsa
ssh-copy-id root@CentOS7_x64-vm02
ssh-copy-id root@CentOS7_x64-vm03

6. 安装 JDK

下载并安装 JDK 8,配置环境变量:

wget https://example.com/jdk-8uXXX-linux-x64.rpm
rpm -ivh jdk-8uXXX-linux-x64.rpm

编辑 /etc/profile 文件,添加以下内容:

export JAVA_HOME=/usr/java/jdk1.8.0_XXX
export PATH=$JAVA_HOME/bin:$PATH

执行以下命令使配置生效:

source /etc/profile
java -version

二、Hadoop + Spark Standalone 分布式集群环境搭建

1. 软件包准备

将 Hadoop 和 Spark 的安装包(如 hadoop-2.6.5.tar.gzspark-2.4.8-bin-withouthadoop.tgz)上传到 vm01 虚拟机的 /root 目录下。

2. 解压软件包

vm01 虚拟机上,将 Hadoop 和 Spark 的安装包解压到 /usr/local 目录下:

tar -zxvf hadoop-2.6.5.tar.gz -C /usr/local/
tar -zxvf spark-2.4.8-bin-withouthadoop.tgz -C /usr/local/

3. 配置环境变量

编辑 /etc/profile 文件,添加以下内容:

export HADOOP_HOME=/usr/local/hadoop-2.6.5
export SPARK_HOME=/usr/local/spark-2.4.8
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$PATH

执行以下命令使配置生效:

source /etc/profile

4. 配置 HDFS

修改 Hadoop 的 core-site.xmlhdfs-site.xml 文件,配置 HDFS 的存储路径、副本数量等参数:

<!-- core-site.xml -->
<configuration><property><name>fs.defaultFS</name><value>hdfs://vm01:9000</value></property>
</configuration><!-- hdfs-site.xml -->
<configuration><property><name>dfs.replication</name><value>3</value></property>
</configuration>

5. 配置 Spark

修改 Spark 的 spark-defaults.conf 文件,配置 Spark Standalone 模式下的主节点地址、内存分配等参数:

spark.master spark://vm01:7077
spark.executor.memory 2g
spark.executor.cores 2

6. 分发配置文件

将配置好的 Hadoop 和 Spark 文件夹从 vm01 虚拟机分发到 vm02vm03 虚拟机上:

scp -r /usr/local/hadoop-2.6.5 root@vm02:/usr/local/
scp -r /usr/local/hadoop-2.6.5 root@vm03:/usr/local/
scp -r /usr/local/spark-2.4.8 root@vm02:/usr/local/
scp -r /usr/local/spark-2.4.8 root@vm03:/usr/local/

7. 启动集群

vm01 虚拟机上,启动 HDFS 和 Spark 集群服务:

start-dfs.sh
start-master.sh
start-slaves.sh

8. 测试集群

vm01 虚拟机上,通过提交 SparkPi 计算任务和启动 PySparkShell 来测试集群的配置是否正常:

spark-submit --class org.apache.spark.examples.SparkPi \/usr/local/spark-2.4.8/examples/jars/spark-examples_2.11-2.4.8.jar 10
pyspark

三、Hadoop + Spark on YARN 分布式集群环境搭建

1. 软件包准备与解压

与 Hadoop + Spark Standalone 模式类似,将 Hadoop 和 Spark 的安装包上传到 vm01 虚拟机并解压到 /usr/local 目录下。

2. 配置环境变量

编辑 /etc/profile 文件,添加 Hadoop 和 Spark 的环境变量。

3. 配置 HDFS、MapReduce 和 YARN

修改 Hadoop 的 core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml 文件,配置 HDFS、MapReduce 和 YARN 的相关参数:

<!-- core-site.xml -->
<configuration><property><name>fs.defaultFS</name><value>hdfs://vm01:9000</value></property>
</configuration><!-- hdfs-site.xml -->
<configuration><property><name>dfs.replication</name><value>3</value></property>
</configuration><!-- mapred-site.xml -->
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration><!-- yarn-site.xml -->
<configuration><property><name>yarn.resourcemanager.hostname</name><value>vm01</value></property>
</configuration>

4. 分发配置文件

将配置好的 Hadoop 和 Spark 文件夹从 vm01 虚拟机分发到 vm02vm03 虚拟机上。

5. 启动集群

vm01 虚拟机上,启动 HDFS 和 YARN 集群服务:

start-dfs.sh
start-yarn.sh

6. 配置 Spark on YARN

修改 Spark 的 spark-defaults.conf 文件,配置 Spark 在 YARN 集群

http://www.lqws.cn/news/116425.html

相关文章:

  • Kafka入门-集群基础环境搭建(JDK/Hadoop 部署 + 虚拟机配置 + SSH 免密+Kafka安装启动)
  • 解决IDE编译JAVA项目时出现的OOM异常问题
  • 分类与逻辑回归 - 一个完整的guide
  • springboot ErrorController getErrorPath() 版本变迁
  • Springfox 和 Knife4j 集成404 问题
  • 期末复习(学习)之机器学习入门基础
  • 705SJBH超市库存管理系统文献综述
  • Oracle OCP与MySQL OCP认证如何选?
  • SpringBoot(七) --- Redis基础
  • Ubuntu 25.10 将默认使用 sudo-rs
  • web全栈开发学习-01html基础
  • PyTorch学习笔记 - 损失函数
  • C++ 使用 ffmpeg 解码本地视频并获取每帧的YUV数据
  • 大数据学习(128)-数据分析实例
  • 数据结构(8)树-二叉树
  • [ Qt ] | 与系统相关的操作(二):键盘、定时器、窗口移动和大小
  • Go语言爬虫系列教程4:使用正则表达式解析HTML内容
  • 大数据学习(129)-Hive数据分析
  • hive 3集成Iceberg 1.7中的Java版本问题
  • ‘pnpm‘ 不是内部或外部命令,也不是可运行的程序
  • 安全-JAVA开发-第二天
  • 一个完整的时间序列异常检测系统,使用Flask作为后端框架,实现了AE(自编码器)、TimesNet和LSTM三种模型,并提供可视化展示
  • Vue插件
  • 几何绘图与三角函数计算应用
  • Vue-Todo-list 案例
  • 点评中是如何实现短信登录的
  • JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/等待通知机制/锁消除
  • 网络攻防技术十四:入侵检测与网络欺骗
  • 哈希表入门:用 C 语言实现简单哈希表(开放寻址法解决冲突)
  • 分布式电源接入配电网的自适应电流保护系统设计与实现