Hadoop基于Java开发,需先安装JDK并配置环境变量:
sudo apt update
sudo apt install openjdk-11-jdk -y
java -version
输出应包含Java版本信息(如openjdk version "11.0.xx"
)。Hadoop通过SSH进行节点间通信,需配置本地免密登录:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys # 设置文件权限
ssh localhost
若无需输入密码即可登录,则配置成功。wget https://downloads.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz
/usr/local
):sudo tar -zxvf hadoop-3.3.5.tar.gz -C /usr/local
sudo mv /usr/local/hadoop-3.3.5 /usr/local/hadoop # 重命名便于管理
sudo chown -R $USER:$USER /usr/local/hadoop
编辑~/.bashrc
文件,添加Hadoop相关环境变量:
nano ~/.bashrc
在文件末尾添加以下内容(根据实际路径调整):
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native
使配置生效:
source ~/.bashrc
hadoop version
输出应显示Hadoop版本及编译信息。Hadoop的配置文件位于$HADOOP_HOME/etc/hadoop
目录下,需修改以下核心文件:
设置Java路径(若JAVA_HOME
已在环境变量中定义,可跳过):
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
找到# export JAVA_HOME=
行,取消注释并修改为:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际Java路径调整
配置HDFS的默认文件系统URI(指向NameNode):
nano $HADOOP_HOME/etc/hadoop/core-site.xml
替换为以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
配置HDFS数据存储路径及副本数(单机模式副本数为1):
nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
替换为以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 单机模式设为1 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/tmp/dfs/name</value> <!-- NameNode数据目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/tmp/dfs/data</value> <!-- DataNode数据目录 -->
</property>
</configuration>
配置MapReduce框架为YARN(需先创建该文件,若不存在则复制模板):
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
替换为以下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置YARN资源管理器:
nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
替换为以下内容:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
首次启动HDFS前,需格式化NameNode(会清除原有数据,仅第一次需要):
hdfs namenode -format
start-dfs.sh
start-yarn.sh
jps
正常输出应包含以下进程:
NameNode
(HDFS主节点)DataNode
(HDFS数据节点)ResourceManager
(YARN资源管理器)NodeManager
(YARN节点管理器)hdfs dfs -ls /
localfile.txt
):hdfs dfs -put localfile.txt /user/$USER/
hdfs dfs -get /user/$USER/localfile.txt .
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /user/$USER/input /user/$USER/output
若系统启用了防火墙,需允许Hadoop相关端口通信:
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp # HDFS NameNode
sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp # HDFS Web UI
sudo firewall-cmd --permanent --zone=public --add-port=8088/tcp # YARN Web UI
sudo firewall-cmd --reload
通过以上步骤,即可在Linux系统上完成Hadoop的单机部署。如需扩展为集群,需在多台机器上重复上述步骤,并配置slaves
文件(指定DataNode节点)及集群间的SSH免密登录。