4.1 Sqoop 安装(Hadoop3.0)

4.1 Sqoop 安装(Hadoop3.0)

【实验目的】

1.了解Sqoop的安装部署

2.了解Sqoop的工作原理

【实验原理】

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(Mysql、Oracle...)间进行数据的传递,可以将一个关系型数据库中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。

https://adminmanage.ipieuvre.com/cs/doc/3/161/exper/31704857108923815700513/img/01.png

Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出,其中主要使用了Import和Export这两个工具。

Sqoop import原理:

从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的MapReduce作业,在MapReduce中有很多Map,每个Map读一片数据,进而并行的完成数据的拷贝。

Sqoop export原理:

获取导出表的schema、meta信息,和Hadoop中的字段match;多个Map only作业同时运行,完成HDFS中数据导出到关系型数据库中。

【实验环境】

AnolisOS8.8

Java 1.8.0

Hadoop-3.0.0

Eclipse-JEE 2022.03

mysql-8.0.26

Pycharm

【实验内容】

练习安装并配置Sqoop工具

【实验步骤】

切换到vmuser用户,完成本次实验。(vmuser的密码:vm123456)

1.首先在Linux本地,新建/data/sqoop1目录,用于存放所需文件。

mkdir -p /data/sqoop1

切换目录到/data/sqoop1下,使用wget命令,下载文件。

cd /data/sqoop1

wget http://sqoop1/sqoop-1.4.7.tar.gz

wget http://sqoop1/sqoop-1.4.7.jar

wget http://sqoop1/mysql-connector-java-8.0.26.jar

wget http://sqoop1/lib.tar.gz

2.将/data/sqoop1目录下Sqoop的安装包,解压到/apps目录下。

sudo chown -R vmuser:vmuser /data/sqoop1

tar -xzvf /data/sqoop1/sqoop-1.4.7.tar.gz -C /apps/

切换到/apps目录下,将解压的sqoop-1.4.7重命名为sqoop。并把 sqoop-1.4.7.jar 文件放到sqoop目录中

并把 lib.tar.gz 解压,将其中的jar包放到 /apps/sqoop/lib 目录中。

cd /apps

mv /apps/sqoop-1.4.7/ /apps/sqoop

mv /data/sqoop1/sqoop-1.4.7.jar /apps/sqoop

tar -xzvf /data/sqoop1/lib.tar.gz -C /apps/sqoop/lib

3.修改环境变量,使用vim打开~/.bashrc文件。(vmuser的密码:vm123456)

sudo vim ~/.bashrc

添加以下内容到~/.bashrc文件中。

#sqoop

export SQOOP_HOME=/apps/sqoop

export PATH=$SQOOP_HOME/bin:$PATH

使用source命令,使用户环境变量生效。

source ~/.bashrc

4.由于在导数据过程中,可能会涉及到连接Mysql,所以需要将/data/sqoop1目录下,Mysql的jdbc连接包mysql-connector-java-8.0.26.jar,拷贝到Sqoop的lib目录下。

cp /data/sqoop1/mysql-connector-java-8.0.26.jar /apps/sqoop/lib

5.配置Sqoop。

切换到/apps/sqoop/conf目录下,将sqoop-env-template.sh重命名为sqoop-env.sh。

cd /apps/sqoop/conf/

mv sqoop-env-template.sh sqoop-env.sh

使用vim打开sqoop-env.sh文件。

vim /apps/sqoop/conf/sqoop-env.sh

将sqoop-env.sh中的配置,修改为如下形式。

#Set path to where bin/hadoop is available

export HADOOP_COMMON_HOME=/apps/hadoop

#Set path to where hadoop-*-core.jar is available

export HADOOP_MAPRED_HOME=/apps/hadoop

#set the path to where bin/hbase is available

export HBASE_HOME=/apps/hbase

#Set the path to where bin/hive is available

export HIVE_HOME=/apps/hive

#Set the path for where zookeper config dir is

#export ZOOCFGDIR=/apps/zookeeper

这里的配置项,是告诉Sqoop框架,Hadoop、HBase、Hive等的相关路径。

6.下面再切换到/apps/sqoop/bin目录下。

cd /apps/sqoop/bin/

下面来修改configure-sqoop里面的部分脚本,使用vim打开configure-sqoop文件。

vim configure-sqoop

在configure-sqoop文件中,查找下面内容,并在前面加上“#”号,将脚本注释掉。

## Moved to be a runtime check in sqoop.

#if [ ! -d "${HBASE_HOME}" ]; then

# echo "Warning: $HBASE_HOME does not exist! HBase imports will fail."

# echo 'Please set $HBASE_HOME to the root of your HBase installation.'

#fi

## Moved to be a runtime check in sqoop.

#if [ ! -d "${HCAT_HOME}" ]; then

# echo "Warning: $HCAT_HOME does not exist! HCatalog jobs will fail."

# echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'

#fi

#if [ ! -d "${ACCUMULO_HOME}" ]; then

# echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports will fail."

# echo 'Please set $ACCUMULO_HOME to the root of your Accumulo installation.'

#fi

#if [ ! -d "${ZOOKEEPER_HOME}" ]; then

# echo "Warning: $ZOOKEEPER_HOME does not exist! Accumulo imports will fail."

# echo 'Please set $ZOOKEEPER_HOME to the root of your Zookeeper installation.'

#fi

注释掉这段文本后,当我们输入sqoop version时,提示效果如下。

sqoop version

7.至此Sqoop安装已完毕,下面我们测试一下Sqoop能否连接Mysql。

执行启动命令

systemctl start mysqld

查看一下Mysql服务是否已经启动。

systemctl status mysqld

然后我们查询Mysql中都有哪些数据库,测试Sqoop能否连接Mysql。

sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password strongs

测试完成,说明Sqoop安装成功!

连接数据库

mysql -h localhost -P 3306 -u root -p

查看数据库版本

SELECT VERSION();

至此,实验结束!

posted @ 2024-06-05 10:40  jhtchina  阅读(41)  评论(0编辑  收藏  举报