Sqoop/Flume/Logstash数据采集软件的对比与教程
Sqoop/Flume/Logstash 说明
Apache Sqoop
Apache Sqoop:是一款Hadoop
和关系数据库
之间传送数据的工具。
导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
导出数据:从Hadoop的文件系统中导出数据到关系数据库;
工作机制:将导入或导出命令翻译成mapreduce程序
来实现,所以安装sqoop的前提是已经具备java和安装在Hadoop client的环境。
Apache Flume
Apache Flume:是一个分布式、可靠(事务)、和高可用(故障转移)的海量日志
采集、汇聚和传输大量流式事件数据
。
Flume可以采集文件、文件夹、socket数据包(网络端口)、kafka、mysql数据库等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中。
Flume中最核心的角色是agent
,Flume采集系统就是由一个个agent连接起来所形成的一个或简单或复杂的数据传输通道(形象点理解为Agent的网络)。对于每一个Agent来说,它负责从数据源接收数据,并发往下一个目的地。每一个agent相当于一个数据(被封装成Event对象)传递员,内部有三个组件:Source(采集组件)、Channel(传输通道组件)、Sink(下沉组件)。
Flume更多的应用场景是大数据技术栈的数据收集。
Logstash
Logstash是著名的开源数据栈ELK
(ElasticSearch,Logstash,Kibana)中的那个L。几乎在大部分的情况下,ELK作为一个栈是被同时使用的。在你的数据系统使用ElasticSearch的情况下,Logstash是首选。
ELK一般用于运维日志分析,或集中化日志管理。
Flume与Logstash对比
- 两个软件其思想架构大致相同。
- 功能上:Flume比较注重于
数据的传输
,数据可靠;logstash比较注重于字段的预处理
,Logstash有几十个插件,配置灵活。 - Logstash配置简单灵活,Flume配置复杂强调自定义开发。
Sqoop 教程
Sqoop的主要功能如下
导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;
导出数据:从Hadoop的文件系统中导出数据到关系数据库;
工作机制:将导入或导出命令翻译成mapreduce程序来实现
Sqoop安装
cd /opt/soft
wget http://archive.apache.org/dist/sqoop/1.99.7/sqoop-1.99.7-bin-hadoop200.tar.gz
tar zxf sqoop-1.99.7-bin-hadoop200.tar.gz
mv sqoop-1.99.7-bin-hadoop200 /opt/server/sqoop-1.99.7
cd /opt/server/sqoop-1.99.7
vim conf/sqoop.properties
# 修改配置文件中,hadoop配置文件的目录
org.apache.sqoop.submission.engine.mapreduce.configuration.directory=/opt/server/hadoop-3.3.2/etc/hadoop
# 全局替换掉配置文件中的 @BASEDIR@ @LOGDIR@
# 设置日志文件的目录
0,%s/@LOGDIR@/\/opt\/server\/sqoop-1.99.7\/logs/g
# 设置数据的存放目录
0,%s/@BASEDIR@/\/opt\/server\/sqoop-1.99.7\/bin\/basedir/g
# 修改环境变量
vim /etc/profile
export SQOOP_HOME=/opt/server/sqoop-1.99.7
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
# 将 mysql 的驱动放到sqoop的server/lib目录下
cp /opt/server/hive-3.1.3/lib/mysql-connector-java-5.1.47.jar /opt/server/sqoop-1.99.7/server/lib
# derby数据库驱动 替换成最新版本。如果不替换可能会报错
cp /opt/server/hive-3.1.3/lib/derby-10.14.1.0.jar /opt/server/sqoop-1.99.7/server/lib
rm /opt/server/sqoop-1.99.7/server/lib/derby-10.8.2.2.jar
# 修改hadoop的core-site.xml文件
vim /opt/server/hadoop-3.3.2/etc/hadoop/core-site.xml
# 注意 root 表示当前用户
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
# 初始化和验证
cd /opt/server/sqoop-1.99.7/bin
sqoop2-tool upgrade
sqoop2-tool verify
# 服务器 您需要在集群中的单个节点上安装服务器。该节点将作为所有Sqoop客户端的入口点。
# 客户端 客户端可以安装在任意数量的机器上。
# sqoop服务端,启动与停止
sqoop2-server start
sqoop2-server stop
# jps命令中查看是否有 SqoopJettyServer 进程
jps
# sqoop客户端
sqoop2-shell
Sqoop使用
# 启动客户端
sqoop2-shell
# 连接到sqoop服务器
show server --all # 查看连接的server信息
set server --host node1 --port 12000 # 设置server,默认值 localhost 12000
# 验证连接
# 查看sqoop支持的连接器
show connector
# 创建mysql连接
create link -c generic-jdbc-connector
mysqldb # 连接名称
com.mysql.jdbc.Driver # 数据库类
jdbc:mysql://8.129.215.19:3333/aimini_admin?autoReconnect=true&failOverReadOnly=false&useSSL=false # 数据库连接字符串,如果没有useSSL会报错 GENERIC_HDFS_CONNECTOR_0001
root # 账号
xxxxxx # 密码
Identifier enclose: 空格 # 如果这里直接回车会报错:GENERIC_JDBC_CONNECTOR_0016
# 创建hdfs连接
create link -c hdfs-connector # 或者 create link -connector hdfs-connector
hdfs # 连接名称
hdfs://node1:9000/sqoop/demo1 # hadoop配置文件core-site.xml中的fs.defaultFS值
# 创建mysql导数据到hdfs的job
create job -f mysqldb -t hdfs
mysql2hdfs # job名
Schema name:数据库名
Table name:表名
Output directory: /sqoop/demo1 # 注意这个目录是空目录,不然会报错 GENERIC_HDFS_CONNECTOR_0007
# 创建hdfs导数据到mysql的job
create job -f hdfs -t mysqldb
hdfs2mysql # job名
# 显示job
show job
# 启动job
start job -n mysql2hdfs
Logstash 教程
最后更新于 2022-05-20 17:07:08 并被添加「」标签,已有 1000 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭