从零搭建Hadoop+Spark+Hive大数据环境:Ubuntu系统部署与排错指南
1. 项目概述:一次典型的云计算与大数据环境搭建实录
最近在带学生做云计算与大数据相关的课程实验,发现一个普遍现象:很多同学的理论知识掌握得不错,但一到动手搭建环境、安装软件这一步,就频频“翻车”。不是依赖库冲突,就是配置文件出错,要么就是网络问题导致安装失败,一个简单的实验环境准备能折腾一整天。这让我意识到,对于初学者乃至有一定经验的从业者来说,一套清晰、可复现的软件安装与配置流程,其价值不亚于一本好的理论教材。因此,我决定将这次课程中,从零开始构建一个可用于教学和简单开发的“云计算与大数据”基础软件栈的全过程记录下来。这不仅仅是一份操作清单,更是一次对常见陷阱、配置逻辑和排错思路的深度剖析。我们将基于主流的Linux发行版(以Ubuntu Server LTS为例),涵盖从虚拟机/云主机初始化,到Hadoop、Spark、Hive等核心大数据组件的部署,再到必要的开发工具链配置。无论你是正在学习相关课程的学生,还是希望快速搭建一个本地测试环境的开发者,这份“踩坑”后的经验总结都能帮你节省大量时间,直击要害。
2. 环境规划与基础准备
在开始安装任何大数据软件之前,一个稳定、干净且经过适当优化的基础操作系统环境至关重要。盲目开始安装,后期往往会遇到各种权限、路径和依赖问题。
2.1 操作系统选择与初始化
对于云计算与大数据环境,我们通常选择服务器版本的Linux发行版,例如Ubuntu Server、CentOS Stream或Rocky Linux。它们没有图形界面开销,更稳定,且对服务器软件支持更好。本次我们以Ubuntu 22.04 LTS为例。
首先,在VMware、VirtualBox或你拥有的云服务器(如阿里云ECS、腾讯云CVM)上安装一个全新的Ubuntu Server。安装时,建议勾选“OpenSSH server”以便远程连接。系统安装完成后,第一件事不是急着装软件,而是进行基础优化。
更新系统源与软件包:这是保证后续所有安装能顺利找到最新、最稳定依赖的前提。
sudo apt update && sudo apt upgrade -yapt update刷新软件包索引,upgrade升级所有可升级的包。-y参数用于自动确认,在脚本中很常用。配置静态IP(针对本地虚拟机):对于虚拟机环境,避免DHCP分配的IP变动导致后续配置失效。编辑网络配置文件:
sudo vim /etc/netplan/00-installer-config.yaml根据你的网络情况配置,例如:
network: ethernets: ens33: # 网卡名称,请用 `ip a` 命令查看 dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114] version: 2应用配置:
sudo netplan apply。关闭防火墙与SELinux(仅用于学习环境):在复杂的分布式系统学习初期,防火墙和SELinux可能会带来许多难以排查的连接问题。生产环境必须严格配置,但学习环境可以先关闭以简化问题。
sudo ufw disable # 关闭Ubuntu防火墙 # 如果是CentOS/Rocky Linux,还需 # sudo setenforce 0 # 临时关闭SELinux # sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭配置主机名映射:大数据集群组件之间经常通过主机名通信。即使只有单机,配置好本地映射也能避免一些潜在问题。
sudo vim /etc/hosts # 添加一行,例如(假设主机名为 bigdata-server) 127.0.1.1 bigdata-server
注意:以上关闭防火墙和SELinux的操作仅适用于内网测试或学习环境。任何计划暴露在公网或用于生产的环境,都必须基于最小权限原则,精细配置防火墙规则和安全策略。
2.2 创建专用用户与目录规划
不建议直接使用root用户进行日常操作和软件安装。创建一个专门的大数据用户,并规划好清晰的目录结构,是良好的实践。
创建用户和组:
sudo adduser hadoop # 创建用户hadoop,按提示设置密码 sudo usermod -aG sudo hadoop # 将hadoop加入sudo组,获取管理员权限后续操作我们主要使用
hadoop用户。规划软件目录:我习惯将所有第三方软件安装在
/opt目录下,用户数据放在/home/hadoop/data下。sudo mkdir -p /opt/modules # 存放Hadoop、Spark等软件解压后的目录 sudo mkdir -p /opt/software # 存放下载的软件安装包 sudo mkdir -p /home/hadoop/data # 存放数据 sudo chown -R hadoop:hadoop /opt/modules /opt/software /home/hadoop/data # 更改属主这样的结构一目了然:
software是“仓库”,modules是“运行环境”,data是“工作区”。
2.3 安装基础依赖与开发工具
大数据软件大多由Java或Scala编写,因此Java Development Kit (JDK) 是绝对的核心依赖。版本选择很重要,太新或太旧都可能不兼容。
安装JDK:Hadoop 3.x 通常推荐JDK 8或JDK 11。这里安装OpenJDK 11。
sudo apt install openjdk-11-jdk -y安装后验证:
java -version # 应输出类似:openjdk version "11.0.22" 2024-01-16常见坑点:有时系统会默认安装多个Java版本。使用
update-alternatives --config java可以查看和切换默认Java版本。确保你后续配置的环境变量指向正确的JDK路径,可以通过readlink -f $(which java)找到实际路径。配置JAVA_HOME环境变量:这是最关键的一步,很多软件启动失败都源于此变量未正确设置。
# 先找到JDK的安装根目录,通常在上一步命令输出的路径的上级目录 # 例如,如果 `readlink -f $(which java)` 输出 /usr/lib/jvm/java-11-openjdk-amd64/bin/java # 那么 JAVA_HOME 应该是 /usr/lib/jvm/java-11-openjdk-amd64 # 编辑hadoop用户的bash配置文件 vim ~/.bashrc # 在文件末尾添加 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH使配置生效:
source ~/.bashrc。验证:echo $JAVA_HOME应输出你设置的路径。安装其他常用工具:SSH客户端、网络工具、压缩工具等。
sudo apt install ssh pdsh net-tools vim wget curl unzip -ypdsh是一个并行分布式shell工具,在管理集群时非常有用。
3. 核心大数据组件安装与配置
基础环境就绪后,我们开始安装大数据生态的核心“三驾马车”:Hadoop(存储与计算基础)、Spark(内存计算引擎)、Hive(数据仓库工具)。我们将采用“伪分布式”模式安装,即所有服务都运行在单台机器上,但遵循分布式架构的配置逻辑,这对于学习和功能测试完全足够。
3.1 Hadoop 3.x 伪分布式集群部署
Hadoop是整个生态的基石,包含HDFS(分布式文件系统)和YARN(资源调度器)两大核心。
下载与解压:
cd /opt/software wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar -zxvf hadoop-3.3.6.tar.gz -C /opt/modules/ cd /opt/modules sudo ln -s hadoop-3.3.6 hadoop # 创建软链接,方便版本管理 sudo chown -R hadoop:hadoop hadoop-3.3.6 hadoop配置环境变量:将Hadoop的bin和sbin目录加入PATH。
vim ~/.bashrc # 添加以下内容 export HADOOP_HOME=/opt/modules/hadoop export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopsource ~/.bashrc生效。修改Hadoop配置文件:这是配置的核心,位于
$HADOOP_HOME/etc/hadoop/目录下。hadoop-env.sh:指定JDK路径。vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh # 找到 export JAVA_HOME= 这一行,取消注释并修改为 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64core-site.xml:配置HDFS的默认文件系统URI和临时目录。
在vim $HADOOP_HOME/etc/hadoop/core-site.xml<configuration>标签内添加:<property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/data/hadoop/tmp</value> </property>hdfs-site.xml:配置HDFS副本数(伪分布式设为1)。<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/hadoop/data/hadoop/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/hadoop/data/hadoop/datanode</value> </property>mapred-site.xml:配置MapReduce使用YARN框架。<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>yarn-site.xml:配置YARN资源管理器。<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property>
配置SSH免密登录:Hadoop脚本管理集群需要本机到自身的SSH免密登录。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 生成密钥对 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 将公钥加入授权列表 chmod 600 ~/.ssh/authorized_keys # 测试:ssh localhost 应该不需要密码直接登录格式化HDFS并启动集群:
hdfs namenode -format # 格式化NameNode,**注意:首次安装才需要,重复格式化会清空数据!** start-dfs.sh # 启动HDFS(NameNode, DataNode, SecondaryNameNode) start-yarn.sh # 启动YARN(ResourceManager, NodeManager)使用
jps命令查看Java进程,应该能看到NameNode,DataNode,ResourceManager,NodeManager等。验证:
- 浏览器访问
http://<你的服务器IP>:9870查看HDFS状态。 - 浏览器访问
http://<你的服务器IP>:8088查看YARN集群状态。
- 浏览器访问
实操心得:配置文件中的路径,如
hadoop.tmp.dir,务必使用绝对路径,并且确保hadoop用户对该路径有读写权限。每次修改配置文件后,需要重启相关服务(stop-dfs.sh&&stop-yarn.sh再启动)才能生效。格式化NameNode是高风险操作,务必确认数据可丢失后再执行。
3.2 Spark 3.x On YARN 模式部署
Spark可以独立运行,也可以运行在YARN上。集成到YARN上可以更好地与Hadoop生态共享资源。
下载与解压:选择与Hadoop版本兼容的Spark(带
hadoop3后缀)。cd /opt/software wget https://dlcdn.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz tar -zxvf spark-3.5.0-bin-hadoop3.tgz -C /opt/modules/ cd /opt/modules sudo ln -s spark-3.5.0-bin-hadoop3 spark sudo chown -R hadoop:hadoop spark-3.5.0-bin-hadoop3 spark配置环境变量与Spark配置:
vim ~/.bashrc export SPARK_HOME=/opt/modules/spark export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH source ~/.bashrc复制模板配置文件并修改:
cd $SPARK_HOME/conf cp spark-env.sh.template spark-env.sh vim spark-env.sh # 添加以下内容 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export SPARK_MASTER_HOST=localhost为了让Spark在YARN上运行,通常不需要启动独立的Spark集群(
start-master.sh),而是直接以yarn为master提交任务。验证Spark:
- 运行本地Pi计算示例:
spark-submit --class org.apache.spark.examples.SparkPi --master local[*] $SPARK_HOME/examples/jars/spark-examples_2.12-3.5.0.jar 10 - 运行YARN模式示例(需先启动Hadoop YARN):
在YARN的Web UI(8088端口)中应该能看到这个应用。spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode client \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.5.0.jar \ 10
- 运行本地Pi计算示例:
注意事项:Spark on YARN时,
--deploy-mode可以是client或cluster。client模式下,Driver运行在提交任务的机器上,适合交互式调试;cluster模式下,Driver运行在YARN的某个容器内,更适合生产作业。初次测试建议用client模式,日志直接输出在终端,便于排查问题。
3.3 Hive 3.x 元数据管理与安装
Hive可以将SQL转换为MapReduce/Tez/Spark任务,它需要一个“元数据库”来存储表结构等信息。生产环境用MySQL/PostgreSQL,学习环境可以用其自带的Derby数据库(仅支持单会话)。
下载与解压:
cd /opt/software wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/modules/ cd /opt/modules sudo ln -s apache-hive-3.1.3-bin hive sudo chown -R hadoop:hadoop apache-hive-3.1.3-bin hive配置环境变量:
vim ~/.bashrc export HIVE_HOME=/opt/modules/hive export PATH=$HIVE_HOME/bin:$PATH source ~/.bashrc配置Hive:
cd $HIVE_HOME/conf cp hive-env.sh.template hive-env.sh cp hive-default.xml.template hive-site.xml编辑
hive-env.sh,添加:export HADOOP_HOME=/opt/modules/hadoop export HIVE_CONF_DIR=/opt/modules/hive/conf由于默认的
hive-site.xml非常复杂,我们创建一个新的简化版:mv hive-site.xml hive-site.xml.template # 备份原模板 vim hive-site.xml写入以下基本配置:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:derby:;databaseName=/home/hadoop/data/hive/metastore_db;create=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>org.apache.derby.jdbc.EmbeddedDriver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>hive.metastore.local</name> <value>true</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>localhost</value> </property> </configuration>初始化Derby元数据库并启动:
# 初始化元数据库 schematool -initSchema -dbType derby # 启动Hive CLI(旧版)或 Beeline(新版推荐) hive # 进入Hive命令行界面在Hive CLI中,可以尝试创建表、查询等操作。
常见问题:如果遇到
Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database错误,说明Derby数据库被锁定了。这是因为Derby是单进程数据库,确保没有其他Hive会话在运行,然后删除 metastore_db 目录及其下的derby.log文件,重新初始化。强烈建议学习时使用MySQL作为元数据库,避免此问题,也更贴近生产环境。安装MySQL后,只需修改hive-site.xml中的JDBC连接信息即可。
4. 辅助工具与开发环境配置
大数据开发不仅仅是部署Hadoop、Spark,还需要一系列辅助工具来提高效率,例如数据可视化、作业调度、以及方便的IDE。
4.1 安装与配置MySQL(替代Derby)
如前所述,使用MySQL作为Hive元数据库更稳定。
安装MySQL Server:
sudo apt install mysql-server -y sudo systemctl start mysql sudo systemctl enable mysql安全初始化与创建Hive元数据库:
sudo mysql_secure_installation # 按提示设置root密码、移除匿名用户等 mysql -u root -p在MySQL命令行中执行:
CREATE DATABASE metastore CHARACTER SET latin1 COLLATE latin1_general_ci; CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hivepassword'; GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'localhost'; FLUSH PRIVILEGES; EXIT;下载MySQL JDBC驱动,并放入Hive的lib目录:
cd /opt/software wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.33.tar.gz tar -zxvf mysql-connector-j-8.0.33.tar.gz cp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar $HIVE_HOME/lib/修改Hive配置,指向MySQL: 修改
$HIVE_HOME/conf/hive-site.xml,更新以下属性:<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hivepassword</value> </property>重新初始化元数据库:
schematool -initSchema -dbType mysql
4.2 安装Python与数据分析库(PySpark环境)
Spark支持Python API(PySpark),这是数据科学家的最爱。
安装Python及pip:
sudo apt install python3 python3-pip -y配置PySpark依赖:PySpark运行时需要本机有可用的Python环境。为了让PySpark能找到正确的Python,可以设置环境变量(通常Spark会自动使用
python3)。# 可选:在 spark-env.sh 中明确指定 # export PYSPARK_PYTHON=/usr/bin/python3 # export PYSPARK_DRIVER_PYTHON=/usr/bin/python3安装常用Python库:
pip3 install pyspark numpy pandas matplotlib jupyterlab安装后,就可以在命令行使用
pyspark进入交互式环境,或者用spark-submit提交Python脚本了。
4.3 远程开发环境连接(可选但推荐)
在本地Windows/Mac电脑上使用IDE(如IntelliJ IDEA, VS Code, PyCharm)远程连接到服务器进行开发,体验更好。
- 在服务器端确保SSH服务运行:
sudo systemctl status ssh - 在本地IDE中配置远程解释器或SSH连接:
- PyCharm/IntelliJ IDEA:在设置中搜索“Python Interpreter”或“SSH”,添加远程主机信息,将解释器路径设置为服务器上的
/usr/bin/python3。 - VS Code:安装“Remote - SSH”扩展,然后通过命令面板(Ctrl+Shift+P)输入“Remote-SSH: Connect to Host...”,添加服务器连接。
- PyCharm/IntelliJ IDEA:在设置中搜索“Python Interpreter”或“SSH”,添加远程主机信息,将解释器路径设置为服务器上的
- 配置本地到服务器的端口转发:为了在本地浏览器访问服务器上的Web UI(如Hadoop 9870端口,Spark 4040端口),可以使用SSH端口转发。
然后本地浏览器访问# 在本地终端执行 ssh -L 9870:localhost:9870 hadoop@<你的服务器IP>http://localhost:9870即可看到HDFS界面。
5. 安装后验证与基础操作示例
环境搭建好后,需要通过一系列连贯的操作来验证整个栈是否工作正常。
5.1 全链路测试:从HDFS到Hive
启动所有服务:
start-dfs.sh start-yarn.sh # Hive Metastore服务(如果使用远程模式需要启动,我们这里是嵌入式/本地模式,用CLI时会自动启动) # hive --service metastore & # 后台启动元数据服务 # hive --service hiveserver2 & # 启动HiveServer2(供JDBC/ODBC连接)HDFS操作:
hdfs dfs -mkdir -p /user/hadoop/input echo "Hello Hadoop World" > test.txt hdfs dfs -put test.txt /user/hadoop/input/ hdfs dfs -cat /user/hadoop/input/test.txtSpark操作(读取HDFS文件): 启动PySpark交互界面:
pyspark在PySpark Shell中执行:text_file = spark.sparkContext.textFile("hdfs://localhost:9000/user/hadoop/input/test.txt") word_counts = text_file.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b) word_counts.collect()Hive操作(创建表并查询):
hive # 进入Hive CLICREATE TABLE IF NOT EXISTS test_table (id INT, name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; -- 准备本地数据文件 -- 在另一个终端:echo -e "1,Alice\n2,Bob" > /tmp/data.csv LOAD DATA LOCAL INPATH '/tmp/data.csv' INTO TABLE test_table; SELECT * FROM test_table;
5.2 资源监控与日志查看
- YARN ResourceManager UI:
http://<服务器IP>:8088查看集群资源使用和运行中的应用。 - HDFS NameNode UI:
http://<服务器IP>:9870查看文件系统状态。 - Spark History Server(需启动): 用于查看已完成的Spark作业历史。
- 日志位置:
- Hadoop日志:
$HADOOP_HOME/logs/ - Spark日志:Spark on YARN模式下,日志主要在YARN的容器里,可以通过YARN UI的“Logs”链接查看,或使用
yarn logs -applicationId <app_id>命令。 - Hive日志:默认在
/tmp/<用户名>/hive.log
- Hadoop日志:
6. 常见问题排查与经验技巧
即使按照步骤操作,也难免会遇到问题。这里总结几个高频问题及其解决思路。
6.1 启动失败类问题
| 问题现象 | 可能原因 | 排查步骤 |
|---|---|---|
start-dfs.sh后jps看不到 NameNode | 1. SSH免密登录未配置。 2. hdfs namenode -format未执行或执行失败。3. 配置文件错误(如端口占用、路径权限)。 | 1. 检查ssh localhost是否免密。2. 查看 $HADOOP_HOME/logs/hadoop-*-namenode-*.log错误日志。3. 检查 core-site.xml和hdfs-site.xml配置。 |
| YARN ResourceManager 启动失败 | 1. JAVA_HOME 未在yarn-env.sh中正确设置。2. 端口冲突(8088)。 | 1. 确认yarn-env.sh中export JAVA_HOME。2. 使用 `netstat -tlnp |
| Hive 初始化 schematool 失败 | 1. Derby数据库目录被锁(单会话问题)。 2. MySQL连接失败(驱动未放、密码错误、权限不足)。 | 1. 删除 metastore_db 和 derby.log 重试。 2. 检查MySQL服务状态、驱动jar包、连接字符串和用户权限。 |
6.2 运行时错误类问题
Spark提交作业到YARN失败,报
ClassNotFoundException或NoSuchMethodError: 这通常是依赖冲突或版本不匹配。确保你提交的应用程序jar包所依赖的库版本(如Hadoop、Spark本身)与集群环境一致。使用--jars参数指定额外的依赖包,或使用spark-submit的--packages从Maven仓库自动下载。Hive查询报错
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask: 这通常是MapReduce任务执行失败。首先去YARN UI(8088)找到对应的应用,查看日志。常见原因有:内存不足(调整mapreduce.map.memory.mb和mapreduce.reduce.memory.mb)、HDFS权限问题(Hive表目录权限不对)、数据格式与表定义不匹配。磁盘空间不足导致HDFS DataNode下线: 检查DataNode日志,确认磁盘空间。HDFS有配置项
dfs.datanode.du.reserved用于保留一部分空间给非HDFS使用,默认是0。可以适当调整,或清理磁盘。
6.3 性能调优与稳定性建议(针对学习环境)
- 内存配置:伪分布式模式下,所有服务挤在一台机器,容易内存不足。务必在
hadoop-env.sh、yarn-env.sh中为HADOOP_HEAPSIZE、YARN_HEAPSIZE设置合理的值(如2GB)。在yarn-site.xml中调整yarn.nodemanager.resource.memory-mb(总可用内存)和yarn.scheduler.maximum-allocation-mb(单个容器最大内存)。 - 关闭IPv6:某些情况下,Hadoop服务可能错误地绑定到IPv6地址导致连接问题。可以在
hadoop-env.sh中添加export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true $HADOOP_OPTS"。 - 使用脚本管理服务:编写简单的shell脚本,一键启动/停止所有服务(HDFS, YARN, Spark History Server, Hive Metastore等),避免手动输入多个命令。
- 定期清理临时文件:Hadoop和Spark会产生大量临时文件,定期清理
/tmp和hadoop.tmp.dir指定的目录,防止磁盘写满。
整个安装配置过程,本质上是对分布式系统组件之间依赖关系和配置约定的学习。最宝贵的经验往往来自于解决那些千奇百怪的报错信息。建议每完成一个组件的安装,就立即进行基础功能测试,确保它是正常的,再继续下一个。这样一旦出问题,排查范围会小很多。最后,将这份配置文档和你自己的安装笔记保存好,未来搭建新环境时,它就是你的最佳模板。
