4.hadoop集群扩容与hive异常处理

异常处理

当我们使用sqoop同步数据时候,出现了异常。
Error writing file ‘/tmp/MYYEBa32’ (Errcode: 28 - No space left on device
INFO mapreduce.Job: The url to track the job: http://node3:8088/proxy/application_1681182527108_0002/ INFO mapreduce.Job: Running job: job_1681182527108_0002
INFO mapreduce.Job: Job job_1681182527108_0002
running in uber mode : false INFO mapreduce.Job: map 0%
reduce 0% INFO mapreduce.Job: map 100% reduce 0%
INFO mapreduce.Job: Job job_1681182527108_0002 failed with state FAILED due to: Task failed
task_1681182527108_0002_m_000000 Job failed as tasks
failed. failedMaps:1 failedReduces:0 killedMaps:0
killedReduces: 0 ERROR mapreduce.ExportJobBase: Export
job failed! ERROR tool.ExportTool: Error during export:
Export job failed!

1.hadoop集群扩容方案

关闭superset、hive、hadoop服务,然后关闭四台虚拟机。
修改node1节点内存(因为mysql在该节点)
在这里插入图片描述
在这里插入图片描述
启动四台虚拟机
提升yarn容器允许分配的内存
关闭hive和hadoop集群,修改配置文件yarn-site.xml

在/opt/hadoop-3.1.3/etc/hadoop下
 <!-- yarn容器允许分配的最大最小内存 -->
2  <property>
3    <name>yarn.scheduler.minimum-allocationmb</name>
4    <value>1024</value>
5  </property>
6  <property>
7    <name>yarn.scheduler.maximum-allocationmb</name>
8    <value>2048</value>
9  </property>
10  <!-- yarn容器允许管理的物理内存大小(NN) -->
11  <property>
12    <name>yarn.nodemanager.resource.memorymb</name>
13    <value>2048</value>
14  </property>

分发给其他虚拟机

[root@node3 hadoop]# cd /opt/hadoop-
3.1.3/etc/hadoop
[root@node3 hadoop]# vim yarn-site.xml
[root@node3 hadoop]# scp yarn-site.xml 
node4:`pwd`
[root@node3 hadoop]# scp yarn-site.xml 
node2:`pwd`
[root@node3 hadoop]# scp yarn-site.xml 
node1:`pwd`
1

启动hadoop集群和启动hive服务。

2.异常处理方案——hive表中存在Null无法导出到mysql

清理D,剩余空间变大后,扩容了虚拟机的配置,深入探查发现如下bug
如何查找该bug的具体原因?
从报错的日志中找到网页链接,从上面日志中知道Running job
在这里插入图片描述

显示具体日志在node2中
在node2上进入/opt/hadoop-3.1.3/logs/userlogs/目录

[root@node2 ~]# cd /opt/hadoop-
3.1.3/logs/userlogs/
[root@node2 userlogs]# ll
总用量 4
drwx--x--- 10 root root 4096 4月  11 11:30
application_1681175906821_0011
drwx--x---  4 root root  106 4月  11 11:18
application_1681182527108_0001
drwx--x---  3 root root   56 4月  11 11:34
application_1681182527108_0002

进入application_1681182527108_0002目录,查看列表:

[root@node2 userlogs]# cd
application_1681182527108_0002
[root@node2
application_1681182527108_0002]# ll
drwx--x--- 2 root root 139 4月11 11:34
container_e30_1681182527108_0002_01_000001

进入application_1681182527108_0002目录,查看列表:
在这里插入图片描述
进入container_e30_1681182527108_0002_01_000001,查看列表:
可以发现,错误的原因就是存在Null缺失值:因为Mysql的空值是null,Hive中的是Nulll所以不匹配产生报错
修改sqoop脚本:添加最后4行

[root@node3 ~]# cat export_td_userlog_year_month_day_week.txt 
export
--connect
jdbc:mysql://node1:3306/taobao
--username
root
--password
123456
-m
1
--table
td_userlog_year_month_day_week
--columns
user_id,cat_id,brand_id,item_id,seller_id,time_year,time_month,time_day,time_stamp,week_year,week_day
--export-dir
/user/hive_remote/warehouse/taobao.db/td_userlog_year_month_day_week
--input-null-non-string
'\\N'
--input-null-string
'\\N'
[root@node3 ~]# sqoop --options-file export_td_userlog_year_month_day_week.txt 


在这里插入图片描述

2.使用Superset绘制可视化图标

导入Mysql表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_63953077/article/details/130891689