三台 Linux 主机,如 node1、node2、node3
配置推荐: 内存大于4GB,CPU大于2核,磁盘空间大于40GB
JDK 1.8(!!需要提前上传到software目录下,解压到server目录下)
Hadoop 3.3.0
/export/server # 安装目录
/export/data # 数据目录
/export/software # 存放安装包
vi /etc/sysconfig/network-scripts/ifcfg-ens33
注意修改选框处,红色的IP出处,因为这里使用虚拟机故在虚拟机网络编辑中查询
如果你使用的是 eth0、ens160 或其他名称,请将文件名改为相应的 ifcfg-XXX
!!!这里完成后需要重启网关服务 sudo service network restart 重启后 ip addr 检查是否设置成功
配置本地yum源
mkdir /mnt/cdrom #创建用于挂载光盘的目录
mkdir -p /yum/yumcdrom #创建光盘文件存储的目录
mount /dev/cdrom /mnt/cdrom #挂载 注意需要光盘在操作系统上已连接
cp -avf /mnt/cdrom/ /yum/yumcdrom/ #若不想每次都放光盘,可复制光盘文件到本地硬盘yumcdrom目录下
cd /etc/yum.repos.d/ #进入yum配置文件的目录
备份原来的配置文件
mkdir bak
mv CentOS-* bak/
touch CentOS-dvd.repo #创建一个空文件
vi CentOS-dvd.repo
CentOS-dvd.repo 文件插入
[Local]
name=LocalYum
baseurl=file:///yum/yumcdrom/cdrom/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
更新
192.168.8.100 node1
192.168.8.101 node2
192.168.8.102 node3
ssh-keygen -t rsa
ssh-copy-id root@node2
ssh-copy-id root@node3
在/root目录下新建文件夹存放脚本
1、先编辑hosts.txt文件
192.168.8.100 node1
192.168.8.101 node2
192.168.8.102 node3
2、上传脚本 set_hostname.sh 并运行
#!/bin/bash
if [ $# -ne 1 ]; then
echo "用法: $0 <主机名>"
exit 1
fi
HOSTNAME=$1
hostnamectl set-hostname "$HOSTNAME"
cat > /etc/hosts <
3、上传脚本ssh_trust_setup.sh 并运行
#!/bin/bash
# 目标机器列表(IP 或主机名)
HOSTS=("node1" "node2" "node3")
# 远程用户名
USER="root"
# 生成 SSH 密钥(如果已存在就跳过)
if [ ! -f ~/.ssh/id_rsa ]; then
echo "生成 SSH 密钥..."
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
else
echo "SSH 密钥已存在,跳过生成。"
fi
# 将公钥复制到目标主机
for HOST in "${HOSTS[@]}"; do
echo "复制公钥到 $USER@$HOST ..."
ssh-copy-id -o StrictHostKeyChecking=no $USER@$HOST
if [ $? -eq 0 ]; then
echo "公钥成功复制到 $HOST"
else
echo "公钥复制到 $HOST 失败,请检查连接和密码。"
fi
done
echo "免密配置完成。"
4、注意!!!!所有的地址改成你自己的!!或者在虚拟机中的网络编辑中修改网段和网关
!!!还有脚本上传或新建后 要付权限 chmod +x (脚本名称)后运行!!!
tar -zxvf hadoop-3.3.0.tar.gz -C /export/server/
scp -r /export/server/hadoop-3.3.0 root@node2:/export/server/
scp -r /export/server/hadoop-3.3.0 root@node3:/export/server/
位置: /etc/profile
export JAVA_HOME=/export/server/jdk1.8.0_241
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
将hadoop添加到环境变量(3台机器都需要)
重新加载环境变量文件,使修改的配置生效
source /etc/profile
位置: /export/server/hadoop-3.3.0/etc/hadoop/
fs.defaultFS
hdfs://node1:8020
hadoop.tmp.dir
/export/data/hadoop-3.3.0
hadoop.http.staticuser.user
root
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*
fs.trash.interval
1440
dfs.namenode.secondary.http-address
node2:9868
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
node1:10020
mapreduce.jobhistory.webapp.address
node1:19888
yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.map.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.reduce.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
node1:10020
mapreduce.jobhistory.webapp.address
node1:19888
yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.map.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.reduce.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
node1
node2
node3
hdfs namenode -format
start-dfs.sh
start-yarn.sh
#!/bin/bash
# 设置 Hadoop 的安装路径(根据你的安装位置调整)
HADOOP_HOME=/export/server/hadoop-3.3.0
# 启动 HDFS
echo "=== 启动 HDFS ==="
$HADOOP_HOME/sbin/start-dfs.sh
# 启动 YARN
echo "=== 启动 YARN ==="
$HADOOP_HOME/sbin/start-yarn.sh
# 启动 MapReduce JobHistory 服务(可选)
echo "=== 启动 JobHistoryServer(MapReduce)==="
$HADOOP_HOME/bin/mapred --daemon start historyserver
echo "=== 启动完成 ==="
http://node1:9870 (主节点)
http://node1:8088 (资源管理)
hdfs dfs -mkdir /input
hdfs dfs -mkdir /output
hdfs dfs -put local.txt /input
hdfs dfs -cat /output/part-r-00000
hdfs dfs -rm -r /output
WordMapper.java
WordReducer.java
WordCountDriver.java
javac -classpath $(hadoop classpath) *.java
jar cf wc.jar *.class
hadoop jar wc.jar WordCount /input /output
Ambari/CDH 集群化管理推荐
Hive/HBase/Spark 与 Hadoop 联动
Zookeeper HA 采集 + NameNode HA
文中提及以及需要的文件都在这http://通过网盘分享的文件:《从零开始:Hadoop 3.3.0 全分布式环境搭建与运行详解(含自动化配置)》 链接: https://pan.baidu.com/s/1WoPvw5yGIig2a6TmRkaDJQ?pwd=haha 提取码: haha