首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EMR(弹性MapReduce)入门之组件Flume和Sqoop(十四)

EMR(弹性MapReduce)入门之组件Flume和Sqoop(十四)

原创
作者头像
小司机带你入门EMR
修改2020-02-14 18:20:27
1.6K0
修改2020-02-14 18:20:27
举报
文章被收录于专栏:EMR冲鸭EMR冲鸭

Sqoop

介绍

Sqoop:SQL-to-Hadoop

连接传统关系型数据库和Hadoop的桥梁 把关系型数据库的数据导入到 Hadoop 系统 ( 如 HDFS、HBase 和 Hive) 中; 把数据从 Hadoop 系统里抽取并导出到关系型数据库里

利用MapReduce,批处理方式进行数据传输

Sqoop的优势

  1. 高效、可控的利用资源,任务并行度、超时时间等
  2. 数据类型映射与转换可自动进行,用户也可自定义
  3. 支持多种数据库(MySQL、Oracle、PostgreSQL)

Sqoop架构

Sqoop:SQL–to–Hadoop 

正如Sqoop的名字所示:Sqoop是一个用来将关系型数据库和Hadoop中的数据进行相互转移的工具,可以将一个关系型数据库(例如Mysql、Oracle)中的数据导入到Hadoop(例如HDFS、Hive、Hbase)中,也可以将Hadoop(例如HDFS、Hive、Hbase)中的数据导入到关系型数据库(例如Mysql、Oracle)中。

Sqoop常见故障

1、sqoop将mysql表导入到hive中报错

... 51 more

Caused by: java.net.UnknownHostException: hdfsCluster

... 69 more

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.IllegalArgumentException: java.net.UnknownHostException: hdfsCluster)

19/09/26 15:58:48 ERROR ql.Driver: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.IllegalArgumentException: java.net.UnknownHostException: hdfsCluster)

19/09/26 15:58:48 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive CliDriver exited with status=1

原因分析:

用户的hive数据库的location设置出错,建表的时候将location设置成为了hdfsCluster而不是集群hdfs的位置,导致报错。

解决方案:修改hive数据库的location

2、sqoop作业运行失败

报错信息如下:main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

原因分析:java安全策略问题,通过修改jdk安全策略文件解决

解决方案:

修改%JAVA_HOME%\jre\lib\security\java.policy,添加如下授权:

permission javax.management.MBeanTrustPermission "register";

Flume

介绍

Apache Flume是一个分布式的、可靠的、可用的系统,用于有效地收集、聚合和将大量日志数据从许多不同的源移动到一个集中的数据存储。

Apache Flume的使用不仅仅局限于日志数据聚合。由于数据源是可定制的,

Flume可以用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息和几乎所有可能的数据源。

优点

1.可以和任意集中式存储进行集成(HDFS,HBASE)

2.输入的数据速率大于写入存储目的地速率,flume会进行缓冲

3.flume提供上下文路由(数据流路线)

4.flume中的事物基于channel,使用了两个事物模型(sender+receiver)确保消息被可靠发送

5.flume是 可靠的,容错的,可扩展的。

架构

Agent结构

Agent:Agent是Flume中的核心组件,用来收集数据。一个Agent就是一个JVM进程,它是Flume中最小的独立运行的单元。

在Agent中有三个组件,分别为Source,Channel,Sink

Source:数据源。负责将数据捕获后进行特殊的格式化,然后再封装在Event中,再将数据推入到Channel中

常见类型: :avro 、exec、 jms、spooling directory、source 、kafka 、netcat 等

Channel:连接source和sink的组件,可以理解为数据缓冲区(数据队列),可以将event暂存在内存上,也可以持久化到本地磁盘上,直到sink消费完。

常见类型:Memory、JDBC、File等

Sink:数据下沉。从channel中取出数据后,分发到别的地方,比如HDFS或者HBase等,也可以是其他Agent的source。当日志数据量小的时候,可以将数据存在文件系统中,并设定一定的时间间隔来存储数据。

常见类型:HDFS、Logger、File Roll、Avro、Thrift、HBase等

Flume常见故障

1、channel 为file channel 运行时报OOM:

解决办法:

File Channel默认的java内存分配太少,只有20M,提高内存分配:修改为50M,不再报错.

vim conf/flume-env.sh

export JAVA_OPTS="-Xms50m -Xmx50m -Dcom.sun.management.jmxremote"

2、在非Hadoop集群安装Flume,从kafka采集数据到HDFS,存储到HDFS时候报错:

原因:

缺少Hadoop相关的jar包,从Hadoop集群的jar包中复制到flume/lib/文件下即可:

缺少的jar包如下:

commons-configuration-1.6.jar hadoop-auth-2.6.0-cdh5.15.0.jar hadoop-common-2.6.0-cdh5.15.0.jar hadoop-hdfs-2.6.0.jar htrace-core-3.2.0-incubating.jar htrace-core4.4.0.1-incubating.jar

区别

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Sqoop
    • 介绍
      • Sqoop的优势
        • Sqoop架构
          • Sqoop常见故障
          • Flume
            • 介绍
              • 优点
                • 架构
                  • Flume常见故障
                  • 区别
                  相关产品与服务
                  数据库
                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档