CentOS7 + JDK8 虚拟机安装与 Hadoop + Spark 集群搭建实践
前言
在大数据时代,Hadoop 和 Spark 是两种非常重要的分布式计算框架。本文将详细介绍如何在 CentOS7 + JDK8 的虚拟机环境中搭建 Hadoop + Spark 分布式集群,包括 Spark Standalone 和 Hadoop + Spark on YARN 两种模式,并提供具体的代码示例。
一、CentOS7 + JDK8 虚拟机安装与基础配置
1. 虚拟机准备
使用已安装好的 CentOS7 操作系统虚拟机文件,克隆出三台虚拟机,分别命名为 CentOS7_x64-vm01
、CentOS7_x64-vm02
、CentOS7_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.gz
和 spark-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.xml
和 hdfs-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
虚拟机分发到 vm02
和 vm03
虚拟机上:
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.xml
、hdfs-site.xml
、mapred-site.xml
和 yarn-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
虚拟机分发到 vm02
和 vm03
虚拟机上。
5. 启动集群
在 vm01
虚拟机上,启动 HDFS 和 YARN 集群服务:
start-dfs.sh
start-yarn.sh
6. 配置 Spark on YARN
修改 Spark 的 spark-defaults.conf
文件,配置 Spark 在 YARN 集群