简介:本资源是面向大数据初学者的入门级实验指导文档,适用于高校计算机、数据科学相关专业学生及转行学习者,旨在解决Linux环境搭建与Hadoop基础操作能力缺失的问题。文档系统覆盖三大核心环节:Linux虚拟机(Ubuntu 16.04/18.04)在Windows平台上的VirtualBox安装全流程;20余条高频Linux命令(如cd、ls、mkdir、cp、mv、rm、cat、tac、find、tar、grep等)的实操示例与环境变量配置要点;以及Hadoop 3.1.3伪分布式环境的完整部署步骤与WordCount验证实践。资源为单个289KB的DOCX文件,内容结构清晰,含实验目的、平台要求、分步操作指令、命令参数说明及结果预期,便于边学边练。目前已有980人学习下载,是夯实大数据开发环境基础、衔接后续MapReduce与Spark实验的关键前置材料。
1. 大数据实验一:Linux + Hadoop 伪分布式环境从零搭起,不是配环境,是建可信基线
你是不是也经历过:下载好 Hadoop 3.1.3,解压、改配置、hadoop namenode -format一气呵成,start-all.sh启动后浏览器打开http://localhost:9870,却只看到一个刺眼的「Live Nodes: 0」?jps 一看,NameNode、ResourceManager 都在,唯独缺了 DataNode——连最基础的文件写入都卡死。这不是个别现象,而是新手在 Windows 上跑大数据实验时最高频的“开局即崩”场景。本实验不是教你怎么点几下鼠标装个虚拟机,而是带你用 Ubuntu 18.04 + VirtualBox + Hadoop 3.1.3 搭出一条可验证、可复位、可 debug 的伪分布式流水线:从虚拟机磁盘分区规划开始,到.bashrc环境变量生效验证,再到hdfs dfs -ls /能真实列出目录、hadoop jar ... wordcount跑通输出结果。它专为两类人设计:一类是刚接触大数据、手头只有 Win11 笔记本的学生;另一类是想快速验证 Hadoop 基础操作、拒绝被“配置玄学”拖垮节奏的工程师。所有命令、路径、参数均基于实测(非文档搬运),每一步失败都有对应排查锚点——比如core-site.xml里hadoop.tmp.dir的路径权限问题,或hdfs-site.xml中dfs.namenode.name.dir与dfs.datanode.data.dir的父子关系陷阱。这不是“能跑就行”的玩具环境,而是你后续跑 Spark、Flink、Hive 的最小可信基线。
2. 虚拟机与系统层:Ubuntu 18.04 的磁盘、用户与 Shell 初始化
2.1 VirtualBox 安装与 Ubuntu 18.04 镜像部署:为什么必须选 18.04 而非 22.04?
VirtualBox 6.1.4(项目正文指定版本)对 Ubuntu 18.04 LTS 的内核模块兼容性经过长期验证,而 Ubuntu 22.04 默认启用 systemd-resolved,常与 Hadoop 的localhost解析逻辑冲突,导致hdfs namenode启动后无法绑定0.0.0.0:9820。安装 VirtualBox 时务必勾选「Install VirtualBox NDIS6 Bridged Networking Driver」和「Install VirtualBox USB Support」,否则后续挂载共享文件夹或连接 USB 设备会失败。
下载 Ubuntu 18.04.6 Desktop ISO(非 Server 版)后,在 VirtualBox 中新建虚拟机:
- 名称:
hadoop-dev-ubuntu18 - 类型:Linux
- 版本:Ubuntu (64-bit)
- 内存:建议 ≥2GB(Hadoop 伪分布式最低要求)
- 硬盘:动态分配 VDI,初始 25GB,最大 50GB(关键!Hadoop 日志、临时数据、格式化后的 NameNode/Datanode 目录会持续增长,20GB 容易在
hadoop namenode -format后填满)
提示:创建完成后,进入「设置 → 存储 → 控制器:SATA」,点击「添加光驱图标」挂载 Ubuntu ISO;再进「系统 → 主板」,确保「启动顺序」中「光驱」排第一;最后「网络 → 网卡1」设为「桥接网卡」,避免 NAT 下端口映射混乱。
启动虚拟机,按向导完成 Ubuntu 安装。关键动作:在「Who are you?」页面,将用户名设为hadoop(非默认ubuntu),密码设为hadoop(便于记忆,后续 Hadoop 用户一致性)。安装完毕重启,首次登录即进入hadoop用户主目录。
2.2 Shell 初始化:.bashrc改写、Java 环境注入与权限闭环
Hadoop 3.1.3强制依赖 Java 8(OpenJDK 8 或 Oracle JDK 8),不支持 Java 11+。Ubuntu 18.04 默认未预装 Java,需手动安装:
sudo apt update && sudo apt install openjdk-8-jdk -y验证安装:
java -version # 输出应为:openjdk version "1.8.0_392" ...接下来注入环境变量。不要直接编辑/etc/environment(全局生效但不加载 shell 函数),而是精准修改当前用户~/.bashrc:
# 使用 nano(比 vim 更友好,新手不易卡住) nano ~/.bashrc在文件末尾追加以下内容(注意路径与版本号严格匹配):
# Java environment export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib # Hadoop environment (预留,待 Hadoop 安装后启用) # export HADOOP_HOME=/usr/local/hadoop # export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop # export HADOOP_MAPRED_HOME=$HADOOP_HOME # export HADOOP_COMMON_HOME=$HADOOP_HOME # export HADOOP_HDFS_HOME=$HADOOP_HOME # export YARN_HOME=$HADOOP_HOME # export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native # export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"保存退出(Ctrl+O → Enter → Ctrl+X),立即生效:
source ~/.bashrc echo $JAVA_HOME # 应输出:/usr/lib/jvm/java-8-openjdk-amd64注意:
/usr/lib/jvm/java-8-openjdk-amd64是 OpenJDK 8 在 Ubuntu 18.04 的标准路径。若你用的是 Oracle JDK,请替换为实际路径(如/usr/java/jdk1.8.0_391)。source命令必须执行,否则新终端仍无JAVA_HOME。
2.3 用户与目录权限:为什么hadoop用户必须拥有/usr/local写权限?
Hadoop 官方推荐安装路径为/usr/local/hadoop,但 Ubuntu 默认该目录属主为root:root,权限drwxr-xr-x。若以hadoop用户解压hadoop-3.1.3.tar.gz到此路径,会因权限不足导致后续chown -R hadoop:hadoop /usr/local/hadoop失败,或hadoop namenode -format时无法创建name目录。
正确做法分三步:
# 1. 创建 hadoop 用户组(虽单用户,但保持规范) sudo addgroup hadoop # 2. 将 hadoop 用户加入 hadoop 组,并赋予 /usr/local 写权限 sudo usermod -a -G hadoop hadoop sudo chown -R hadoop:hadoop /usr/local sudo chmod -R 775 /usr/local # 3. 验证权限 ls -ld /usr/local # 应显示:drwxrwxr-x 11 hadoop hadoop 4096 ...此时hadoop用户对/usr/local具有读、写、执行权限,且组内其他成员(未来扩展时)也可写。这是后续tar -zxf hadoop-3.1.3.tar.gz -C /usr/local/成功的前提。
3. Hadoop 伪分布式安装:从解压到jps显示 DataNode 的完整链路
3.1 下载、解压与基础目录结构固化
Hadoop 3.1.3 官方二进制包(非源码)是唯一推荐安装方式。下载地址:https://archive.apache.org/dist/hadoop/core/hadoop-3.1.3/hadoop-3.1.3.tar.gz
在 Ubuntu 终端中执行:
# 进入临时目录下载 cd /tmp wget https://archive.apache.org/dist/hadoop/core/hadoop-3.1.3/hadoop-3.1.3.tar.gz # 解压到 /usr/local(此前已赋权) sudo tar -zxf hadoop-3.1.3.tar.gz -C /usr/local/ # 创建软链接,避免硬编码路径 sudo ln -s /usr/local/hadoop-3.1.3 /usr/local/hadoop # 修改属主(关键!) sudo chown -R hadoop:hadoop /usr/local/hadoop-3.1.3 sudo chown -R hadoop:hadoop /usr/local/hadoop验证结构:
ls -l /usr/local/ | grep hadoop # 应显示: # lrwxrwxrwx 1 root root 21 Apr 10 10:00 hadoop -> /usr/local/hadoop-3.1.3 # drwxr-xr-x 11 hadoop hadoop 4096 Apr 10 09:58 hadoop-3.1.33.2 四大核心配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml的最小安全集
Hadoop 伪分布式只需修改 4 个 XML 文件,其余全部保留默认值。所有配置均位于/usr/local/hadoop/etc/hadoop/。使用nano编辑(避免 vim 模式切换困扰):
core-site.xml:定义 HDFS 访问入口与临时目录
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> </configuration>参数说明:
fs.defaultFS是 HDFS 的 URI,hdfs://localhost:9000表示 NameNode 运行在本机 9000 端口;hadoop.tmp.dir是 Hadoop 所有临时文件(包括 NameNode 的 edits log、Datanode 的 block 存储根)的父目录,必须由 hadoop 用户可写,且不能与系统/tmp混用(避免被系统清理)。
hdfs-site.xml:定义 NameNode 与 Datanode 的存储路径
<configuration> <property> <name>dfs.replication</name> <value>1</value> <description>Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.</description> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/hdfs/data</value> </property> </configuration>参数说明:
dfs.replication=1是伪分布式的标志(单节点,无需冗余);dfs.namenode.name.dir和dfs.datanode.data.dir必须是绝对路径,且目录需提前创建并赋权。注意:name.dir和data.dir是两个独立目录,不可共用同一路径。
mapred-site.xml:启用 MapReduce 框架(YARN 模式)
# 先复制模板 cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml nano /usr/local/hadoop/etc/hadoop/mapred-site.xml填入:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>yarn-site.xml:配置 ResourceManager 与 NodeManager
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> </configuration>参数说明:
yarn.nodemanager.aux-services=mapreduce_shuffle是 MapReduce 任务 shuffle 阶段必需的服务;yarn.resourcemanager.hostname=localhost确保 ResourceManager 绑定本机。
3.3 目录初始化与格式化:hadoop namenode -format的前置检查清单
在执行格式化前,必须手动创建并赋权hdfs-site.xml中声明的目录:
# 创建 HDFS 存储根目录 mkdir -p /usr/local/hadoop/hdfs/name mkdir -p /usr/local/hadoop/hdfs/data mkdir -p /usr/local/hadoop/tmp # 赋权(关键!) sudo chown -R hadoop:hadoop /usr/local/hadoop/hdfs sudo chown -R hadoop:hadoop /usr/local/hadoop/tmp sudo chmod -R 755 /usr/local/hadoop/hdfs sudo chmod -R 755 /usr/local/hadoop/tmp验证:
ls -ld /usr/local/hadoop/hdfs/name /usr/local/hadoop/hdfs/data /usr/local/hadoop/tmp # 三者均应显示:drwxr-xr-x 2 hadoop hadoop 4096 ...此时执行格式化:
# 切换到 hadoop 用户(确保环境变量生效) su - hadoop # 进入 Hadoop 目录 cd /usr/local/hadoop # 执行格式化(仅首次!) bin/hdfs namenode -format现象:输出中出现
Storage directory /usr/local/hadoop/hdfs/name has been successfully formatted.即成功。若报错Cannot create directory /usr/local/hadoop/hdfs/name/current,说明权限未生效,回退检查chown步骤。
4. 启动、验证与避坑:从start-all.sh到Live Nodes: 1的血泪排查
4.1 启动集群与进程校验:jps是唯一可信指标
Hadoop 3.x 已弃用start-all.sh(官方文档明确标注 deprecated),但本实验为兼容性与教学清晰度,仍使用它(内部调用start-dfs.sh+start-yarn.sh):
# 确保在 /usr/local/hadoop 目录下 cd /usr/local/hadoop # 启动(需 hadoop 用户执行) sbin/start-all.sh启动后立即执行jps:
jps成功状态应显示 6 个进程:
3210 NameNode 3345 DataNode 3521 ResourceManager 3632 NodeManager 3755 SecondaryNameNode 3890 Jps注意:
SecondaryNameNode是伪分布式必需组件,负责定期合并 NameNode 的 edits log 与 fsimage,防止日志爆炸。若缺失,说明hdfs-site.xml配置未生效或core-site.xml的fs.defaultFS错误。
4.2 Web UI 验证:http://localhost:9870与http://localhost:8088的关键信息解读
http://localhost:9870(HDFS UI):左侧导航栏「Utilities → Browse the file system」可查看 HDFS 根目录;顶部「Summary」中「Live Nodes」应为1,点击「1」可查看 Datanode 详情(IP、容量、状态)。http://localhost:8088(YARN UI):顶部「Cluster」→「Nodes」应显示1个 Active NodeManager;「Applications」为空表示无任务运行。
若9870页面显示Live Nodes: 0,不要立刻重试namenode -format——这是最危险操作,会导致 ClusterID 不一致(见避坑章节)。
4.3 常见问题与排查:DataNode 启动失败的五大根因与解法
避坑:DataNode 启动失败是本实验最高频故障,90% 以上源于配置或权限,而非代码缺陷。
现象 1:jps无 DataNode,hadoop-daemon.sh start datanode报错No such file or directory
原因:hdfs-site.xml中dfs.datanode.data.dir路径不存在,或hadoop.tmp.dir未在core-site.xml中声明,导致 DataNode 无法定位本地存储根。
解决:
# 检查路径是否存在 ls -ld /usr/local/hadoop/hdfs/data # 若不存在,创建并赋权 mkdir -p /usr/local/hadoop/hdfs/data sudo chown -R hadoop:hadoop /usr/local/hadoop/hdfs/data现象 2:jps无 DataNode,logs/hadoop-hadoop-datanode-*.log中出现java.io.IOException: Incompatible clusterIDs
原因:多次执行hadoop namenode -format,导致 NameNode 的VERSION文件(位于dfs.namenode.name.dir)与 Datanode 的VERSION文件(位于dfs.datanode.data.dir)中clusterID不一致。这是项目正文提到的“Livenode 数量为 0”的直接原因。
解决(精准清除,非暴力 rm -rf):
# 1. 停止所有 Hadoop 进程 sbin/stop-all.sh # 2. 查看 NameNode 的 clusterID cat /usr/local/hadoop/hdfs/name/current/VERSION | grep clusterID # 3. 查看 Datanode 的 clusterID cat /usr/local/hadoop/hdfs/data/current/VERSION | grep clusterID # 4. 若两者不同,将 Datanode 的 VERSION 文件中 clusterID 替换为 NameNode 的值 nano /usr/local/hadoop/hdfs/data/current/VERSION # 找到 clusterID=xxx 行,改为与 NameNode 一致的值 # 5. 重启 sbin/start-all.sh现象 3:jps有 DataNode,但9870页面仍显示Live Nodes: 0
原因:core-site.xml中fs.defaultFS的 hostname 解析失败。Hadoop 默认用InetAddress.getLocalHost().getHostName()获取本机名,若/etc/hosts中127.0.0.1对应的主机名不是localhost,则 DataNode 注册失败。
解决:
# 查看本机名 hostname # 编辑 hosts sudo nano /etc/hosts # 确保包含: # 127.0.0.1 localhost # 127.0.1.1 <你的主机名> # Ubuntu 默认添加,保留现象 4:start-all.sh后jps显示所有进程,但9870页面打不开或超时
原因:防火墙阻止 9870 端口。Ubuntu 18.04 默认关闭防火墙,但若开启过ufw,需放行。
解决:
sudo ufw status # 查看状态 sudo ufw allow 9870 sudo ufw allow 8088现象 5:hdfs dfs -ls /报错Connection refused
原因:NameNode 未真正启动,或core-site.xml的fs.defaultFS端口(9000)被占用。
解决:
# 检查 9000 端口占用 sudo lsof -i :9000 # 若被占用,杀掉进程或修改 core-site.xml 的端口为 9001(需同步改 hdfs-site.xml 的 dfs.namenode.rpc-address) # 强制重启 NameNode sbin/hadoop-daemon.sh stop namenode sbin/hadoop-daemon.sh start namenode5. HDFS 与 MapReduce 实操:从hdfs dfs命令到 WordCount 跑通的端到端验证
5.1 HDFS 基础操作:hdfs dfs命令族与本地文件系统映射
Hadoop 3.x 推荐使用hdfs dfs(替代已废弃的hadoop fs)。所有操作需在hadoop用户下执行:
# 1. 创建 HDFS 用户目录(等价于 Linux 的 /home/hadoop) hdfs dfs -mkdir -p /user/hadoop # 2. 在 /user/hadoop 下创建 test 目录 hdfs dfs -mkdir /user/hadoop/test # 3. 查看 HDFS 目录列表(验证创建成功) hdfs dfs -ls /user/hadoop # 输出应含:drwxr-xr-x - hadoop supergroup 0 ... # 4. 上传本地 .bashrc 到 HDFS test 目录 hdfs dfs -put ~/.bashrc /user/hadoop/test/ # 5. 查看 test 目录内容 hdfs dfs -ls /user/hadoop/test # 输出应含:-rw-r--r-- 1 hadoop supergroup 3771 ... # 6. 从 HDFS 下载文件到本地 /usr/local/hadoop 目录 hdfs dfs -get /user/hadoop/test/.bashrc /usr/local/hadoop/ # 7. 验证下载文件存在且大小一致 ls -l /usr/local/hadoop/.bashrc ~/.bashrc # 两者 size 应相同逻辑说明:
hdfs dfs命令通过fs.defaultFS定义的 URI 连接 NameNode,所有操作均经由 HDFS 协议,与本地ls/cp/mv完全隔离。-put是上传,-get是下载,-mkdir -p支持递归创建。
5.2 WordCount 实战:用 Hadoop 自带 Jar 包验证 MapReduce 流水线
Hadoop 发行包自带hadoop-mapreduce-examples-3.1.3.jar,其中wordcount是最简 MapReduce 示例:
# 1. 在 HDFS 创建 input 目录 hdfs dfs -mkdir -p /user/hadoop/input # 2. 上传一个测试文本(用 .bashrc 本身即可) hdfs dfs -put ~/.bashrc /user/hadoop/input/ # 3. 运行 WordCount(输出目录不能预先存在) hdfs dfs -rm -r /user/hadoop/output hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /user/hadoop/input /user/hadoop/output # 4. 查看输出结果(part-r-00000 是最终结果文件) hdfs dfs -cat /user/hadoop/output/part-r-00000 | head -20参数说明:
hadoop jar命令指定 Jar 包路径、主类名(wordcount)、输入路径、输出路径。输出路径/user/hadoop/output必须不存在,否则报错FileAlreadyExistsException。-cat读取结果文件,head -20只显示前 20 行,避免刷屏。
成功输出示例:
" 1 "alias" 1 "complete" 1 "export" 1 "if" 1 "then" 1 "fi" 1 ...这证明:NameNode 可调度、Datanode 可读写、ResourceManager 可分配 Container、NodeManager 可执行 Task——整个 Hadoop 伪分布式流水线已贯通。
5.3 权限与日志:如何快速定位 MapReduce 任务失败原因
当hadoop jar报错(如Application application_XXX failed),不要只看控制台红字,要查三处日志:
YARN ApplicationMaster 日志(最详细):
# 在 YARN UI http://localhost:8088 的 Applications 列表中,点击失败应用的 Application ID → Logs → All Logs # 或命令行获取: yarn logs -applicationId application_1712789012345_0001NodeManager 本地日志(定位 Container 启动失败):
# 日志路径由 yarn-site.xml 的 yarn.nodemanager.log-dirs 定义,默认为: ls -lt /usr/local/hadoop/logs/userlogs/ # 进入最新 application 目录,查看 stderr/stdoutHDFS 操作审计日志(定位文件权限/路径错误):
# 查看 NameNode 日志 tail -50 /usr/local/hadoop/logs/hadoop-hadoop-namenode-*.log
关键技巧:所有日志中搜索
ERROR、FATAL、Caused by,忽略WARN(多数为无关提示)。若看到Permission denied: user=hadoop, access=WRITE, inode="/user",说明/user目录属主不是hadoop,需hdfs dfs -chown hadoop:supergroup /user。
6. 环境固化与复位:一键清理、快照备份与跨实验迁移的工程化习惯
6.1 一键清理脚本:hadoop-clean.sh—— 为下次实验留出干净画布
反复格式化namenode是新手最大误区。我给自己写了这个脚本,放在/usr/local/bin/下,每次实验前执行一次:
#!/bin/bash # 文件名:/usr/local/bin/hadoop-clean.sh # 赋权:sudo chmod +x /usr/local/bin/hadoop-clean.sh echo "Stopping all Hadoop services..." /usr/local/hadoop/sbin/stop-all.sh 2>/dev/null echo "Removing HDFS data directories..." sudo rm -rf /usr/local/hadoop/hdfs/name/* sudo rm -rf /usr/local/hadoop/hdfs/data/* sudo rm -rf /usr/local/hadoop/tmp/* echo "Removing YARN logs..." sudo rm -rf /usr/local/hadoop/logs/userlogs/* sudo rm -rf /usr/local/hadoop/logs/*.log.* echo "Removing HDFS output directories..." hdfs dfs -rm -r /user/hadoop/output 2>/dev/null hdfs dfs -rm -r /user/hadoop/input 2>/dev/null echo "Done. Ready for 'hadoop namenode -format' and 'start-all.sh'."执行:
sudo hadoop-clean.sh bin/hdfs namenode -format sbin/start-all.sh逻辑说明:该脚本只清空数据目录(
name/、data/、tmp/),不删除配置文件、Jar 包、脚本,确保环境结构完整。2>/dev/null屏蔽不存在目录的报错,提升鲁棒性。
6.2 VirtualBox 快照:把“能跑的环境”固化为可回滚的黄金镜像
VirtualBox 的快照功能是实验者的后悔药。在sbin/start-all.sh成功且jps显示 6 个进程后,立即创建快照:
- VirtualBox 管理器 → 选中
hadoop-dev-ubuntu18→ 「快照」→ 「拍摄快照」 - 名称:
hadoop-3.1.3-pseudo-ready - 描述:
Hadoop 3.1.3 伪分布式环境已启动,Live Nodes: 1,WordCount 可跑通
后续若配置搞乱、系统崩溃,右键快照 → 「还原」,30 秒回到黄金状态。不要依赖“重装系统”,要依赖“快照回滚”——这是我在某高校大数据实验室带学生时,从翻车 17 次后总结的铁律。
6.3 跨实验迁移:如何把本实验环境无缝用于 Spark/Flink 实验
本实验搭建的 Ubuntu 18.04 + Java 8 + Hadoop 3.1.3 伪分布式环境,本身就是 Spark 3.x 和 Flink 1.15+ 的理想底座。只需两步:
Spark 集成:下载
spark-3.3.2-bin-hadoop3.tgz,解压到/usr/local/,配置SPARK_HOME和PATH,并在conf/spark-env.sh中添加:export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop export YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop此时
spark-shell --master yarn即可直连本机 YARN。Flink 集成:下载
flink-1.15.4-bin-scala_2.12.tgz,解压后在conf/flink-conf.yaml中设置:jobmanager.memory.process.size: 1600m taskmanager.memory.process.size: 1600m # 启用 YARN 模式 execution.target: yarn-per-job
关键参数:所有集成框架必须指向同一个
HADOOP_CONF_DIR,确保它们读取相同的core-site.xml和hdfs-site.xml。这样,你在本实验中创建的/user/hadoop目录,Spark 和 Flink 都能直接访问,无需重复上传数据。
从那以后我每次开始新实验,都强制走一遍hadoop-clean.sh→namenode -format→start-all.sh→jps→hdfs dfs -ls /→WordCount验证。不是为了炫技,而是让每一次实验都建立在可验证的基线上——毕竟,在大数据的世界里,环境的确定性,比算法的精巧性更早决定成败。希望帮到你。
本文还有配套的精品资源,点击获取