手把手教你Hadoop2迁移Hadoop3 详细教程

摘要

本文详细介绍了在CentOS 7.9上配置Hadoop和Hive的源集群与目标集群的步骤,并描述了通过DistCp工具和导入/导出方式进行ORC表数据迁移的过程。本文主要包含三个部分:环境配置、Kerberos配置和数据迁移方案。


环境配置清单

  • 源集群

    • CentOS 7.9
    • Hadoop 2.10.1
    • Hive 2.3.9
  • 目标集群

    • CentOS 7.9

    • Hadoop 3.3.6

    • Hive 3.1.2


源集群配置步骤

1. CentOS 7.9 预安装配置
1.1 更新系统(每一节点都要操作)
sudo yum update -y
1.2 关闭防火墙(每一节点都要操作)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
1.3 关闭 SELinux(每一节点都要操作)

编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled

sudo vi /etc/selinux/config
# 修改以下内容:
SELINUX=disabled

然后重启系统:

sudo reboot

重启后验证 SELinux 状态:

sestatus
1.4 安装必要的软件包(每一节点都要操作)
sudo yum install -y epel-release
sudo yum install -y wget vim java-1.8.0-openjdk-devel ntp
1.5 配置 NTP 服务
sudo systemctl start ntpd
sudo systemctl enable ntpd
1.6 设置主机名

为每台服务器设置唯一的主机名:

# 在 node1 上
sudo hostnamectl set-hostname node1

# 在 node2 上
sudo hostnamectl set-hostname node2

# 在 node3 上
sudo hostnamectl set-hostname node3

然后编辑 /etc/hosts 文件,添加以下内容:

sudo vi /etc/hosts
# 添加以下内容:
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
2. 配置 SSH 互信
2.1 生成 SSH 密钥对(在 node1 上执行)
ssh-keygen -t rsa
# 按 Enter 键三次,使用默认设置生成密钥
2.2 复制 SSH 公钥到所有节点
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
2.3 验证 SSH 互信

确保可以从 node1 无密码地 SSH 到 node2 和 node3:

ssh node2
ssh node3
3. 安装和配置 Hadoop 2.10.1
3.1 下载 Hadoop 2

在所有节点上下载 Hadoop:

cd /opt
sudo wget https://archive.apache.org/dist/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz
sudo tar -xzvf hadoop-2.10.1.tar.gz
sudo mv hadoop-2.10.1 /usr/local/hadoop
3.2 配置 Hadoop 环境变量

在所有节点的 .bashrc 文件中添加以下内容:

sudo vi ~/.bashrc
# 添加以下内容:
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 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
3.3 配置 Hadoop

在 node1 上配置 Hadoop,并将配置文件分发到所有节点。

配置 core-site.xml

sudo vi $HADOOP_HOME/etc/hadoop/core-site.xml
# 添加以下内容:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>

配置 hdfs-site.xml

sudo vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
# 添加以下内容:
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>file:///usr/local/hadoop/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>file:///usr/local/hadoop/hdfs/datanode</value>
    </property>
</configuration>

配置 mapred-site.xml

sudo cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
sudo vi $HADOOP_HOME/etc/hadoop/mapred-site.xml
# 添加以下内容:
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

配置 yarn-site.xml

sudo vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
# 添加以下内容:
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

将配置文件分发到其他节点:

scp $HADOOP_HOME/etc/hadoop/core-site.xml node2:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/hdfs-site.xml node2:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/mapred-site.xml node2:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/yarn-site.xml node2:$HADOOP_HOME/etc/hadoop/

scp $HADOOP_HOME/etc/hadoop/core-site.xml node3:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/hdfs-site.xml node3:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/mapred-site.xml node3:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/yarn-site.xml node3:$HADOOP_HOME/etc/hadoop/
3.4 格式化 Namenode(仅在 node1 上执行)
hdfs namenode -format
3.5 启动 Hadoop 集群

创建 start-all.sh 脚本

sudo vi /usr/local/hadoop/start-all.sh
# 添加以下内容:
#!/bin/bash

# 启动 HDFS
start-dfs.sh

# 启动 YARN
start-yarn.sh

# 在所有节点启动 DataNode 和 NodeManager
for node in node1 node2 node3
do
    ssh $node "hadoop-daemon.sh start datanode"
    ssh $node "yarn-daemon.sh start nodemanager"
done

赋予执行权限

sudo chmod +x /usr/local/hadoop/start-all.sh

执行启动脚本(在 node1 上执行):

/usr/local/hadoop/start-all.sh
3.6 验证 Hadoop 集群

在浏览器中访问以下 URL 验证 Hadoop 集群的状态:

  • Namenode: http://node1:50070
  • ResourceManager: http://node1:8088
4. 安装和配置 Hive 2.3.9
4.1 下载 Hive 2

在所有节点上下载 Hive:

cd /opt
sudo wget https://archive.apache.org/dist/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz
sudo tar -xzvf apache-hive-2.3.9-bin.tar.gz
sudo mv apache-hive-2.3.9-bin /usr/local/hive
4.2 配置 Hive 环境变量

在所有节点的 .bashrc 文件中添加以下内容:

sudo vi ~/.bashrc
# 添加以下内容:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

然后使配置生效:

source ~/.bashrc
4.3 配置 Hive

在 node1 上配置 Hive,并将配置文件分发到所有节点。

配置 hive-site.xml

sudo cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml
sudo vi $HIVE_HOME/conf/hive-site.xml
# 添加以下内容:
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hiveuser</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hivepassword</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
</configuration>

将配置文件分发到其他节点:

scp $HIVE_HOME/conf/hive-site.xml node2:$HIVE_HOME/conf/
scp $HIVE_HOME/conf/hive-site.xml node3:$HIVE_HOME/conf/
4.4 初始化 Hive Metastore

在 node1 上执行:

schematool -initSchema -dbType mysql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值