首先,需要为集群中的每台机器设置角色和网络配置。在此示例中,我们使用三台机器:
角色 | 主机名 | IP地址 |
---|---|---|
NameNode | master | 192.168.1.101 |
DataNode1 | slave1 | 192.168.1.102 |
DataNode2 | slave2 | 192.168.1.103 |
在所有节点上安装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
为了让Hadoop可以在各节点之间无缝通信,需要在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安装包:
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
在每个节点的~/.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
在master节点上修改配置文件,然后将修改后的配置文件分发(文末有分发脚本)到所有节点。
core-site.xml
编辑$HADOOP_HOME/etc/hadoop/core-site.xml
:
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/usr/local/hadoop/tmp
A base for other temporary directories.
hdfs-site.xml
编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml
:
dfs.replication
2
dfs.namenode.name.dir
file:///usr/local/hadoop/hadoop_data/hdfs/namenode
dfs.datanode.data.dir
file:///usr/local/hadoop/hadoop_data/hdfs/datanode
yarn-site.xml
编辑$HADOOP_HOME/etc/hadoop/yarn-site.xml
:
yarn.resourcemanager.hostname
master
yarn.nodemanager.aux-services
mapreduce_shuffle
mapred-site.xml
复制默认模板并进行修改:
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
编辑mapred-site.xml
:
mapreduce.framework.name
yarn
slaves
文件编辑$HADOOP_HOME/etc/hadoop/slaves
文件,列出所有DataNode节点:
slave1
slave2
将配置好的Hadoop文件夹分发到所有节点:
scp -r /usr/local/hadoop slave1:/usr/local/
scp -r /usr/local/hadoop slave2:/usr/local/
在master节点上运行以下命令来格式化HDFS:
hdfs namenode -format
依次启动HDFS和YARN服务:
start-dfs.sh
start-yarn.sh
启动Hadoop之后,可以通过Web界面查看集群状态:
http://master:9870
http://master:8088
在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