安装和配置Hadoop的完全分布式模式涉及到多台机器之间的协调和通信。这比单机模式复杂得多,但能更好地模拟生产环境中的实际应用。下面是配置Hadoop完全分布式模式的详细步骤,假设你有三台机器(master、slave1、slave2),每台机器都已安装好Java环境。
1. 准备工作
- 确保所有节点之间无密码SSH登录:在所有节点上生成SSH密钥对,并将公钥复制到所有节点。
- 同步时间:确保所有节点的时间同步,可以使用NTP服务。
- 关闭防火墙(如果在测试环境中):为了简化网络配置,可以暂时关闭防火墙。生产环境中则需要正确配置防火墙规则。
2. 安装Hadoop
在所有节点上执行相同的步骤,下载并解压Hadoop:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
tar -zxvf hadoop-3.3.1.tar.gz -C /usr/local/
cd /usr/local/
ln -s hadoop-3.3.1 hadoop
3. 配置环境变量
在所有节点上编辑 ~/.bashrc
文件,添加以下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置生效:
source ~/.bashrc
4. 编辑Hadoop配置文件
Hadoop的主要配置文件位于 $HADOOP_HOME/etc/hadoop/
目录下。你需要编辑以下几个文件:
core-site.xml
在 master
节点上编辑 core-site.xml
,设置HDFS的基本属性:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
在 master
节点上编辑 hdfs-site.xml
,设置HDFS的数据块大小、副本数等:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9868</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/app/hadoop/data</value>
</property>
</configuration>
yarn-site.xml
在 master
节点上编辑 yarn-site.xml
,配置YARN相关参数:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
</configuration>
mapred-site.xml
在 master
节点上编辑 mapred-site.xml
,配置MapReduce框架:
首先复制模板文件:
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>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
workers
在 master
节点上编辑 workers
文件,列出所有DataNode节点:
slave1
slave2
5. 分发配置文件
将 master
节点上的Hadoop配置文件分发到所有DataNode节点:
scp -r $HADOOP_HOME/etc/hadoop slave1:$HADOOP_HOME/etc/
scp -r $HADOOP_HOME/etc/hadoop slave2:$HADOOP_HOME/etc/
6. 格式化HDFS
在 master
节点上格式化HDFS文件系统:
hdfs namenode -format
7. 启动Hadoop
- 启动HDFS:
在master
节点上执行:
start-dfs.sh
- 启动YARN:
在master
节点上执行:
start-yarn.sh
- 启动JobHistory Server(可选):
在master
节点上执行:
mr-jobhistory-daemon.sh start historyserver
8. 检查服务状态
- 检查HDFS状态:通过浏览器访问
http://master:9870
来查看NameNode的状态。 - 检查YARN状态:通过浏览器访问
http://master:8088
来检查YARN ResourceManager的状态。 - 检查JobHistory Server状态:通过浏览器访问
http://master:19888
来检查JobHistory Server的状态。
9. 验证集群
在 master
节点上运行一个简单的MapReduce作业来验证集群是否正常工作:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi 10 100
10. 配置其他组件
一旦Hadoop成功安装并运行,接下来可以根据各自的文档来配置Spark、Scala、Kafka、Hive、Hudi、HBase、Flume、Flink、ZooKeeper以及ClickHouse等组件。确保这些组件能够与Hadoop的HDFS和YARN集成。
希望这些步骤对你有所帮助!如果有任何问题,请随时提问。