制定网站推广方案,类似携程网的网站,wordpress音乐列表,h5营销型网站suteng1.Sqoop的增量导入
实际工作中#xff0c;数据的导入很多时候只需要导入增量的数据#xff0c;并不需要将表中的数据每次都全部导入到hive或者hdfs中#xff0c;因为这样会造成数据重复问题。
增量导入就是仅导入新添加到表中的行的技术。
sqoop支持两种模式的增量导入数据的导入很多时候只需要导入增量的数据并不需要将表中的数据每次都全部导入到hive或者hdfs中因为这样会造成数据重复问题。
增量导入就是仅导入新添加到表中的行的技术。
sqoop支持两种模式的增量导入
append模式根据数值类型字段进行追加导入大于指定的last-value值
Lastmodified模式根据时间戳类型的字段进行追加指定的last-value
注意在Lastmodified模式下还分为两种形式append附加merge-key合并两种模式来添加。
merge-key做了两件事如果数据有变化会将变化的数据同步过来如果有新增的数据也会把新增的数据同步过来。还避免了append模式数据同步的问题它的功能更加强大。
2.Sqoop导出
将数据从HDFS生态体系导出到RDBMS数据库前目标表必须存在于目标数据库中。
导出有三种模式
a.默认模式Sqoop将文件中的数据使用insert语句插入到表中。
b.更新模式Sqoop将生成updata替换数据库中现有记录的语句。
c.调用模式Sqoop将为每条记录创建一个存储过程调用。
数据导出注意事项导出的目标表需要自己手动提前创建也就是sqoop并不会帮我们创建复制表的结构。
3.Sqoop中可以创建Job作业执行Job其目的不外乎还是用来导入导出数据。
4.Sqoop免密执行Job作业。
-------------------------------------------------------------Flume------------------------------------------------------------
5.Flume概述
Flume是一个分布式、高可用、高可靠的海量日志采集、聚合和传输的系统支持在日志系统中定制各类数据发送方用于收集数据同时提供了对数据进行简单处理并写到各种数据接收方的能力。
Flume的设计原理是基于数据流的能够将不同数据源的海量日志数据进行高效收集、聚合、移动最后存储到一个中心化数据存储系统中。
Flume能够做到近似实时的推送并且可以满足数据量是持续并且数量级很大的情况。比如它可以收集社交网站的日志并将这些数量庞大的日志数据从网站服务器上汇集起来存储到HDFS或者HBase分布式数据库中。
注意数据流中的流字可以理解为不停的处理就跟水流一样不间断
6.Flume的应用场景
比如一个电商网站想从网站的访问者中访问一些特定的节点区域来分析消费者的购物意图和行为。为了实现这一点需要收集消费者访问的页面以及点击的产品等日志信息然后移交到大数据Hadoop平台上去分析可以利用Flume做到这一点。现在流行的内容推送比如广告定点投递以及新闻私人定制也是基于这个道理。
7.Flume架构 几个概念
EventEvent/事件是Flume内部数据传输的最基本单元将传输的数据进行封装。事件本身是由一个装有数据的字节数组和可选的headers头部信息构成的如下图所示。Flume以事件的形式将数据从源头传输到最终的目的地。 Agent Flume Agent是一个JVM进程通过三个组件SourceChannelSink将事件流从一个外部数据源收集并发送给下一个目的地。
Source从数据发生器接收数据并将数据以Flume的Event格式传递给一个或者多个通道/channel。
Channel通道是一种短暂的存储容器位于Source和Sink之间起到一个桥梁的作用。Channel把从 Source处拿到的Event格式的数据缓存起来当Sink成功的将Event发送到下一跳的Channel或者最终的目的地之后Events便从Channel中移除。
Channel是一个完整的事务这一点保证了数据在收发的时候的一致性。
可以把Channel看作一个FIFO/先进先出队列当数据的获取速率超过流出速率时将Event保存到队列中再从队中一个一个的出来。
Channel的形式也有很多种Momery channelFile channelKafka channel等。
Sink获取channel暂时保存的数据并进行处理。sinkc从channel中移除事件并将其发送到下一个agent简称下一跳或者事件的最终目的地比如HDFS中。
8.Flume整体过程简要描述 1外部数据源Web Server将Flume可识别的Event发送到Source。
2将Source收到Event事件后存储到一个或者多个Channel通道中。
3Channel保留Event直到Sink将其处理完毕。
4Sink从Channel中取出数据并将其传输至外部存储如HDFS
9.Flume的可靠性
事件在每个agent中的channel中短暂的存储然后事件被发送到下一个agent或者最终的目的地。事件只有存储在下一个channel或者最终存储后才从当前的channel中删除。
Flume使用了事务的办法来保证Events的可靠性。只有下一个“地点”明确的接收到了数据才将上一个“地点”中的数据移除