一、环境准备
1. 集群规划
首先,需要为集群中的每台机器设置角色和网络配置。在此示例中,我们使用三台机器:
角色 | 主机名 | IP地址 |
---|---|---|
NameNode | master | 192.168.1.101 |
DataNode1 | slave1 | 192.168.1.102 |
DataNode2 | slave2 | 192.168.1.103 |
2. 软件要求
- 操作系统:CentOS 7或Ubuntu 20.04
- Java JDK:Hadoop需要JDK 8或更高版本
安装Java JDK
在所有节点上安装Java:
sudo apt-get update # Ubuntu
sudo apt-get install openjdk-8-jdk -y
# 或者在CentOS上
sudo yum install java-1.8.0-openjdk-devel -y
验证Java安装:
java -version
3. 配置SSH免密登录
为了让Hadoop可以在各节点之间无缝通信,需要在master节点上配置SSH免密登录。
在master节点上生成SSH密钥对:
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
将公钥复制到所有节点:
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
测试免密登录是否成功:
ssh slave1
ssh slave2
二、下载并安装Hadoop
1. 下载Hadoop
在所有节点上下载Hadoop安装包:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzvf hadoop-3.3.6.tar.gz --no-check-certificate
sudo mv hadoop-3.3.6 /usr/local/hadoop
2. 配置环境变量
在每个节点的~/.bashrc
文件中添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 根据实际路径调整
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
执行以下命令使配置生效:
source ~/.bashrc
四、修改Hadoop配置文件
在master节点上修改配置文件,然后将修改后的配置文件分发(文末有分发脚本)到所有节点。
1. 配置core-site.xml
编辑$HADOOP_HOME/etc/hadoop/core-site.xml
:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
</configuration>
2. 配置hdfs-site.xml
编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml
:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop/hadoop_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop/hadoop_data/hdfs/datanode</value>
</property>
</configuration>
3. 配置yarn-site.xml
编辑$HADOOP_HOME/etc/hadoop/yarn-site.xml
:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4. 配置mapred-site.xml
复制默认模板并进行修改:
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
编辑mapred-site.xml
:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5. 配置slaves
文件
编辑$HADOOP_HOME/etc/hadoop/slaves
文件,列出所有DataNode节点:
slave1
slave2
6. 分发配置文件到所有节点
将配置好的Hadoop文件夹分发到所有节点:
scp -r /usr/local/hadoop slave1:/usr/local/
scp -r /usr/local/hadoop slave2:/usr/local/
五、启动Hadoop集群
1. 格式化HDFS
在master节点上运行以下命令来格式化HDFS:
hdfs namenode -format
2. 启动HDFS和YARN
依次启动HDFS和YARN服务:
start-dfs.sh
start-yarn.sh
3. 验证集群状态
启动Hadoop之后,可以通过Web界面查看集群状态:
- NameNode UI:
http://master:9870
- ResourceManager UI:
http://master:8088
4. 验证节点连通性
在master节点上,执行以下命令以检查节点状态:
hdfs dfsadmin -report
yarn node -list
六、测试集群
运行Hadoop提供的示例程序,验证集群是否正常工作:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output
验证输出结果
查看生成的结果文件:
hdfs dfs -cat /output/part-r-00000
七、总结
本文涵盖了从设置主机名、配置SSH免密登录、安装Java环境到Hadoop配置与启动的详细步骤。通过这些步骤,你可以成功搭建一个Hadoop集群,为大数据学习和实际应用打下坚实的基础。下一步,你可以尝试
配置高可用性或对集群进行性能优化。
八、附录
分发脚本
#!/bin/bash
if [ $# -lt 1 ]
then
echo Not Enough Arguemnet!
exit;
fi
for host in 10.0.13.239 10.0.13.253 10.0.13.196
do
echo =============== $host =================
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
fname=$(basename $file)
ssh -p 36000 $host "mkdir -p $pdir"
rsync -e 'ssh -p 36000' -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done