总体思路
在CentOS上部署HDFS总体兼容性良好,关键在于做好操作系统版本、Java版本、Hadoop版本的匹配,并规范完成网络、时间同步、权限与安全等基础配置。实践中,优先选择CentOS 7/8与Hadoop 3.x的组合,并使用JDK 8作为运行时;同时按官方文档核对各版本的兼容性矩阵与参数差异,可显著降低问题概率。
版本匹配与依赖
- 操作系统与Hadoop:更推荐在CentOS 7/8上部署Hadoop 3.x;CentOS 6.x已趋老旧,常遇到glibc与依赖库冲突、配置差异等问题,不利于稳定运行。若必须在旧系统上运行,务必先做小范围验证与回滚预案。
- Java运行时:Hadoop 3.x通常与JDK 8兼容,建议在所有节点统一JDK版本与路径,避免“节点间Java不一致”导致的启动或运行异常。
- 基础依赖与系统库:提前检查并安装必要依赖,关注系统库(如glibc)是否满足所用Hadoop版本的最低要求,避免因系统库过旧引发兼容性问题。
系统与网络配置
- 主机名与解析:配置静态IP,在**/etc/hosts**或DNS中完成主机名与IP映射,确保节点间可互相解析与访问。
- 时间同步:全集群启用NTP或chrony进行时间同步,避免因为时间漂移导致的事务异常或HA误判。
- 防火墙与端口:按需放行HDFS相关端口(如9000、50010、50020、50070、50075、50090),或在内网环境临时关闭防火墙以便排查。
- SSH免密:配置SSH免密登录(至少NameNode到各DataNode),保证脚本化启停与集群管理可靠。
HDFS配置与启动
- 环境变量:统一设置JAVA_HOME、HADOOP_HOME、HADOOP_CONF_DIR等,建议使用**/etc/profile.d/hadoop.sh**集中管理,便于一致生效与维护。
- 核心配置示例:
- core-site.xml:设置fs.defaultFS=hdfs://namenode:9000;
- hdfs-site.xml:设置dfs.replication(通常不超过DataNode数量)、dfs.namenode.name.dir、dfs.datanode.data.dir等目录参数;
- 其他:可按需配置YARN相关参数(如mapreduce.framework.name=yarn)。
- 目录与权限:为Hadoop创建专用系统用户(如hadoop),并按用户与目录层级设置所有权与权限,避免使用root直接运行。
- 初始化与启动:首次部署执行hdfs namenode -format;随后通过start-dfs.sh启动,使用jps检查NameNode/DataNode进程是否就绪;访问http://namenode:50070确认Web UI状态。
高可用与安全加固
- 高可用(HA):部署ZooKeeper与JournalNode,核对NameNode ID一致性,确保ZK与集群时间同步;常见异常包括JournalNode异常与HA元数据不一致,需按官方步骤逐项排查。
- 安全机制:根据业务需求启用Kerberos认证、权限校验与加密传输,避免因安全配置不当导致的数据泄露或未授权访问。
- 升级与回滚:跨小版本或跨大版本升级前做好全量备份与回滚计划,按滚动升级策略逐节点升级,升级后执行兼容性验证与监控告警检查。