Ubuntu HDFS集群搭建经验分享
导读:Ubuntu环境下搭建HDFS集群的经验分享 一、前期准备:明确集群架构与基础环境 在开始搭建前,需先规划集群规模(如1个NameNode+2-3个DataNode的入门配置),确保所有节点处于同一局域网且能互相通信(可通过ping命令测试...
Ubuntu环境下搭建HDFS集群的经验分享
一、前期准备:明确集群架构与基础环境
在开始搭建前,需先规划集群规模(如1个NameNode+2-3个DataNode的入门配置),确保所有节点处于同一局域网且能互相通信(可通过ping
命令测试)。基础环境准备是关键,需完成以下步骤:
- 安装Java环境:Hadoop依赖Java,推荐使用OpenJDK 8(兼容性最好)。通过
sudo apt update & & sudo apt install openjdk-8-jdk -y
安装,验证java -version
显示版本信息即为成功。 - 配置SSH免密登录:Hadoop节点间需无密码通信(如NameNode向DataNode发送指令)。在主节点生成密钥(
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
),将公钥复制到所有从节点(ssh-copy-id user@datanode-ip
),测试ssh user@datanode-ip
无需密码登录。
二、Hadoop安装与配置:核心文件详解
1. 下载与解压Hadoop
从Apache官网下载稳定版本(如3.3.6),解压至/usr/local/
目录(便于系统管理):
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop # 软链接简化路径
创建专用用户(如hadoop
)并修改目录权限,避免权限问题:
sudo useradd -m hadoop
sudo chown -R hadoop:hadoop /usr/local/hadoop
2. 配置环境变量
编辑~/.bashrc
(或/etc/profile
),添加Hadoop路径:
echo 'export HADOOP_HOME=/usr/local/hadoop' >
>
~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >
>
~/.bashrc
source ~/.bashrc # 立即生效
验证hadoop version
能正确显示版本信息。
3. 核心配置文件说明
进入$HADOOP_HOME/etc/hadoop
目录,修改以下关键文件:
- core-site.xml:定义HDFS的默认文件系统地址(需替换为主节点IP或主机名):
< configuration> < property> < name> fs.defaultFS< /name> < value> hdfs://namenode-ip:9000< /value> < !-- 集群模式下用主机名或IP --> < /property> < property> < name> hadoop.tmp.dir< /name> < value> /usr/local/hadoop/tmp< /value> < !-- 临时目录,需提前创建 --> < /property> < /configuration>
- hdfs-site.xml:配置HDFS副本数(生产环境建议3,测试环境可设为1)和数据目录:
< configuration> < property> < name> dfs.replication< /name> < value> 2< /value> < !-- 副本数,根据节点数量调整 --> < /property> < property> < name> dfs.namenode.name.dir< /name> < value> /usr/local/hadoop/data/namenode< /value> < !-- NameNode元数据目录 --> < /property> < property> < name> dfs.datanode.data.dir< /name> < value> /usr/local/hadoop/data/datanode< /value> < !-- DataNode数据目录 --> < /property> < /configuration>
- mapred-site.xml(需先创建模板文件
cp mapred-site.xml.template mapred-site.xml
):指定MapReduce运行框架为YARN:< configuration> < property> < name> mapreduce.framework.name< /name> < value> yarn< /value> < /property> < /configuration>
- yarn-site.xml:配置YARN资源管理器地址和Shuffle服务:
< configuration> < property> < name> yarn.resourcemanager.hostname< /name> < value> resourcemanager-ip< /value> < !-- ResourceManager节点IP --> < /property> < property> < name> yarn.nodemanager.aux-services< /name> < value> mapreduce_shuffle< /value> < /property> < property> < name> yarn.nodemanager.aux-services.mapreduce.shuffle.class< /name> < value> org.apache.hadoop.mapred.ShuffleHandler< /value> < /property> < /configuration>
注意:所有节点的配置文件必须保持一致,建议用rsync
同步配置。
三、启动集群:关键步骤与验证
1. 格式化NameNode
首次启动前,必须格式化NameNode(会清空HDFS所有数据,仅第一次需要):
hdfs namenode -format
格式化后会创建dfs.name.dir
指定的目录,存储元数据(如命名空间信息)。
2. 启动服务
- 启动HDFS:在主节点(NameNode所在节点)执行
start-dfs.sh
,启动NameNode、DataNode和SecondaryNameNode(可选,用于元数据备份)。 - 启动YARN:在ResourceManager节点执行
start-yarn.sh
,启动ResourceManager和NodeManager。
启动后,用jps
命令查看进程:主节点应有NameNode
、SecondaryNameNode
、ResourceManager
;从节点应有DataNode
、NodeManager
。
3. 验证集群状态
- 命令行验证:
hdfs dfsadmin -report
查看DataNode列表及存储信息;yarn node -list
查看NodeManager状态。 - Web界面验证:浏览器访问
http://namenode-ip:9870
(HDFS Web界面),http://resourcemanager-ip:8088
(YARN资源管理界面),确认集群状态正常。
四、常见问题排查:快速解决踩坑点
- SSH免密登录失败:检查
~/.ssh
目录权限(应为700),公钥文件权限(应为600),确保authorized_keys
包含所有从节点的公钥。 - NameNode无法启动:查看
$HADOOP_HOME/logs/hadoop-*-namenode-*.log
日志,常见原因包括端口被占用(9000)、dfs.name.dir
目录权限不足或格式化不彻底(需删除dfs.name.dir
目录重新格式化)。 - DataNode无法连接NameNode:检查防火墙是否放行Hadoop端口(如9000、50070、8088),用
telnet namenode-ip 9000
测试端口连通性;确保core-site.xml
中的fs.defaultFS
地址与NameNode实际IP一致。 - DataNode不显示在集群中:检查
dfs.datanode.data.dir
目录是否存在且有写入权限,查看DataNode日志($HADOOP_HOME/logs/hadoop-*-datanode-*.log
)是否有错误信息(如磁盘空间不足)。
五、优化建议:提升集群性能与稳定性
- 调整副本数:生产环境建议设置为3(默认值),可根据节点数量调整(如2个节点设为2),平衡数据可靠性与存储开销。
- 修改块大小:默认块大小为128MB,若处理大文件(如视频),可调整为256MB或512MB(减少NameNode内存压力);若处理小文件,可减小块大小(减少寻址时间)。
- 关闭防火墙:测试环境可临时关闭防火墙(
sudo ufw disable
),生产环境需放行Hadoop所需端口(如9000、50070、8088)。 - 监控集群:使用Hadoop自带的
dfsadmin
、yarn node
命令,或第三方工具(如Ambari、Cloudera Manager)监控集群状态,及时发现资源瓶颈。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu HDFS集群搭建经验分享
本文地址: https://pptw.com/jishu/731144.html