数据问题集锦


概述

记录任何数据问题

  • 问题 🤡 hive sqoop

使用sqoop hive数据导出到MySQL时遇到以下问题

1
2
3
FATAL [IPC Server handler 17 on 16362] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1573804393361_8208_m_000002_0 - exited : Java heap space
2019-11-19 13:19:31,067 INFO [IPC Server handler 17 on 16362] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Diagnostics report from attempt_1573804393361_8208_m_000002_0: Error: Java heap space
2019-11-19 13:19:31,069 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: Diagnostics report from attempt_1573804393361_8208_m_000002_0: Error: Java heap space

==方法:== 😀

java 堆内存溢出 需要单独配置map 配置

在导出参数中添加一下配置

-Dmapreduce.map.memory.mb=1024 \

-Dmapreduce.map.java.opts=-Xmx4200m \

参考地址:

https://stackoverflow.com/questions/39208415/java-heap-size-error-in-sqoop-import

  • 问题 🤡 canal

使用canal监听mysql binlog 修改配置 未重启服务 导致数据解析错误

==方法==😀

重启服务OK

进入 /usr/local/src/canal_1.1.4/bin 运行restart.sh 脚本

  • 问题 🤡 flink hbase

hbase 服务重启时 点击配置客户端导致HDFS集群重启 导致flink 实时任务进程挂掉

==方法==😀

重启服务时预估造成的后果,能有预警和备用解决方案,添加新可读账户,避免误操作

  • 问题 🤡 hdfs datanode

datanode 不定时爆出内存溢出 进程退出问题

==方法😀==

设置hdfs DataNode 的 Java 堆栈大小 2 G (默认设置是1G)

  • 问题 🤡 ssh 免密

driver1机器和datax机器互为免密登录但是突然出现问题
driver1机器上能使用datax 用户免密登录datax机器 但是datax机器上却不能使用airflow用户登录driver1 机器

==方法==😀

原因是.ssh目录下的 .. 目录权限有问题,需要检查所有的目录权限
.ssh目录,以及/home/当前用户 需要700权限,参考以下操作调整
sudo chmod 700 ~/.ssh
sudo chmod 700 /home/当前用户
.ssh目录下的authorized_keys文件需要600或644权限,参考以下操作调整
sudo chmod 600 ~/.ssh/authorized_keys

  • 问题 🤡 spark spark-sql oom

spark-sql 跑任务时出现oom问题

==方法😀==

由于大表join 小表出现数据倾斜的问题 使用参数实现 JOIN过程动态广播 把小表join之前广播到各个机器
–conf spark.sql.autoBroadcastJoinThreshold=10485760
类似Hive中的mapjoin,在join的过程中把小于10M的小表广播到所有节点,从而进行Hashjoin,提升join的效率。
参数参考地址 https://www.cnblogs.com/yin-fei/p/10985683.html
设置方式可以使用 spark-sql –help 查看

  • 问题 🤡 hive

为hive 表在固定字段之后添加字段

==方法==

修改步骤
1、新增字段,默认增加到最后一列

ALTER TABLE xx ADD COLUMNS (xx STRING COMMENT ‘Department name’);

alter table xxx add columns (tal_id string comment ‘talid’);
2、可修改字段顺序
alter table xxx change column tal_id tal_id string after student_code ;

3、增加字段改了顺序后,字段值错位,需要指定顺序重新刷数据
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE table xx PARTITION(dt)
select
xx,

xx

FROM
xx
;
4、更改mysql表结构,与hive同步

  • 问题 🤡 CDH ntp

CDH出现时钟偏差

==方法==😀

问题的原因是ntp服务出问题了 可能服务不同步了 添加配置一个服务

vim /etc/ntp.conf

server 10.0.61.4 prefer

server 127.127.1.0

fudge 127.127.1.0 stratum 10

重启 service ntpd restart

然后 service ntpd status

  • 问题

==方法==

  • 问题

==方法==

  • 问题

==方法==

  • 问题

==方法==

  • 问题

==方法==

  • 问题

Author: 杜宏飞
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source 杜宏飞 !
  TOC