<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单之美 &#187; Category &#187; Flume/Sqoop</title>
	<atom:link href="http://shiyanjun.cn/archives/category/opensource/flume-sqoop/feed" rel="self" type="application/rss+xml" />
	<link>http://shiyanjun.cn</link>
	<description>简单之美，难得简单，享受简单的唯美。</description>
	<lastBuildDate>Wed, 04 Mar 2026 07:04:53 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.2</generator>
	<item>
		<title>Flume日志收集分层架构应用实践</title>
		<link>http://shiyanjun.cn/archives/1497.html</link>
		<comments>http://shiyanjun.cn/archives/1497.html#comments</comments>
		<pubDate>Fri, 26 Feb 2016 06:49:13 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Flume/Sqoop]]></category>
		<category><![CDATA[开源技术]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=1497</guid>
		<description><![CDATA[<p>Flume作为一个日志收集工具，非常轻量级，基于一个个Flume Agent，能够构建一个很复杂很强大的日志收集系统，它的灵活性和优势，主要体现在如下几点：

模块化设计：在其Flume Agent内部可以定义三种组件：Source、Channel、Sink
组合式设计：可以在Flume Agent中根据业务需要组合Source、Channel、Sink三种组件，构建相对复杂的日志流管道
插件式设计：可以通过配置文件来编排收集日志管道的流程，减少对Flume代码的侵入性
可扩展性：我们可以根据自己业务的需要来定制实现某些组件（Source、Channel、Sink）
支持集成各种主流系统和框架：像Hadoop、HBase、Hive、Kafka、ElasticSearch、Thrift、Avro等，都能够很好的和Flume集成
高级特性：Failover、Load balancing、Interceptor等

有关Flume的相关内容，可以参考官网文档，或者通过阅读我之前写的文章《Flume(NG)架构设计要点及配置实践》来快速了解。
为什么要对Flume日志收集系统进行分层设计
基于Flume设计实现分层日志收集系统，到底有什么好处呢？我们可以先看一下，如果不分层，会带来哪些问题：

如果需</p>]]></description>
	<p>Flume作为一个日志收集工具，非常轻量级，基于一个个Flume Agent，能够构建一个很复杂很强大的日志收集系统，它的灵活性和优势，主要体现在如下几点：

模块化设计：在其Flume Agent内部可以定义三种组件：Source、Channel、Sink
组合式设计：可以在Flume Agent中根据业务需要组合Source、Channel、Sink三种组件，构建相对复杂的日志流管道
插件式设计：可以通过配置文件来编排收集日志管道的流程，减少对Flume代码的侵入性
可扩展性：我们可以根据自己业务的需要来定制实现某些组件（Source、Channel、Sink）
支持集成各种主流系统和框架：像Hadoop、HBase、Hive、Kafka、ElasticSearch、Thrift、Avro等，都能够很好的和Flume集成
高级特性：Failover、Load balancing、Interceptor等

有关Flume的相关内容，可以参考官网文档，或者通过阅读我之前写的文章《Flume(NG)架构设计要点及配置实践》来快速了解。
为什么要对Flume日志收集系统进行分层设计
基于Flume设计实现分层日志收集系统，到底有什么好处呢？我们可以先看一下，如果不分层，会带来哪些问题：

如果需</p>			<content:encoded><![CDATA[<p>Flume作为一个日志收集工具，非常轻量级，基于一个个Flume Agent，能够构建一个很复杂很强大的日志收集系统，它的灵活性和优势，主要体现在如下几点：

模块化设计：在其Flume Agent内部可以定义三种组件：Source、Channel、Sink
组合式设计：可以在Flume Agent中根据业务需要组合Source、Channel、Sink三种组件，构建相对复杂的日志流管道
插件式设计：可以通过配置文件来编排收集日志管道的流程，减少对Flume代码的侵入性
可扩展性：我们可以根据自己业务的需要来定制实现某些组件（Source、Channel、Sink）
支持集成各种主流系统和框架：像Hadoop、HBase、Hive、Kafka、ElasticSearch、Thrift、Avro等，都能够很好的和Flume集成
高级特性：Failover、Load balancing、Interceptor等

有关Flume的相关内容，可以参考官网文档，或者通过阅读我之前写的文章《Flume(NG)架构设计要点及配置实践》来快速了解。
为什么要对Flume日志收集系统进行分层设计
基于Flume设计实现分层日志收集系统，到底有什么好处呢？我们可以先看一下，如果不分层，会带来哪些问题：

如果需</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/1497.html/feed</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Flume(NG)架构设计要点及配置实践</title>
		<link>http://shiyanjun.cn/archives/915.html</link>
		<comments>http://shiyanjun.cn/archives/915.html#comments</comments>
		<pubDate>Wed, 17 Sep 2014 14:29:49 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Flume/Sqoop]]></category>
		<category><![CDATA[开源技术]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=915</guid>
		<description><![CDATA[<p>Flume NG是一个分布式、可靠、可用的系统，它能够将不同数据源的海量日志数据进行高效收集、聚合、移动，最后存储到一个中心化数据存储系统中。由原来的Flume OG到现在的Flume NG，进行了架构重构，并且现在NG版本完全不兼容原来的OG版本。经过架构重构后，Flume NG更像是一个轻量的小工具，非常简单，容易适应各种方式日志收集，并支持failover和负载均衡。
架构设计要点
Flume的架构主要有一下几个核心概念：

Event：一个数据单元，带有一个可选的消息头
Flow：Event从源点到达目的点的迁移的抽象
Client：操作位于源点处的Event，将其发送到Flume Agent
Agent：一个独立的Flume进程，包含组件Source、Channel、Sink
Source：用来消费传递到该组件的Event
Channel：中转Event的一个临时存储，保存有Source组件传递过来的Event
Sink：从Channel中读取并移除Event，将Event传递到Flow Pipeline中的下一个Agent（如果有的话）

Flume NG架构，如图所示：

外部系统产生日志，直接通过Flume的Agent的Source组件将事件（如日志行）发送到中间临时的channel组件，最后传</p>]]></description>
	<p>Flume NG是一个分布式、可靠、可用的系统，它能够将不同数据源的海量日志数据进行高效收集、聚合、移动，最后存储到一个中心化数据存储系统中。由原来的Flume OG到现在的Flume NG，进行了架构重构，并且现在NG版本完全不兼容原来的OG版本。经过架构重构后，Flume NG更像是一个轻量的小工具，非常简单，容易适应各种方式日志收集，并支持failover和负载均衡。
架构设计要点
Flume的架构主要有一下几个核心概念：

Event：一个数据单元，带有一个可选的消息头
Flow：Event从源点到达目的点的迁移的抽象
Client：操作位于源点处的Event，将其发送到Flume Agent
Agent：一个独立的Flume进程，包含组件Source、Channel、Sink
Source：用来消费传递到该组件的Event
Channel：中转Event的一个临时存储，保存有Source组件传递过来的Event
Sink：从Channel中读取并移除Event，将Event传递到Flow Pipeline中的下一个Agent（如果有的话）

Flume NG架构，如图所示：

外部系统产生日志，直接通过Flume的Agent的Source组件将事件（如日志行）发送到中间临时的channel组件，最后传</p>			<content:encoded><![CDATA[<p>Flume NG是一个分布式、可靠、可用的系统，它能够将不同数据源的海量日志数据进行高效收集、聚合、移动，最后存储到一个中心化数据存储系统中。由原来的Flume OG到现在的Flume NG，进行了架构重构，并且现在NG版本完全不兼容原来的OG版本。经过架构重构后，Flume NG更像是一个轻量的小工具，非常简单，容易适应各种方式日志收集，并支持failover和负载均衡。
架构设计要点
Flume的架构主要有一下几个核心概念：

Event：一个数据单元，带有一个可选的消息头
Flow：Event从源点到达目的点的迁移的抽象
Client：操作位于源点处的Event，将其发送到Flume Agent
Agent：一个独立的Flume进程，包含组件Source、Channel、Sink
Source：用来消费传递到该组件的Event
Channel：中转Event的一个临时存储，保存有Source组件传递过来的Event
Sink：从Channel中读取并移除Event，将Event传递到Flow Pipeline中的下一个Agent（如果有的话）

Flume NG架构，如图所示：

外部系统产生日志，直接通过Flume的Agent的Source组件将事件（如日志行）发送到中间临时的channel组件，最后传</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/915.html/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Sqoop-1.4.4工具import和export使用详解</title>
		<link>http://shiyanjun.cn/archives/624.html</link>
		<comments>http://shiyanjun.cn/archives/624.html#comments</comments>
		<pubDate>Thu, 27 Feb 2014 13:30:01 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Flume/Sqoop]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[Sqoop]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=624</guid>
		<description><![CDATA[<p>Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出，其中主要使用了import和export这两个工具。这两个工具非常强大，提供了很多选项帮助我们完成数据的迁移和同步。比如，下面两个潜在的需求：

业务数据存放在关系数据库中，如果数据量达到一定规模后需要对其进行分析或同统计，单纯使用关系数据库可能会成为瓶颈，这时可以将数据从业务数据库数据导入（import）到Hadoop平台进行离线分析。
对大规模的数据在Hadoop平台上进行分析以后，可能需要将结果同步到关系数据库中作为业务的辅助数据，这时候需要将Hadoop平台分析后的数据导出（export）到关系数据库。

这里，我们介绍Sqoop完成上述基本应用场景所使用的import和export工具，通过一些简单的例子来说明这两个工具是如何做到的。
工具通用选项
import和export工具有些通用的选项，如下表所示：




		选项
	

		含义说明
	



		--connect &lt;jdbc-uri&gt;
	

		指定JDBC连接字符串
	



		--connection-manager &lt;class-name&gt;
	

		指定要使用的连接管理器类
	



		--driver &lt;class-name</p>]]></description>
	<p>Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出，其中主要使用了import和export这两个工具。这两个工具非常强大，提供了很多选项帮助我们完成数据的迁移和同步。比如，下面两个潜在的需求：

业务数据存放在关系数据库中，如果数据量达到一定规模后需要对其进行分析或同统计，单纯使用关系数据库可能会成为瓶颈，这时可以将数据从业务数据库数据导入（import）到Hadoop平台进行离线分析。
对大规模的数据在Hadoop平台上进行分析以后，可能需要将结果同步到关系数据库中作为业务的辅助数据，这时候需要将Hadoop平台分析后的数据导出（export）到关系数据库。

这里，我们介绍Sqoop完成上述基本应用场景所使用的import和export工具，通过一些简单的例子来说明这两个工具是如何做到的。
工具通用选项
import和export工具有些通用的选项，如下表所示：




		选项
	

		含义说明
	



		--connect &lt;jdbc-uri&gt;
	

		指定JDBC连接字符串
	



		--connection-manager &lt;class-name&gt;
	

		指定要使用的连接管理器类
	



		--driver &lt;class-name</p>			<content:encoded><![CDATA[<p>Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出，其中主要使用了import和export这两个工具。这两个工具非常强大，提供了很多选项帮助我们完成数据的迁移和同步。比如，下面两个潜在的需求：

业务数据存放在关系数据库中，如果数据量达到一定规模后需要对其进行分析或同统计，单纯使用关系数据库可能会成为瓶颈，这时可以将数据从业务数据库数据导入（import）到Hadoop平台进行离线分析。
对大规模的数据在Hadoop平台上进行分析以后，可能需要将结果同步到关系数据库中作为业务的辅助数据，这时候需要将Hadoop平台分析后的数据导出（export）到关系数据库。

这里，我们介绍Sqoop完成上述基本应用场景所使用的import和export工具，通过一些简单的例子来说明这两个工具是如何做到的。
工具通用选项
import和export工具有些通用的选项，如下表所示：




		选项
	

		含义说明
	



		--connect &lt;jdbc-uri&gt;
	

		指定JDBC连接字符串
	



		--connection-manager &lt;class-name&gt;
	

		指定要使用的连接管理器类
	



		--driver &lt;class-name</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/624.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>使用Sqoop job工具同步数据</title>
		<link>http://shiyanjun.cn/archives/621.html</link>
		<comments>http://shiyanjun.cn/archives/621.html#comments</comments>
		<pubDate>Thu, 27 Feb 2014 11:41:08 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Flume/Sqoop]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[Sqoop]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=621</guid>
		<description><![CDATA[<p>我们使用的是Sqoop-1.4.4，在进行关系型数据库与Hadoop/Hive数据同步的时候，如果使用--incremental选项，如使用append模式，我们需要记录一个--last-value的值，如果每次执行同步脚本的时候，都需要从日志中解析出来这个--last-value的值，然后重新设置脚本参数，才能正确同步，保证从关系型数据库同步到Hadoop/Hive的数据不发生重复的问题。
而且，我们我们需要管理我们使用的这些脚本，每次执行之前可能要获取指定参数值，或者修改参数。Sqoop也提供了一种比较方面的方式，那就是直接创建一个Sqoop job，通过job来管理特定的同步任务。就像我们前面提到的增量同步问题，通过创建sqoop job可以保存上一次同步时记录的--last-value的值，也就不用再费劲去解析获取了，每次想要同步，这个job会自动从job保存的数据中获取到。
sqoop job命令使用
Sqoop job相关的命令有两个：

bin/sqoop job
bin/sqoop-job

使用这两个都可以。我们先看看sqoop job命令的基本用法：

创建job：--create 
删除job：--delete 
执行job：--exec 
显示job：--show 
列出job：--list

下面</p>]]></description>
	<p>我们使用的是Sqoop-1.4.4，在进行关系型数据库与Hadoop/Hive数据同步的时候，如果使用--incremental选项，如使用append模式，我们需要记录一个--last-value的值，如果每次执行同步脚本的时候，都需要从日志中解析出来这个--last-value的值，然后重新设置脚本参数，才能正确同步，保证从关系型数据库同步到Hadoop/Hive的数据不发生重复的问题。
而且，我们我们需要管理我们使用的这些脚本，每次执行之前可能要获取指定参数值，或者修改参数。Sqoop也提供了一种比较方面的方式，那就是直接创建一个Sqoop job，通过job来管理特定的同步任务。就像我们前面提到的增量同步问题，通过创建sqoop job可以保存上一次同步时记录的--last-value的值，也就不用再费劲去解析获取了，每次想要同步，这个job会自动从job保存的数据中获取到。
sqoop job命令使用
Sqoop job相关的命令有两个：

bin/sqoop job
bin/sqoop-job

使用这两个都可以。我们先看看sqoop job命令的基本用法：

创建job：--create 
删除job：--delete 
执行job：--exec 
显示job：--show 
列出job：--list

下面</p>			<content:encoded><![CDATA[<p>我们使用的是Sqoop-1.4.4，在进行关系型数据库与Hadoop/Hive数据同步的时候，如果使用--incremental选项，如使用append模式，我们需要记录一个--last-value的值，如果每次执行同步脚本的时候，都需要从日志中解析出来这个--last-value的值，然后重新设置脚本参数，才能正确同步，保证从关系型数据库同步到Hadoop/Hive的数据不发生重复的问题。
而且，我们我们需要管理我们使用的这些脚本，每次执行之前可能要获取指定参数值，或者修改参数。Sqoop也提供了一种比较方面的方式，那就是直接创建一个Sqoop job，通过job来管理特定的同步任务。就像我们前面提到的增量同步问题，通过创建sqoop job可以保存上一次同步时记录的--last-value的值，也就不用再费劲去解析获取了，每次想要同步，这个job会自动从job保存的数据中获取到。
sqoop job命令使用
Sqoop job相关的命令有两个：

bin/sqoop job
bin/sqoop-job

使用这两个都可以。我们先看看sqoop job命令的基本用法：

创建job：--create 
删除job：--delete 
执行job：--exec 
显示job：--show 
列出job：--list

下面</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/621.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Sqoop-1.4.4安装配置及基本使用</title>
		<link>http://shiyanjun.cn/archives/597.html</link>
		<comments>http://shiyanjun.cn/archives/597.html#comments</comments>
		<pubDate>Wed, 26 Feb 2014 11:08:01 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Flume/Sqoop]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[Hadoop/Hive/ZooKeeper]]></category>
		<category><![CDATA[Sqoop]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=597</guid>
		<description><![CDATA[<p>Sqoop是Apache旗下的开源项目，能够在Hadoop和结构化存储系统之间进行数据传输（导入、导出），尤其是当下应用非常广泛的关系型数据库。通常，可能很多业务数据都存储在关系型数据库中，当数据规模达到一定程度后，使用关系型数据对数据进行分析可能会存在一定的瓶颈，如上亿级别记录的复杂统计分析等。将关系型数据库中的数据同步到Hadoop平台上，借助Hadoop平台的可扩展的优势，可以进行复杂的统计分析，处理效率会有一定程度的提升。
下面，我们通过安装配置Sqoop，来体验一下Sqoop在Hadoop和MySQL之间进行数据同步的特性。
准备和配置
我们在使用的主机及其应用进程部署情况，如下所示：

节点m1（10.95.3.56）：Sqoop-1.4.4，Hive-0.12.0，Namenode、JobTracker
MySQL节点（10.95.3.49）：MySQL数据库

我们先验证Sqoop能够成功连接MySQL数据库，然后验证将MySQL数据库表中的数据，同步到Hive中。
首先，在CentOS 6.4下安装MySQL数据库（服务器IP为：10.95.3.49）：
然后，在主机m1上安装最新版本的Sqoop，版本为1.4.4，直接解压缩即可：
验证Sqoop连接MySQL数</p>]]></description>
	<p>Sqoop是Apache旗下的开源项目，能够在Hadoop和结构化存储系统之间进行数据传输（导入、导出），尤其是当下应用非常广泛的关系型数据库。通常，可能很多业务数据都存储在关系型数据库中，当数据规模达到一定程度后，使用关系型数据对数据进行分析可能会存在一定的瓶颈，如上亿级别记录的复杂统计分析等。将关系型数据库中的数据同步到Hadoop平台上，借助Hadoop平台的可扩展的优势，可以进行复杂的统计分析，处理效率会有一定程度的提升。
下面，我们通过安装配置Sqoop，来体验一下Sqoop在Hadoop和MySQL之间进行数据同步的特性。
准备和配置
我们在使用的主机及其应用进程部署情况，如下所示：

节点m1（10.95.3.56）：Sqoop-1.4.4，Hive-0.12.0，Namenode、JobTracker
MySQL节点（10.95.3.49）：MySQL数据库

我们先验证Sqoop能够成功连接MySQL数据库，然后验证将MySQL数据库表中的数据，同步到Hive中。
首先，在CentOS 6.4下安装MySQL数据库（服务器IP为：10.95.3.49）：

rpm -qa | grep mysql
sudo rpm -e --nodeps mysql
yum list | grep mysql
sudo yum ins</p>			<content:encoded><![CDATA[<p>Sqoop是Apache旗下的开源项目，能够在Hadoop和结构化存储系统之间进行数据传输（导入、导出），尤其是当下应用非常广泛的关系型数据库。通常，可能很多业务数据都存储在关系型数据库中，当数据规模达到一定程度后，使用关系型数据对数据进行分析可能会存在一定的瓶颈，如上亿级别记录的复杂统计分析等。将关系型数据库中的数据同步到Hadoop平台上，借助Hadoop平台的可扩展的优势，可以进行复杂的统计分析，处理效率会有一定程度的提升。
下面，我们通过安装配置Sqoop，来体验一下Sqoop在Hadoop和MySQL之间进行数据同步的特性。
准备和配置
我们在使用的主机及其应用进程部署情况，如下所示：

节点m1（10.95.3.56）：Sqoop-1.4.4，Hive-0.12.0，Namenode、JobTracker
MySQL节点（10.95.3.49）：MySQL数据库

我们先验证Sqoop能够成功连接MySQL数据库，然后验证将MySQL数据库表中的数据，同步到Hive中。
首先，在CentOS 6.4下安装MySQL数据库（服务器IP为：10.95.3.49）：
然后，在主机m1上安装最新版本的Sqoop，版本为1.4.4，直接解压缩即可：
验证Sqoop连接MySQL数</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/597.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
