阅读量:0
在 Ubuntu 上使用 HDFS 进行大数据处理的实操指南
一 环境准备与安装
- 安装 Java(推荐 OpenJDK 8,Hadoop 3.x 系列对该版本兼容性更好):
- 执行:
sudo apt update && sudo apt install -y openjdk-8-jdk - 验证:
java -version
- 执行:
- 安装与配置 SSH(用于节点间通信,单机也建议配置免密登录):
- 执行:
sudo apt install -y openssh-server - 生成密钥:
ssh-keygen -t rsa -P '' - 免密登录本机:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys - 测试:
ssh localhost
- 执行:
- 下载并解压 Hadoop(示例版本 3.3.6):
- 执行:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz - 解压:
sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/ && sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
- 执行:
- 配置环境变量(写入
~/.bashrc或/etc/profile):- 内容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin - 生效:
source ~/.bashrc
- 内容:
二 配置 HDFS 与 YARN
- 核心配置($HADOOP_HOME/etc/hadoop/)
- core-site.xml
fs.defaultFS hdfs://localhost:9000 - hdfs-site.xml(单机副本设为 1,并指定本地数据目录)
dfs.replication 1 dfs.namenode.name.dir /usr/local/hadoop/hdfs/namenode dfs.datanode.data.dir /usr/local/hadoop/hdfs/datanode - mapred-site.xml(使用 YARN 作为执行框架)
mapreduce.framework.name yarn - yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler
- core-site.xml
- 创建本地数据目录并赋权:
- 执行:
sudo mkdir -p /usr/local/hadoop/hdfs/{namenode,datanode} - 赋权(如使用 hdfs 用户):
sudo chown -R hdfs:hdfs /usr/local/hadoop/hdfs
- 执行:
- 首次启动前格式化 NameNode:
- 执行:
hdfs namenode -format
- 执行:
三 启动与验证
- 启动服务:
- 仅 HDFS:
start-dfs.sh - HDFS + YARN:
start-dfs.sh && start-yarn.sh
- 仅 HDFS:
- 进程健康检查:
- 执行:
jps - 期望看到:NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager
- 执行:
- Web 管理界面(注意 Hadoop 3.x 与 2.x 端口差异):
- HDFS NameNode:http://localhost:9870
- YARN ResourceManager:http://localhost:8088
- 若启用了防火墙,放行端口(示例 UFW):
- 执行:
sudo ufw allow 9000,9870,8088
- 执行:
四 HDFS 基本操作与示例作业
- 基本文件操作(HDFS Shell)
- 创建用户目录:
hdfs dfs -mkdir -p /user/$USER - 上传文件:
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/$USER/input - 查看文件:
hdfs dfs -cat /user/$USER/input/*.xml | head - 下载结果:
hdfs dfs -get /user/$USER/output ./output - 删除目录:
hdfs dfs -rm -r /user/$USER/output
- 创建用户目录:
- 运行内置示例(单词计数)
- 执行:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep /user/$USER/input /user/$USER/output 'dfs[a-z.]+' - 查看结果:
hdfs dfs -cat /user/$USER/output/*
- 执行:
- 常用补充
- 列出目录:
hdfs dfs -ls /user/$USER - 复制/移动:
hdfs dfs -cp input/my.txt /input,hdfs dfs -mv input/my.txt /input2
- 列出目录:
五 常见问题与优化建议
- 无法访问 Web UI
- 确认服务已启动(
jps)、端口未被占用、以及本机/服务器防火墙已放行(如 9870/8088)。
- 确认服务已启动(
- 权限错误
- 若以 hdfs 用户运行,确保 HDFS 目录属主为 hdfs:hdfs;或在命令前加
sudo -u hdfs执行相关 HDFS 操作。
- 若以 hdfs 用户运行,确保 HDFS 目录属主为 hdfs:hdfs;或在命令前加
- 数据块副本与容错
- 单机伪分布式副本只能设为 1;多节点集群建议将
dfs.replication设为 3 以提升容错性。
- 单机伪分布式副本只能设为 1;多节点集群建议将
- 版本与端口差异
- Hadoop 3.x 的 NameNode Web 默认端口为 9870(2.x 为 50070),访问时请核对版本。
- 性能与稳定性
- 合理设置 HDFS 数据目录到性能更好的磁盘;YARN 可根据内存与 CPU 核数调整容器资源;大数据量作业优先使用 YARN 模式以获得更好的资源调度与扩展性。
以上就是关于“如何在Ubuntu上利用HDFS进行大数据处理”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm