离线数仓(二)

1、Lzo压缩

  • (1)将编译好后的hadoop-lzo-0.4.20.jar 放入hadoop-2.7.2/share/hadoop/common/
  • [atguigu@hadoop103 common]$ pwd /opt/module/hadoop-2.7.2/share/hadoop/common [atguigu@hadoop103 common]$ ls hadoop-lzo-0.4.20.jar
  • (2)同步hadoop-lzo-0.4.20.jar到hadoop102、hadoop104
  • [atguigu@hadoop103 common]$ xsync hadoop-lzo-0.4.20.jar
  • (3)mapred-site.xml增加配置支持LZO压缩
  • 添加以下内容
  • <property> <name>io.compression.codecs</name> <value> org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.SnappyCodec, com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec </value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property>
  • (4)同步mapred-site.xml到hadoop103、hadoop104
  • [atguigu@hadoop103 hadoop]$ xsync mapred-site.xml
  • (5)启动及查看集群
  • [atguigu@hadoop103 hadoop-2.7.2]$ hd start
  • 或不用启动脚本
  • [atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-dfs.sh [atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh
  • (6)测试
  • yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount -Dmapreduce.output.fileoutputformat.compress=true -Dmapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzopCodec /input /output
  • (7)为lzo文件创建索引
  • hadoop jar ./share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /output
    在这里插入图片描述
    在这里插入图片描述

2、kafka

2.1、kafka 的安装

  • (1)解压安装包
  • [atguigu@hadoop103 soft]$ tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/
  • (2)修改解压后的文件名称
  • [atguigu@hadoop103 module]$ mv kafka_2.11-0.11.0.0/ kafka
  • (3)修改配置文件
  • [atguigu@hadoop103 kafka]$ cd config/ [atguigu@hadoop103 config]$ vi server.properties
  • 将 broker.id=0 改为 103
  • (4)配置环境变量
  • [atguigu@hadoop103 module]$ sudo vi /etc/profile #KAFKA_HOME export KAFKA_HOME=/opt/module/kafka export PATH=$PATH:$KAFKA_HOME/bin [atguigu@hadoop103 module]$ source /etc/profile
  • (5)分发安装包
  • [atguigu@hadoop103 module]$ xsync kafka/
  • 注意:分发之后配置其他机器的环境变量
  • (6)分别在hadoop103和hadoop104上修改配置文件/opt/module/kafka/config/server.properties中的broker.id=102、broker.id=104(注:broker.id不得重复
  • (7)创建kafka集群的启动关闭脚本
  • [atguigu@hadoop103 bin]$ vim kf
  • 内容如下
  • #!/bin/bash #只接受start和stop参数 if(($#!=1)) then echo 请输入start或stop! exit; fi if [ $1 = start ] then xcall kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties elif [ $1 = stop ] then xcall kafka-server-stop.sh else echo 请输入start或stop! fi
  • (8)增加脚本执行权限
  • [atguigu@hadoop103 bin]$ chmod u+x kf
  • (8)kf集群启动脚本
  • [atguigu@hadoop103 bin]$ kf start
  • (9)kf集群停止脚本
  • [atguigu@hadoop103 bin]$ kf stop

2.2、kafka Manager 的使用

  • 运行 kafka-manager
  • [atguigu@hadoop103 kafka-manager-1.3.3.15]$ bin/kafka-manager
  • [atguigu@hadoop103 kafka-manager-1.3.3.15]$ bin/kafka-manager > start.log 2>&1 & (后台运行)
  • 从第一个中会显示端口号 (9000)
  • 于网站中打开 hadoop103:9000

在这里插入图片描述

2.3、Kafka Monitor

  • 上传jar包KafkaOffsetMonitor-assembly-0.4.6.jar到集群
  • 在/opt/module/下创建kafkamonitor
  • 将上传的jar包放入刚创建的目录下kafkamonitor文件夹中
  • 在/opt/module/kafkamonitor目录下创建启动脚本start.sh,内容如下:
  • #!/bin/bash java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \ com.quantifind.kafka.offsetapp.OffsetGetterWeb \ --offsetStorage kafka \ --kafkaBrokers hadoop102:9092,hadoop103:9092,hadoop104:9092 \ --kafkaSecurityProtocol PLAINTEXT \ --zk hadoop102:2181,hadoop103:2181,hadoop104:2181 \ --port 8086 \ --refresh 10.seconds \ --retain 2.days \ --dbName offsetapp_kafka &
  • 启动KafkaMonitor
  • [atguigu@hadoop103 kafkamonitor]$ ./start.sh
  • 登录页面hadoop103:8086端口查看详情

在这里插入图片描述

2.4、kafka tool

  • 下载 kafka tool

在这里插入图片描述

在这里插入图片描述

2.5、 Kafka生产消息

  • [atguigu@hadoop103 kafka]$ bin/kafka-console-producer.sh \--broker-list hadoop102:9092 --topic topic_start>hello world>atguigu atguigu

2.6、Kafka消费消息

  • [atguigu@hadoop103 bin]$ kafka-console-consumer.sh
  • [atguigu@hadoop103 bin]$ kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic test1
    在这里插入图片描述

在这里插入图片描述

3、第一层采集通道

3.1、第一层采集脚本source 的选择

读取日志中的数据

  • ExecSource:可以执行一个linux命令,例如tail -f 日志文件
    注意:不用!不安全,可能丢数据
  • SpoolingDirSource:可以读取一个目录中的文本文件!
    注意:保证目录中没有重名的文件!保证目录中的文件都是封闭状态,一旦放入目录中,不能再继续写入
  • TailDirSource:接近实时的读取指定文件!断电续传功能(目前使用此source

3.2、KafkaChannel

优点

  • 基于kafka的副本功能,提供了高可用性! event被存储在 kafka 中!即便 agent 挂掉或broker挂掉,依然可以让sink从channel中读取数据!

应用场景

  • KafkaChannel 和 sink 和 source 一起使用,单纯作为 channel
  • KafkaChannel+拦截器+source,只要source 把数据写入到kafka就完成了(目前使用场景)
  • kafkachannel+sink,使用flume将kafka中的数据写入到其他的目的地,例如 hdfs!
  • 为了在上述场景工作,kafkaChannel可以配置生产者和消费者参数
Event\Header,body\
ProducerRecord
ExecSource
kafkaProducer
kafkaChannel
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值