Hadoop Linux 单机部署全攻略:从环境准备到验证测试
一、为何选择Linux单机部署Hadoop?
Hadoop作为分布式计算的标杆框架,其核心设计目标是通过多节点协同处理海量数据。但在开发初期,直接搭建多节点集群可能面临硬件成本高、配置复杂度高、调试困难等问题。Linux单机部署Hadoop通过伪分布式模式(Pseudo-Distributed Mode),将NameNode、DataNode、ResourceManager等核心组件运行在同一台机器的不同Java进程中,既能模拟分布式环境的核心行为,又显著降低了资源门槛。
对于开发者而言,单机部署的优势体现在三个方面:一是快速验证,可在几分钟内完成环境搭建,快速测试MapReduce程序或HDFS操作;二是调试友好,所有日志集中在一台机器,便于定位问题;三是学习成本低,无需掌握复杂的集群管理工具(如Ambari、Cloudera Manager),适合初学者入门。
二、环境准备:硬件与软件要求
硬件配置建议
- 内存:至少8GB(推荐16GB),Hadoop的Java进程(如NameNode、DataNode)会占用较多内存,尤其是运行MapReduce任务时。
- 磁盘:至少50GB可用空间,HDFS默认存储目录需要足够空间,且建议使用SSD以提升I/O性能。
- CPU:双核及以上,MapReduce任务会并行执行多个Mapper/Reducer进程。
软件依赖清单
- 操作系统:推荐CentOS 7/8或Ubuntu 20.04 LTS,这些系统对Hadoop的兼容性较好,且社区支持丰富。
- Java环境:Hadoop 3.x需要Java 8或11(OpenJDK或Oracle JDK均可),可通过
java -version验证安装。 - SSH服务:Hadoop依赖SSH实现节点间通信,需确保
ssh localhost可无密码登录(通过ssh-keygen生成密钥对并添加到~/.ssh/authorized_keys)。 - 依赖库:部分Hadoop版本可能需要
libsnappy(用于压缩)和protobuf(协议缓冲),可通过包管理器安装(如yum install snappy-devel protobuf-compiler)。
三、安装与配置:分步骤详解
1. 下载并解压Hadoop
从Apache官网下载稳定版Hadoop(如3.3.6),选择二进制包(如hadoop-3.3.6.tar.gz),解压到指定目录:
tar -xzvf hadoop-3.3.6.tar.gz -C /opt/ln -s /opt/hadoop-3.3.6 /opt/hadoop # 创建软链接便于管理
2. 配置环境变量
编辑~/.bashrc或/etc/profile,添加以下内容:
export HADOOP_HOME=/opt/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
执行source ~/.bashrc使配置生效。
3. 修改核心配置文件
Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop,需重点修改以下文件:
hadoop-env.sh
设置Java路径(若未自动检测):
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际路径修改
core-site.xml
配置HDFS的默认名称空间和临时目录:
<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property><property><name>hadoop.tmp.dir</name><value>/tmp/hadoop</value></property></configuration>
hdfs-site.xml
设置副本数(单机模式设为1):
<configuration><property><name>dfs.replication</name><value>1</value></property></configuration>
mapred-site.xml
指定MapReduce运行框架为YARN:
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
yarn-site.xml
配置ResourceManager地址:
<configuration><property><name>yarn.resourcemanager.hostname</name><value>localhost</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>
4. 格式化HDFS并启动服务
执行以下命令初始化HDFS:
hdfs namenode -format
启动所有Hadoop服务(HDFS + YARN):
start-dfs.sh # 启动NameNode、DataNode、SecondaryNameNodestart-yarn.sh # 启动ResourceManager、NodeManager
通过jps命令验证进程是否运行:
12345 NameNode12346 DataNode12347 SecondaryNameNode12348 ResourceManager12349 NodeManager
四、验证与测试:确保环境可用
1. HDFS操作测试
创建目录并上传文件:
hdfs dfs -mkdir /testhdfs dfs -put /etc/hosts /test/hdfs dfs -ls /test
2. MapReduce示例运行
执行官方提供的WordCount示例:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /test/hosts /test/outputhdfs dfs -cat /test/output/part-r-00000
若输出单词统计结果,则说明环境正常。
五、常见问题与解决方案
1. SSH无密码登录失败
现象:执行start-dfs.sh时提示Permission denied (publickey,password)。
解决:
- 确保
~/.ssh/id_rsa.pub已追加到~/.ssh/authorized_keys。 - 检查
/etc/ssh/sshd_config中PasswordAuthentication是否为no,重启SSH服务(systemctl restart sshd)。
2. 端口冲突
现象:启动服务时提示Address already in use。
解决:
- 通过
netstat -tulnp | grep 9000检查端口占用。 - 修改
core-site.xml中的fs.defaultFS端口,或终止占用进程。
3. 内存不足
现象:NameNode启动后崩溃,日志显示OutOfMemoryError。
解决:
- 编辑
$HADOOP_HOME/etc/hadoop/hadoop-env.sh,增加JVM堆内存:export HADOOP_NAMENODE_OPTS="-Xmx2g"export HADOOP_DATANODE_OPTS="-Xmx1g"
六、进阶建议:从单机到集群
单机部署验证通过后,可逐步扩展:
- 多节点集群:在多台Linux机器上部署,修改
core-site.xml和slaves文件指定节点IP。 - 高可用配置:通过ZooKeeper实现NameNode和ResourceManager的故障转移。
- 监控集成:使用Ganglia或Prometheus监控集群性能。
总结
Hadoop Linux单机部署是开发者入门分布式计算的理想起点,通过伪分布式模式,可在低成本环境下熟悉HDFS、YARN和MapReduce的核心机制。本文从环境准备到验证测试提供了全流程指导,并针对常见问题给出了解决方案。掌握单机部署后,开发者可更自信地迈向多节点集群管理,为处理海量数据打下坚实基础。