Hadoop版本选择
生产环境下稳定版本建议
Hadoop 3.4.0
1.该版本是 Apache Hadoop 3.x 系列的稳定发行版,官方长期提供bug修复和兼容性支持,适配多数生产场景的核心需求。其在存储效率(如纠删码)、资源管理和YARN调度方面有显著优化,适合企业级生产环境。 2.生态组件兼容性推荐 Hadoop 3.4.0 需搭配以下稳定版本的生态组件,以确保整体兼容性:
Spark 3.4.3
**特性:**基于内存计算的通用计算引擎,性能远超MapReduce。提供Spark SQL(结构化数据处理)、Spark Streaming(流处理)、MLlib(机器学习)等库,形成一个统一的栈。
Hive 3.1.3
**特性:**将SQL查询转换为在Hadoop上运行的任务(默认引擎为MapReduce或Tez),降低了大数据查询的门槛。适用于离线数据仓库和批处理场景。
HBase 2.6.0
**特性:**构建在HDFS之上的分布式、可伸缩的NoSQL数据库,支持海量数据的随机、实时读写访问,弥补了HDFS在低延迟访问方面的不足。
ZooKeeper 3.8.5
**特性:**分布式协调服务,为Hadoop生态提供可靠的分布式锁、领导者选举和配置维护等基础能力,是HDFS高可用、HBase等组件稳定运行的基石。
Kafka 3.4.0
**特性:**高吞吐量的分布式消息系统,在生产者和消费者间实现解耦,常作为实时数据管道的中枢。
Flume 1.9.0
**特性:**分布式、高可用的日志采集、聚合和移动工具,能够将数据可靠地传输到HDFS或HBase中。
Mahout 14.1
**特性:**可扩展的机器学习算法库,其后期版本主要基于Spark等引擎实现分布式机器学习算法。
Ambari 2.7.0
**特性:**通过Web界面简化Hadoop集群的安装、部署、配置和监控,非常适合教学和运维管理。
JDK 8
官方推荐使用 JDK 8或** JDK 11**。生产环境建议优先选择已长期支持的 JDK 8(如 1.8.0_202 以上),若需新特性可选用 JDK 11,但需提前测试组件兼容性。
三节点模式要求
硬件配置
每个节点建议配置8核CPU、16GB及以上内存、1TB SATAⅢ硬盘(或更高规格),节点间通过千兆及以上以太网连接,确保数据传输效率。若数据量或计算压力大,可参考以下扩展建议:
- **主节点 (Master): **建议配置更高内存(如 32GB)以运行 NameNode 和 ResourceManager。
- 数据/计算节点 (Worker): 配置更多磁盘空间(如 8TB HDD)用于数据存储。
系统与依赖
操作系统需选用 CentOS 7.x/8.x 或 Ubuntu 18.04/20.04 LTS 版本。提前安装 JDK 8(推荐 1.8.0_202 及以上兼容版本),并完成以下基础配置:
- **时间同步: **安装 NTP 服务,保证集群节点时间一致。
- **网络配置: **设置静态 IP,修改各节点主机名(如 hadoop001, hadoop002, hadoop003),并在 /etc/hosts中配置 IP 与主机名映射。
- **SSH 免密登录: **在节点间配置 SSH 互信,确保主节点可无密码访问所有节点。
- **系统优化: **关闭防火墙与 SELinux(生产环境若需开启,则需为 Hadoop 相关端口设置例外),调整内核参数(如 vm.swappiness=10、net.core.somaxconn=65535)。
节点角色分配
经典的 3 节点集群角色分配如下表示例:
| 节点主机名 | 地址示例 | 主要服务角色 | 备注 |
|---|---|---|---|
| hadoop001 | 192.168.30.131 | NameNode,ResourceManager,SecondaryNameNode | 主节点(管理节点) |
| hadoop002 | 192.168.30.132 | DataNode,NodeManager | 从节点(数据/计算节点) |
| hadoop003 | 192.168.30.133 | DataNode, NodeManager | 从节点(数据/计算节点) |
此架构将管理服务(NameNode, ResourceManager)集中于一个节点,两个从节点承担实际的数据存储和计算任务。若需更高可用性,可考虑将 SecondaryNameNode 部署在另一节点,或未来扩展为 HDFS HA(需额外节点运行 Standby NameNode 和 JournalNode)。
集群部署与配置要点
关键配置文件调整
在 $HADOOP_HOME/etc/hadoop/目录下需重点配置以下文件:
- **JVM堆内存调整:**在hadoop-env.sh、yarn-site.xml等配置文件中,显著降低各守护进程的堆内存上限(例如,将默认的1GB或2GB设置为512MB甚至256MB),为应用任务留出空间。
- core-site.xml: 设置默认文件系统(如 fs.defaultFS为 hdfs://hadoop001:8020)和 Hadoop 临时目录(hadoop.tmp.dir)。
- **hdfs-site.xml:**在hdfs-site.xml中将副本数(dfs.replication)设置为1,因为伪分布式模式下只有一个DataNode,节省存储空间。
- **yarn-site.xml: **指定ResourceManager 的主机名(yarn.resourcemanager.hostname),并设置 - - NodeManager 的辅助服务(yarn.nodemanager.aux-services为mapreduce_shuffle),严格限制NodeManager可用的物理内存和CPU核数,防止单个任务耗尽所有资源。
- **workers文件: **在其中添加两个从节点的主机名(hadoop002 和 hadoop003)。
集群初始化与启动
- **格式化 HDFS: **仅在主节点执行一次 hdfs namenode -format。
- **启动集群: **在主节点运行 start-dfs.sh和 start-yarn.sh。
- 验证服务: 使用 jps命令检查各节点进程是否正常,并通过 Web UI(如 NameNode:9870, ResourceManager:8088)查看集群状态。
生产环境注意事项
- **数据均衡: **初始部署或大量数据写入后,运行 hdfs balancer均衡数据分布。
- **日志与监控: **配置集中日志收集(如 ELK),并集成 Prometheus 和 Grafana 监控集群关键指标(CPU、内存、HDFS 使用率等)。
- **定期维护: **制定滚动重启策略,并关注官方漏洞公告及时更新补丁。
版本选择总结
对于追求稳定性的生产环境,Hadoop 3.4.0 + JDK 8 + 兼容的生态组件版本(如 Hive 3.1.3、Spark 3.4.3)是经过验证的可靠组合。三节点集群是学习和中小规模生产的常见起点,遵循上述硬件、系统配置和角色分配原则,可以构建一个稳定高效的 Hadoop 运行环境。
Big Data Deployment
Related articles
部分信息可能已经过时