《从零开始:Hadoop 3.3.0 全分布式环境搭建与运行详解(含自动化配置)》

Hadoop 3.3.0 全分布并环境搭建与运行部署详解

一、准备工作

1.1 环境要求

  • 三台 Linux 主机,如 node1、node2、node3

  • 配置推荐: 内存大于4GB,CPU大于2核,磁盘空间大于40GB

1.2 软件列表

  • JDK 1.8(!!需要提前上传到software目录下,解压到server目录下

  • Hadoop 3.3.0

1.3 目录规划(注意在根目录下创建export)

/export/server       # 安装目录
/export/data         # 数据目录
/export/software     # 存放安装包

《从零开始:Hadoop 3.3.0 全分布式环境搭建与运行详解(含自动化配置)》_第1张图片

1.4 静态 IP 配置

vi /etc/sysconfig/network-scripts/ifcfg-ens33

《从零开始:Hadoop 3.3.0 全分布式环境搭建与运行详解(含自动化配置)》_第2张图片《从零开始:Hadoop 3.3.0 全分布式环境搭建与运行详解(含自动化配置)》_第3张图片

注意修改选框处,红色的IP出处,因为这里使用虚拟机故在虚拟机网络编辑中查询

如果你使用的是 eth0、ens160 或其他名称,请将文件名改为相应的 ifcfg-XXX

!!!这里完成后需要重启网关服务   sudo service network restart  重启后 ip addr 检查是否设置成功

1.5 配置本地yum源

配置本地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

更新

《从零开始:Hadoop 3.3.0 全分布式环境搭建与运行详解(含自动化配置)》_第4张图片


二、系统设置 & SSH 免密

2.1 /etc/hosts 配置(想使用脚本可直接看2.3)

192.168.8.100 node1
192.168.8.101 node2
192.168.8.102 node3

2.2 配置 SSH 免密登录(想使用脚本可直接看2.3)

ssh-keygen -t rsa
ssh-copy-id root@node2
ssh-copy-id root@node3

 2.3 脚本配置主机实现并SSH免密登录(最好每个节点都跑一遍脚本)

在/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 (脚本名称)后运行!!!


三、Hadoop 安装与分发(上传到software目录)

3.1 解压(进入到包所在的目录)

tar -zxvf hadoop-3.3.0.tar.gz -C /export/server/

3.2 分发至其他节点(完成四的核心配置后再分发

scp -r /export/server/hadoop-3.3.0 root@node2:/export/server/
scp -r /export/server/hadoop-3.3.0 root@node3:/export/server/

3.3 环境变量(注意实际存放路径)

位置: /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/

4.1 core-site.xml

 
  
      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
  

4.2 hdfs-site.xml

 
  
      dfs.namenode.secondary.http-address
      node2:9868
  

4.3 mapred-site.xml

 
  
    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}
  

4.4 yarn-site.xml

 
  
    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}
  

4.5 workers

node1
node2
node3

五、 Hadoop集群启动(只在第一台虚拟机上执行)

5.1 (==首次启动==)格式化namenode

hdfs namenode -format

5.2 启动 HDFS/YARN

start-dfs.sh
start-yarn.sh
5.2.1 Hadoop重启脚本
#!/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 "=== 启动完成 ==="

5.3 查看 UI

  • http://node1:9870 (主节点)

  • http://node1:8088 (资源管理)


六、HDFS 基础命令

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

七、MapReduce 示例

7.1 WordCount Java(了解即可,文件在网盘)

  • WordMapper.java

  • WordReducer.java

  • WordCountDriver.java

7.2 编译和打包

javac -classpath $(hadoop classpath) *.java
jar cf wc.jar *.class

7.3 执行

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

你可能感兴趣的:(学习经验,分布式,hadoop,自动化,大数据,linux)