D13 辅助系统汇总flume/azkaban/sqoop

概述:

Hadoop家族的辅助系统,依然是基于mapreduce的云计算框架。只是更简单的来执行!


三种辅助系统的特点和用处如下:

①flume:Flume是Cloudera提供的日志收集系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。 Flume是一个分布式、可靠和高可用的海量日志采集、聚合和传输的系统。(1)搜集信息(2)获取记忆信息(3)传递报告间谍信息

flume是怎么完成上面三件事情的,三个组件:source: 搜集信息channel:传递信息sink:存储信息

Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFShbasehivekafka等众多外部存储系统中

一般的采集需求,通过对flume的简单配置即可实现。

②azkaban:Azkaban主要是解决Hadoop Job的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。Web用户界面;方便上传工作流;方便设置任务之间的关系;调度工作流。

③sqoop:sqoopapache旗下一款Hadoop和关系数据库服务器之间传送数据的工具。

导入数据MySQLOracle导入数据到HadoopHDFSHIVEHBASE等数据存储系统;

导出数据:Hadoop的文件系统中导出数据到关系数据库

Sqoop的原理其实就是将导入导出命令转化为mapreduce程序来执行,sqoop在接收到命令后,都要生成mapreduce程序



一、flume

A:采集目录到HDFS

采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去

根据需求,首先定义以下3大要素

采集源,即source——监控文件目录 :  spooldir

下沉目标,即sink——HDFS文件系统  :  hdfs sink

l sourcesink之间的传递通道——channel,可用file channel 也可以用内存channel


执行步骤:spooldir-hdfs.conf文件拷贝,执行命令   bin/flume-ng agent -c ./conf -f ./conf/spooldir-hdfs.conf -n a1 -Dflume.root.logger=INFO,console

测试: 往/home/hadoop/flumeSpool放文件(mv ././xxxFile /home/hadoop/flumeSpool),但是不要在里面生成文件



B:采集文件到HDFS!!!

采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去

根据需求,首先定义以下3大要素

采集源,即source——监控文件目录 :  spooldir

下沉目标,即sink——HDFS文件系统  :  hdfs sink

l sourcesink之间的传递通道——channel,可用file channel 也可以用内存channel

执行步骤:
(备注:EXEC执行一个给定的命令获得输出的源,如果要使用tail命令,必选使得file足够大才能看到输出内容)
tail-hdfs.conf文件拷贝。或者修改监测日志的.log文件路径!!
定时向某日志文件写入数据echo qfggw >> /home/hadoop/a.log
执行语句:bin/flume-ng agent -c conf -f conf/tail-hdfs.conf -n a1    即实现把追加到日志文件中的数据实时采集到hdfs
然后查看hdfs的flume/events文件夹下日志文件一直在生成,或者用tail -F test.log查看日志的动态添加!


   
   
  1. # Name the components on this agent
  2. a1.sources = r1
  3. a1.sinks = k1
  4. a1.channels = c1
  5. #exec 指的是命令
  6. # Describe/configure the source
  7. a1.sources.r1.type = exec
  8. #F根据文件名追中, f根据文件的nodeid追中
  9. a1.sources.r1.command = tail -F /home/hadoop/log/test.log
  10. a1.sources.r1.channels = c1
  11. # Describe the sink
  12. #下沉目标
  13. a1.sinks.k1.type = hdfs
  14. a1.sinks.k1.channel = c1
  15. #指定目录, flume帮做目的替换
  16. a1.sinks.k1.hdfs.path =/flume/events/%y-%m-%d/%H%M/
  17. #文件的命名, 前缀
  18. a1.sinks.k1.hdfs.filePrefix = events-
  19. #10 分钟就改目录,可想而知如果是京东大数据,也许得一个月一个文件夹
  20. a1.sinks.k1.hdfs.round = true
  21. a1.sinks.k1.hdfs.roundValue =10
  22. a1.sinks.k1.hdfs.roundUnit = minute
  23. #文件滚动之前的等待时间(秒) 过了三秒钟就切换到新文件中
  24. a1.sinks.k1.hdfs.rollInterval =3
  25. #文件滚动的大小限制(bytes)。。在大规模日志存储上万条才可能新建一个文件,因为条数限制可能达不到规定字节。
  26. a1.sinks.k1.hdfs.rollSize =500
  27. #写入多少个event数据后滚动文件(事件个数)
  28. a1.sinks.k1.hdfs.rollCount =20
  29. #5个事件就往里面写入。得到每个文件里有5条记录----其实是多个条件来限制日志的生成:周期性切到新文件;文件大小限制强制切换新文件;事件数够即切换新文件
  30. a1.sinks.k1.hdfs.batchSize =5
  31. #用本地时间格式化目录
  32. a1.sinks.k1.hdfs.useLocalTimeStamp = true
  33. #下沉后, 生成的文件类型,默认是Sequencefile,可用DataStream,则为普通文本
  34. a1.sinks.k1.hdfs.fileType =DataStream
  35. # Use a channel which buffers events in memory
  36. a1.channels.c1.type = memory
  37. a1.channels.c1.capacity =1000
  38. a1.channels.c1.transactionCapacity =100
  39. # Bind the source and sink to the channel
  40. a1.sources.r1.channels = c1
  41. a1.sinks.k1.channel = c1


二、azkaban

主要工作是:将本地job的压缩文件提交到azkaban的web前端,然后执行,查看测试即可。

执行步骤:

web服务器

azkaban web服务器目录下执行启动命令

bin/azkaban-web-start.sh

:web服务器根目录运行

或者启动到后台

nohup  bin/azkaban-web-start.sh  1>/tmp/azstd.out  2>/tmp/azerr.out &

执行服务器

在执行服务器目录下执行启动命令

bin/azkaban-executor-start.sh

:只能要执行服务器根目录运行 

执行以上两句即可启动,可以回车自动切到后台。

启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://server:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码admin,admin,点击 login.


可以执行:hdfs,mapreduce,hive等job程序




三、sqoop

常用语句

①sqoop从本地数据库导入文件到HDFS,因为只有本地有数据库,所以导入本地

   
   
  1. bin/sqoop import   \
  2. --connect jdbc:mysql://localhost:3306/test   \
  3. --username root  \
  4. --password root   \
  5. --table emp   \
  6. --m 1 
然后执行:查看数据库内容
   
   
  1. hadoop fs -cat /user/hadoop/emp/part-m-00000
文件在:user/hadoop/emp,hive/part-m-00000

②将mysql数据表导入到hive中
     
     
  1. bin/sqoop import--connect jdbc:mysql://hdp-node-01:3306/test --username root --password root
  2. --table emp --hive-import--m 1

导入到HDFS指定目录

    
    
  1. bin/sqoop import \
  2. --connect jdbc:mysql://hdp-node-01:3306/test \
  3. --username root \
  4. --password root \
  5. --target-dir /queryresult \
  6. --table emp --m 1

④导出hdfs的数据表到本地MySQL数据库
首先创建导入的本地表

 CREATE TABLE employee (

   id INT NOT NULL PRIMARY KEY,

   name VARCHAR(20),

   deg VARCHAR(20),

   salary INT,

   dept VARCHAR(10));

然后执行导出

bin/sqoop export \

--connect jdbc:mysql://hdp-node-01:3306/test \

--username root \

--password root \

--table employee \

--export-dir /user/hadoop/emp/                         #导出路径


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值