如何在Ubuntu上升级Hadoop
升级Hadoop是维护大数据集群的重要操作,需遵循严谨的流程以确保数据安全和功能正常。以下是基于Ubuntu系统的详细升级步骤及注意事项:
升级前必须备份HDFS中的所有业务数据(可通过hadoop fs -copyToLocal / /backup/hdfs_data
命令复制到本地)以及配置文件(core-site.xml
、hdfs-site.xml
、yarn-site.xml
、mapred-site.xml
等,建议备份至/backup/hadoop_conf
目录)。这是应对升级失败或数据损坏的核心保障。
确认新版本Hadoop与现有生态组件(如Zookeeper、HBase、Hive、Spark)的兼容性。例如:
在所有节点(NameNode、DataNode、ResourceManager、NodeManager等)上执行停止命令,确保服务完全停止:
cd /path/to/hadoop/sbin
./stop-all.sh
通过jps
命令检查所有Hadoop进程是否已终止(如无NameNode
、DataNode
等进程)。
访问Apache Hadoop官方网站(https://hadoop.apache.org/releases.html),选择目标版本(如3.3.6)的稳定发行包(.tar.gz
格式),使用wget
下载:
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
将下载的安装包解压至/usr/local/
(或其他合适目录),并重命名以简化后续操作:
sudo tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
编辑/etc/profile
文件,添加或修改以下变量(根据实际路径调整):
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存后使配置生效:
source /etc/profile
验证HADOOP_HOME
是否设置正确:
echo $HADOOP_HOME # 应输出/usr/local/hadoop
将旧版本/path/to/old/hadoop/conf/
目录下的core-site.xml
、hdfs-site.xml
、yarn-site.xml
、mapred-site.xml
等配置文件复制到新版本的/usr/local/hadoop/etc/hadoop/
目录下,根据新版本要求修改配置(如Hadoop 3.x需调整yarn.nodemanager.aux-services
为mapreduce_shuffle
,或新增dfs.namenode.fs-limits.max-inodes
等参数)。
若从Hadoop 2.x升级至3.x,需使用滚动升级命令逐步替换NameNode和DataNode,避免集群停机:
hdfs dfsadmin -rollingUpgrade prepare
hdfs dfsadmin -rollingUpgrade query
hdfs dfsadmin -rollingUpgrade start
hdfs dfsadmin -shutdownDatanode <datanode_host>:9000 upgrade
hdfs --daemon start datanode
重复此步骤,直至所有DataNode均升级完成。升级完成后,启动所有Hadoop服务:
cd /usr/local/hadoop/sbin
./start-dfs.sh # 启动HDFS
./start-yarn.sh # 启动YARN
通过jps
命令检查进程是否正常运行(应包含NameNode
、DataNode
、ResourceManager
、NodeManager
等)。
hdfs dfsadmin -report
确认所有DataNode均已连接,且版本显示为新版本(如“Version 3.3.6”)。yarn node -list
确认所有NodeManager均已注册,状态为“RUNNING”。提交一个简单的MapReduce作业(如wordcount
),验证集群功能是否正常:
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input/test.txt /output/result
检查输出目录/output/result
是否生成正确结果,且无报错信息。
若升级后出现数据损坏或服务异常,可执行回滚命令恢复至旧版本:
hdfs dfsadmin -rollingUpgrade rollback
然后重启集群,即可回到升级前的状态。
若启动服务时报错(如缺少guava
、protobuf
等库),需安装对应依赖:
sudo apt-get install libguava-java libprotobuf-java
或手动下载并放入$HADOOP_HOME/lib/
目录。
通过以上步骤,可在Ubuntu系统上安全完成Hadoop升级。需注意,升级前务必在测试环境验证流程,避免生产环境数据丢失。