hadoop 3.3.0 应该使用哪个版本的 sqoop?

Posted

技术标签:

【中文标题】hadoop 3.3.0 应该使用哪个版本的 sqoop?【英文标题】:Which version of sqoop should I use for hadoop 3.3.0? 【发布时间】:2020-09-06 09:21:19 【问题描述】:

我正在尝试在 hadoop 3.3.0 上的 windows 10 中安装 sqoop 1.4.7,

在 GIT bash 上使用 ./configure-sqoop 我得到以下 o/p:

警告:C:\sqoop_data\sqoop-1.4.7.bin__hadoop-2.6.0/../hbase 不存在! HBase 导入将失败。 请将 $HBASE_HOME 设置为 HBase 安装的根目录。 警告:C:\sqoop_data\sqoop-1.4.7.bin__hadoop-2.6.0/../hcatalog 不存在! HCatalog 作业将失败。 请将 $HCAT_HOME 设置为 HCatalog 安装的根目录。 警告:C:\sqoop_data\sqoop-1.4.7.bin__hadoop-2.6.0/../accumulo 不存在! Accumulo 导入将失败。 请将 $ACCUMULO_HOME 设置为 Accumulo 安装的根目录。 警告:C:\sqoop_data\sqoop-1.4.7.bin__hadoop-2.6.0/../zookeeper 不存在! Accumulo 导入将失败。 请将 $ZOOKEEPER_HOME 设置为 Zookeeper 安装的根目录。

在使用 sqoop.cmd 版本 验证安装时,我得到:

警告:未设置 HBASE_HOME 和 HBASE_VERSION。 警告:未设置 HCAT_HOME 警告:HCATALOG_HOME 不存在 HCatalog 导入将失败。 请将 HCATALOG_HOME 设置为 HCatalog 安装的根目录。 警告:ACCUMULO_HOME 未设置。 警告:未设置 ZOOKEEPER_HOME。 警告:HBASE_HOME 不存在 HBase 导入将失败。 请将 HBASE_HOME 设置为 HBase 安装的根目录。 警告:ACCUMULO_HOME 不存在 Accumulo 导入将失败。 请将 ACCUMULO_HOME 设置为 Accumulo 安装的根目录。 警告:ZOOKEEPER_HOME 不存在 Accumulo 导入将失败。 请将 ZOOKEEPER_HOME 设置为 Zookeeper 安装的根目录。 系统找不到指定的路径。

请帮忙解决这个问题

【问题讨论】:

【参考方案1】:

这取决于您是在服务器端还是客户端工作。

如果您在服务器端,请执行以下操作:

将 Sqoop 工件复制到您要运行 Sqoop 服务器的机器上。 Sqoop 服务器充当 Hadoop 客户端,因此 Hadoop 库(Yarn、Mapreduce 和 HDFS jar 文件)和配置文件(core-site.xml、mapreduce-site.xml,...)必须在此节点上可用。您不需要运行任何与 Hadoop 相关的服务 - 在“网关”节点上运行服务器非常好。

解压 Sqoop 分发压缩包

tar -xvf sqoop-<version>-bin-hadoop<hadoop-version>.tar.gz

将解压后的内容移动到任意位置

mv sqoop-<version>-bin-hadoop<hadoop version>.tar.gz /usr/lib/sqoop

更改工作目录

cd /usr/lib/sqoop

sqoopt 需要将环境变量指向 Hadoop 库。所以像这样设置和导出变量:

# Export HADOOP_HOME variable
export HADOOP_HOME=/...

# Or alternatively HADOOP_*_HOME variables
export HADOOP_COMMON_HOME=/...
export HADOOP_HDFS_HOME=/...
export HADOOP_MAPRED_HOME=/...
export HADOOP_YARN_HOME=/...

Sqoop 服务器需要模拟用户访问 HDFS,所以编辑 core-site.xml 文件:

<property>
  <name>hadoop.proxyuser.sqoop2.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.sqoop2.groups</name>
  <value>*</value>
</property>

用于客户端安装 只需在目标机器上复制 Sqoop 分发工件并将其解压缩到所需位置。您可以使用以下命令启动客户端:

sqoop2-shell

对于路径变量,所有面向用户和管理员的 shell 命令都存储在 bin/ 目录中。建议将此目录添加到您的 $PATH 以便于执行,例如:

PATH=$PATH:`pwd`/bin/

【讨论】:

有效吗?是否可以将 Sqoop 1.4.7 与 Hadoop 3.X+ 一起使用?【参考方案2】:

这个组合很适合我:

Hadoop:3.3.1 Sqoop:1.4.7 连接器/J:5.1.49

注意: 您必须在“$SQOOP_HOME/lib”中将“commons-lang3-3.4.jar”替换为“commons-lang-2.6.jar”以避免出现“java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils”错误使用“Sqoop 导入”。

【讨论】:

以上是关于hadoop 3.3.0 应该使用哪个版本的 sqoop?的主要内容,如果未能解决你的问题,请参考以下文章

Centos8 安装hadoop 2.7.7(3节点)

58同城Hadoop2.6升级3.2实践

在哪个节点上编辑 hadoop .xml 文件?

Hadoop完全分布式集群搭建 centos 6.5(保姆级教程)

spark哪个版本支持scala2.11

如何知道应该使用哪个 cuDNN 版本?