mysql - Hadoop/Sqoop通信链接错误-无法从MySQL导入表

标签 mysql hadoop sqoop

我试图通过sqoop从mysql导入表到hadoop文件系统。但是,sqoop import会启 Action 业,并被困在0%的映射上。
一段时间后,作业失败,并出现以下错误

2020-08-12 21:46:08,341 INFO mapreduce.Job: Running job: job_1597282205193_0005
2020-08-12 21:46:20,755 INFO mapreduce.Job: Job job_1597282205193_0005 running in uber mode : false
2020-08-12 21:46:20,758 INFO mapreduce.Job:  map 0% reduce 0%
2020-08-12 21:48:43,458 INFO mapreduce.Job: Task Id : attempt_1597282205193_0005_m_000001_0, Status : FAILED
Error: java.lang.RuntimeException: java.lang.RuntimeException: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
为了完整起见,整个命令如下:
sqoop import --connect jdbc:mysql://mysqlserver:3306/DSA_ED --table test --username hadoop -P
Sqoop甚至创建了目录,但是没有导入任何内容:
[hadoop@hdpnms ~]$ hdfs dfs -ls
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2020-08-12 21:59 test
[hadoop@hdpnms ~]$ hdfs dfs -ls test/
[hadoop@hdpnms ~]$
我的设置是:
  • Hadoop的namenode运行在与Sqoop相同的虚拟机(桥接网络)上; yarn 作为经理
  • Hadoop的数据节点分别在它们自己的(以及桥接的)两个虚拟机上运行
  • Mysql Server在虚拟机的
  • 的主机上运行

    尽管表很小(7行),但我尝试根据建议的here来增加虚拟机中的RAM(并相应地重新配置yarn-site.xmlmapred-site.xml),并根据herehere来检查与mysql服务器的连接以及用户权限
    我肯定mysql服务器的连接配置是可以的,因为我既可以看到数据库表是sqoop list-tables的结果(这也告诉我连接驱动程序是可以的),并且可以通过命令行客户端mysql -u hadoop -h mysqlserver -p来连接和处理数据库。这使我认为必须在sqoop上进行一些错误配置。但是我真的很困,无法理解问题所在。
    编辑1
    因此,我尝试在主机上使用Postgres服务器,并在hadoop运行实例上尝试使用Mysql服务器。两次都发生相同的问题。我认为这绝对可以从外部排除连接问题,并且必须与Sqoop如何管理作业上的连接有关。

    最佳答案

    万一有人碰到了同样的问题...事实证明,在数据库的配置和防火墙中,是IP权限的问题。
    我假设所有流量都将通过名称节点发生,因此只有名称节点的IP被允许通过防火墙并进入数据库服务器,因此我可以与其他客户端通过它们进行访问。但是事实证明,在映射作业期间,所有群集的主机都在发出请求。
    授予群集中所有IP的许可后,作业运行顺利。我想如果必要的话,必须有一些配置可以通过一台计算机路由流量,但这解决了这个问题。

    关于mysql - Hadoop/Sqoop通信链接错误-无法从MySQL导入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63387461/

    相关文章:

    mysql - 如何使用条件日期现在显示来自mysql的数据

    hadoop - Flume 内存 channel 在启动时已满

    hadoop - Hive ql Driver如何指定默认以外的数据库名称

    mysql - 导入时强制 sqoop 重新创建 Hive 模式

    hadoop - Sqoop增量导入 "Cannot append files to target dir"

    hadoop - 增量 “lastmodified”在sqoop中不起作用

    mysql - 通过命令行从 MySQL 导出/导入表

    php - PHP中如何去除特殊字符

    java - 为大数据生成最佳 UUID

    mysql - 在 Heroku 上使用 Jaws Maria DB 的 Laravel 应用程序出现 MYSQL 错误