电商项目之 flume 数据同步总结|学习笔记

简介: 快速学习电商项目之 flume 数据同步总结

开发者学堂课程【新电商大数据平台2020最新课程电商项目之 flume 数据同步总结】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/640/detail/10514


电商项目之 flume 数据同步总结

内容简介

一、flume 数据同步

二、常见问题处理

 

一、flume 数据同步

上节我们讲了 flume 数据采集,将本地文件采集到 ads 中。上节课也做了测试,针对上节课空值没有导进来,是因为没有时间这一列,所以说这个不影响。

从本地文件夹采集我们的 hdys 通过 telldl 的方式,这样会在 hdys 生成一个文件。这样我们的数据就有了,也就是20200321这一天采集过来的,那么我们这个时候按照分局域去处理,那个 web 数据就处理完成了。

日志数据处理:

数据采集回顾:数据采集文档中有个高可用搭建,文档里有参考内容,配置文件也是高考用的。在这大家可以尝试搭建采集。

下面有一个字段稍微修改了下,最好用数据仓库里的文件进行覆盖一下。

然后导入下,修改好时间,每天处理一次动态参修改。滚动次数和大小可以修改为零。我们可以执行我们的任务,比如数据导入任务,数据采集。

创建表结构时,设置字段划分规则,ROW FORMAT DELIMITED FIELDS TERMINATED BY;以逗号分隔,因为在 HDFS数据导入过来后,文件内每个字段是,分隔,在进行导入。

例如:

alter table ods_nshop.ods_nshop_o1_releasedatas add partition (bdp_day='20190926');在进行查询即可

最后我们开发肯定会遇到的问题,比如小文件过多,但在这上面肯定不会有整个问题,因为已经设置成0了,就是将它的 Count 滚动次数和 Size 大小都设置成0,不管有多大的文件都形成一个文件夹。


二、常见问题处理

[ERROR-org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer.invoke(AbstractNonblockingServer.java:484)] Unexpectedthrowablewhile invoking!java.lang.OutOfMemoryError: Java heap space

原因:

flume 启动时的默认最大的堆内存大小是20M,实际环境中数据量较大时,很容易出现 OOM 问题,在 flume 的基础配置文件 conf 下的 flume-env.sh 中添加。

export JAVA_OPTS="-Xms2048m -Xmx2048m -Xss256k -Xmn1g-XX:+UseParNewGC-XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit"

并且在 flume 启动脚本 flume-ng 中,

1. 修改 JAVA_OPTS="-Xmx20m"为 JAVA_OPTS="-Xmx2048m"此处我们将堆内存的阈值跳转到了2G,实际生产环境中可以根据具体的硬件情况作出调整

2.

[ERROR-org.apache.thrift.server.TThreadedSelectorServer$SelectorThread.run(TThreadedSelectorServer.java:544)]run() exiting due to uncaught error java.lang.OutOfMemoryError: unable to create new native thread

原因:

如果 App 给 flume 的 thrift source 发送数据时,采用短连接,会无限地创建线程,使用命令pstree 时发现 java 的线程数随着发送数据量的增长在不停增长,最终达到了65500多个,超过了 linux 系统对线程的限制,解决方法是在thrift source 配置项中增加一个线程数的限制。

3. agent.sources.r1.threads = 50重新启动 agent 发现 java 的线程数达到70多就不再增长了

4.

Caused by: org.apache.flume.ChannelException:Put queue for MemoryTransaction of capacity 100 full,consider committing more frequently, increasing capacity or increasing thread count

原因:

这是 memory channel 被占满导致的错误,memory channel 默认最多只缓存100条数据,在生产环境中明显不够,需要将 capacity 参数加大,还有其他问题,大家在以后的运用途中如果发生可以参考,也有解决方案。传输使用AVRO Source 方式进行传播的。这样数据传输过来之后再进行操作。

这样 flume 的采集就完成了,它会按照事先设置好的程序定时去操作,只要有数据过来就会落地,每天都会形成一个大的文件。

相关文章
|
4月前
|
消息中间件 NoSQL Java
【Redis系列】我看你们项目用的Redis主从,数据同步了解吗
面试官:说说Redis数据同步。是这样的,Redis有一个叫命令传播的概念,如果像面试官说的这种场景,再使用上面我提到的AOF缓冲区就有点浪费内存空间了。所以Redis会将主服务器的这条Del删除命令
【Redis系列】我看你们项目用的Redis主从,数据同步了解吗
|
4月前
|
消息中间件 存储 分布式计算
Hadoop学习笔记(HDP)-Part.20 安装Flume
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
89 0
Hadoop学习笔记(HDP)-Part.20 安装Flume
|
10月前
|
canal NoSQL 关系型数据库
淘东电商项目(22) -Canal数据同步框架
淘东电商项目(22) -Canal数据同步框架
88 0
|
消息中间件 存储 关系型数据库
PostqreSQL 表级复制-Londiste3多节点数据同步合 并到单节点|学习笔记
快速学习 PostqreSQL 表级复制-Londiste3多节点数据同步合并到单节点
213 0
PostqreSQL 表级复制-Londiste3多节点数据同步合 并到单节点|学习笔记
|
数据采集 JSON 监控
网站流量日志Flume收集--新组件taildir source介绍| 学习笔记
快速学习网站流量日志Flume收集--新组件taildir source介绍
网站流量日志Flume收集--新组件taildir source介绍| 学习笔记
|
数据采集 缓存 JSON
网站流量日志 Flume 收集--配置文件编写和实操| 学习笔记
快速学习网站流量日志 Flume 收集--配置文件编写和实操
网站流量日志 Flume 收集--配置文件编写和实操| 学习笔记
|
监控 开发工具 开发者
网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记
快速学习网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动
网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记
|
弹性计算 网络安全 数据库
3.数据同步网络连通实践 | 学习笔记
快速学习3.数据同步网络连通实践
|
数据采集 存储 运维
数据同步场景下的技术选型 | 学习笔记
快速学习数据同步场景下的技术选型
|
4月前
|
存储 分布式计算 监控
【Flume】Flume 监听日志文件案例分析
【4月更文挑战第4天】【Flume】Flume 监听日志文件案例分析

热门文章

最新文章