Ubuntu与Hadoop集成的详细步骤
Hadoop是基于Java开发的,需先安装Java运行环境(推荐OpenJDK 8或11)。在Ubuntu终端执行以下命令:
sudo apt update
sudo apt install openjdk-8-jdk # 或openjdk-11-jdk
验证安装是否成功:
java -version
输出应显示Java版本信息(如openjdk version "1.8.0_392")。
Hadoop集群中的节点(如NameNode与DataNode)需要通过SSH无密码登录实现安全通信。
ssh-keygen -t rsa
按回车键接受默认路径(~/.ssh/id_rsa),无需设置密码。cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys # 设置文件权限为仅用户可读写
ssh localhost
若无需输入密码即可登录,则配置成功。从Apache Hadoop官网下载稳定版本(如3.3.6),解压至/usr/local目录(系统级安装路径):
wget https://downloads.apache.org/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz
sudo tar -xzf hadoop-3.3.6.tar.gz -C /usr/local/
sudo chown -R $USER:$USER /usr/local/hadoop-3.3.6 # 修改目录所有者为当前用户
为方便使用,可重命名解压后的目录:
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
编辑用户级环境变量文件(~/.bashrc或~/.profile),添加Hadoop相关路径:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source ~/.bashrc
验证环境变量是否配置成功:
echo $HADOOP_HOME # 应输出/usr/local/hadoop
hadoop version # 应显示Hadoop版本信息
Hadoop的主要配置文件位于$HADOOP_HOME/etc/hadoop目录下,需修改以下文件:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value> <!-- 单机模式下指向本地NameNode -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 单机模式下副本数为1,集群模式需调整为≥3 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
若文件不存在,需复制模板生成:
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
编辑内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value> <!-- 使用YARN作为资源管理框架 -->
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> <!-- 启用MapReduce Shuffle服务 -->
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value> <!-- 单机模式下ResourceManager运行在本地 -->
</property>
</configuration>
HDFS的NameNode需要格式化以初始化元数据(此操作会清除已有数据,仅首次启动时执行):
hdfs namenode -format
格式化完成后,会生成data/namenode和data/datanode目录。
通过以下命令启动HDFS和YARN服务:
start-dfs.sh # 启动HDFS(NameNode、DataNode)
start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
验证服务是否启动成功:
jps # 应显示NameNode、DataNode、ResourceManager、NodeManager等进程
http://localhost:9870(Hadoop 3.x版本端口)http://localhost:8088hadoop fs -mkdir -p /user/$USER/input # 创建输入目录
hadoop fs -put $HADOOP_HOME/etc/hadoop/*.xml /user/$USER/input # 上传配置文件作为测试数据
hadoop fs -ls /user/$USER/input # 查看上传的文件
若需停止服务,执行以下命令:
stop-yarn.sh # 停止YARN
stop-dfs.sh # 停止HDFS
data/namenode、data/datanode)的所有者为当前用户,避免使用root用户操作。core-site.xml中的fs.defaultFS端口或关闭占用进程。hadoop-env.sh中的JAVA_HOME是否指向正确的Java路径,各配置文件中的路径是否一致。