简介:本文详细介绍了Hadoop单机环境的搭建步骤,包括环境准备、安装配置及验证测试,适合开发者和企业用户快速上手。
Hadoop作为分布式计算的标杆框架,其核心功能在于通过集群化部署实现海量数据的存储与处理。但对于开发测试、教学演示或轻量级数据分析场景,单机环境部署成为更高效的选择。本文将系统阐述Hadoop单机环境的搭建流程,涵盖环境准备、安装配置、验证测试等关键环节,帮助开发者快速构建可用的开发环境。
Hadoop 3.x版本对操作系统有明确要求:Linux(推荐CentOS/Ubuntu)、macOS或Windows(需WSL2支持)。本文以Ubuntu 22.04 LTS为例,其优势在于长期支持(LTS)版本和完善的软件包管理。
单机环境建议配置:
# 更新系统并安装必要工具sudo apt update && sudo apt upgrade -ysudo apt install -y openjdk-11-jdk ssh pdsh# 验证Java环境java -version # 应输出OpenJDK 11版本信息
关键点:Hadoop依赖Java运行时,需确保JAV_HOME环境变量正确配置(后续配置步骤会涉及)。
从Apache官网下载稳定版(如hadoop-3.3.6.tar.gz),避免使用测试版。下载后解压至指定目录:
tar -xzvf hadoop-3.3.6.tar.gz -C /opt/sudo ln -s /opt/hadoop-3.3.6 /opt/hadoop # 创建软链接便于管理
编辑~/.bashrc文件,添加以下内容:
export HADOOP_HOME=/opt/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
执行source ~/.bashrc使配置生效,通过hadoop version验证安装。
修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh,设置Java路径:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
配置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>
设置副本数为1(单机环境无需冗余):
<configuration><property><name>dfs.replication</name><value>1</value></property></configuration>
创建并配置MapReduce运行框架:
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
配置YARN资源管理:
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCLASSPATH,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property></configuration>
Hadoop需要SSH访问本地节点,生成密钥并添加到授权列表:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keysssh localhost # 首次连接需确认,后续应无密码提示
首次启动前需格式化命名空间:
hdfs namenode -format
注意:此操作会清空HDFS数据目录,生产环境需谨慎。
按顺序启动以下服务:
# 启动HDFSstart-dfs.sh# 启动YARNstart-yarn.sh# 验证服务状态jps # 应看到NameNode、DataNode、ResourceManager、NodeManager进程
# 创建目录hdfs dfs -mkdir /test# 上传文件echo "Hello Hadoop" > test.txthdfs dfs -put test.txt /test/# 查看文件hdfs dfs -cat /test/test.txt
执行官方提供的词频统计示例:
# 下载示例数据wget https://raw.githubusercontent.com/apache/hadoop/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/resources/input/file1.txt -O /tmp/file1.txtwget https://raw.githubusercontent.com/apache/hadoop/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/resources/input/file2.txt -O /tmp/file2.txt# 上传数据并运行示例hdfs dfs -mkdir /inputhdfs dfs -put /tmp/file*.txt /input/hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output# 查看结果hdfs dfs -cat /output/part-r-00000
现象:启动时提示Cannot allocate memory。
解决:修改mapred-site.xml,限制MapReduce内存:
<property><name>mapreduce.map.memory.mb</name><value>512</value></property><property><name>mapreduce.reduce.memory.mb</name><value>1024</value></property>
现象:启动失败,提示Address already in use。
解决:检查9000(HDFS)、8088(YARN)等端口占用情况,终止冲突进程或修改配置文件中的端口号。
现象:操作HDFS时提示Permission denied。
解决:以hdfs用户操作或修改hdfs-site.xml:
<property><name>dfs.permissions</name><value>false</value></property>
log4j.properties,将日志输出至指定文件。/tmp/hadoop目录,防止意外丢失。Hadoop单机环境搭建是掌握分布式计算原理的重要起点。通过本文的详细步骤,开发者可在20分钟内完成从环境准备到功能验证的全流程。实际开发中,建议结合IDE(如IntelliJ IDEA)进行代码调试,并逐步过渡到伪分布式或完全分布式环境,以深入理解Hadoop的集群管理机制。