Hadoop在Ubuntu上的最佳实践分享
系统更新与依赖安装
安装前确保Ubuntu系统为最新版本,避免兼容性问题:
sudo apt update && sudo apt upgrade -y
安装Java(Hadoop依赖Java环境,推荐OpenJDK 8/11)和SSH(集群节点间通信):
sudo apt install -y openjdk-11-jdk openssh-server
验证Java安装:java -version;启动SSH并设置开机自启:sudo systemctl enable --now ssh。
Hadoop下载与解压
从Apache官网下载稳定版本(如3.3.6),解压至/usr/local(系统级目录,便于管理):
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop # 重命名便于操作
修改Hadoop目录权限,避免权限问题:sudo chown -R $USER:$USER /usr/local/hadoop。
Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop($HADOOP_HOME为Hadoop安装路径),需重点调整以下文件:
环境变量配置
编辑~/.bashrc(用户级)或/etc/profile(系统级),添加Hadoop和Java环境变量:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际Java路径调整
使配置生效:source ~/.bashrc。
HDFS配置(core-site.xml、hdfs-site.xml)
core-site.xml:设置HDFS默认文件系统(本地模式为file:///,伪分布式/集群模式为hdfs://主机名:9000)和临时目录:<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> # 临时目录,需提前创建
</property>
hdfs-site.xml:设置NameNode和DataNode目录、副本数(伪分布式模式设为1,集群模式根据节点数调整):<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/tmp/dfs/data</value>
</property>
YARN配置(mapred-site.xml、yarn-site.xml)
mapred-site.xml(需先创建,原模板为mapred-site.xml.template):设置MapReduce框架为YARN:<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml:配置YARN资源管理器和Shuffle服务:<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
格式化NameNode
首次启动HDFS前,需格式化NameNode(删除原有元数据,仅第一次需要):
hdfs namenode -format
注意:格式化会清除HDFS中的所有数据,请谨慎操作。
启动Hadoop服务
启动HDFS和YARN服务:
start-dfs.sh # 启动HDFS(NameNode、DataNode)
start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
查看进程是否运行:jps(应显示NameNode、DataNode、ResourceManager、NodeManager等进程)。
验证Web界面
打开浏览器访问以下地址,检查集群状态:
http://localhost:9870(Hadoop 3.x版本)http://localhost:8088。硬件优化
yarn.nodemanager.resource.memory-mb)。dfs.datanode.data.dir指向SSD目录)。yarn.nodemanager.resource.cpu-vcores)。Hadoop配置优化
dfs.blocksize)。mapreduce.job.maps、mapreduce.job.reduces),充分利用CPU资源。mapreduce.map.output.compress=true)和最终输出压缩(mapreduce.output.fileoutputformat.compress=true),减少磁盘I/O和网络传输。资源管理与调度
yarn.scheduler.minimum-allocation-mb、yarn.scheduler.maximum-allocation-mb)。mapreduce.job.locality.wait),减少网络传输。SSH免密登录失败
检查SSH密钥生成与复制:ssh-keygen -t rsa(生成密钥)、ssh-copy-id localhost(复制到本地),确保~/.ssh/authorized_keys权限为600。
HDFS权限问题
检查HDFS目录权限:hadoop fs -ls /,若权限不足,可使用hadoop fs -chmod -R 755 /调整。
Java版本冲突
确保JAVA_HOME指向正确版本(如OpenJDK 8/11),避免Hadoop找不到Java路径(检查$HADOOP_HOME/etc/hadoop/hadoop-env.sh中的JAVA_HOME设置)。
通过以上步骤,可在Ubuntu上搭建稳定、高效的Hadoop环境,并通过优化提升集群性能。需根据实际集群规模(伪分布式/完全分布式)和业务需求调整配置参数。