前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 Flume 和 EMR 构建低成本大数据应用

基于 Flume 和 EMR 构建低成本大数据应用

原创
作者头像
liubang01
修改2018-08-21 10:02:08
4.5K5
修改2018-08-21 10:02:08
举报

1 摘要

Flume 是一个分布式的日志收集系统,它可以将应用服务器产生的日志、消息中间件 (比如 kafka) 的消息等其他数 据串联起来发送到指定的存储以供数据分析使用。EMR 是腾讯云提供的托管 Hadoop 服务,相比自建 hadoop 集群 EMR 提供了完善的集群管理、服务监控、安全管理、以及存储分离等特性,区别于自建 EMR 在计算存储分离方便 做了大量优化工作以降低在使用 Hadoop 相关服务时候的成本,本文核心介绍如何使用 Flume、EMR、对象存储

(COS)来构建低成本数据仓库应用, 总体应用架构图如下:

Flume数据流
Flume数据流

如果上图所示,需要分析的数据可能来自如下几个地方:

1. 应用服务产生的日志 2. kafka 等消息中间件 3. 其他数据源比如 http,或者网络服务器

flume 在接受到这些数据之后可以根据您的需要选择输出目的目的地,本篇文章主要介绍三种类型的存储

• HDFS 常规的分布式文件系统 • COS 对象存储 • CFS 文件存储

如果您对成本非常敏感,建议您设置输出目的地为 COS,本文也会着重介绍如何将基于 COS 的 Sink 设置。

2 安装 Flume

2.1 下载 Flume 您可以使用如下命令来获取 Flume,本文以 1.7.0 为例

代码语言:javascript
复制
         git clone -b release-1.7.0 https://github.com/apache/flume.git  

2.2 编译安装 Flume 使用如下命令编译 Flume,因为 EMR 的 hadoop 是 2.7.3,因此在编译的时候需要指定基于 hadoop2 进行编译。

代码语言:shell
复制
  mvn package -Dmaven.javadoc.skip=true -DskipTests -Dtar -Dhadoop2.version=2.7.3  -Phadoop-2

编译成功后将 flume-ng-dist/target/apache-flume-1.7.0-bin.tar.gz 解压到安装目录

2.3 兼容性处理

进入到 flume 的目录后执行如下命令

代码语言:javascript
复制
rm -rf ./lib/httpclient-4.2.1.jar
rm -rf ./lib/httpcore-4.1.3.jar

删除这两个 jar 的原因是会和 hadoop 中的 httpclient 库冲突,当然您也可以删除前备份这两个 jar

3 配置 Flume

3.1 拷贝 Hadoop 登录任意一台 EMR 集群节点,将 hadoop 拷贝到 Flume 所在的服务器

代码语言:shell
复制
#JDK路径,EMR使用的JDK强制在该路径下
 ls -al /usr/local/jdk/ 
#在Flume节点执行如下命令
mkdir -p /data/emr/hdfs/logs
mkdir -p /data/emr/hdfs/tmp
#hadoop 在EMR所在路径为
ls -al /usr/local/service/hadoop

拷贝过来后务必确认以下要点: • JDK 路径和 EMR 节点保持完全一致 • 创建/data/emr/hdfs/logs 和/data/emr/hdfs/tmp 目录 • hadoop 路径务必和 EMR 节点路径一致在/usr/local/service/hadoop

3.2 确认 COS 配置项 在 hadoop 相关软件拷贝成功后,确认 hadoop 中的 cos 配置文件中存在以下配置,具体路径为:/usr/local/service/hadoop/etc/hadoop/core-site.xml

代码语言:html
复制
     <property>
       <name>fs.cos.userinfo.secretId</name>
       <value>秘钥</value>
     </property>
     <property>
       <name>fs.cos.userinfo.appid</name>
       <value>账户ID</value>
     </property>
     <property>
       <name>fs.cos.userinfo.secretKey</name>
       <value>秘钥key</value>
     </property>
     <property>
       <name>fs.cosn.block.size</name>
       <value>1048576</value>
     </property>
     <property>
       <name>fs.cosn.impl</name>
       <value>org.apache.hadoop.fs.cosnative.NativeCosFileSystem</value>
     </property>
     <property>
       <name>fs.cosn.userinfo.region</name>
       <value>ap-guangzhou</value>
     </property>
     <property>
       <name>fs.cosn.local_block_size</name>
       <value>2097152</value>
     </property>

说明:如果在创建 EMR 集群的时候选择了 COS,那么这些配置将会自动生成,具体值项不清楚怎么获取可以提工 单或者咨询客服。

3.3 Flume 配置 在 flume 的 conf 目录下新增加测试配置,demo.conf 内容如下

代码语言:shell
复制
     #agent and component of agent
     search.sources = so
     search.sinks = si
     search.channels = sc

     # Configure a channel that buffers events in memory:
     search.channels.sc.type = memory
     search.channels.sc.capacity = 20000
     search.channels.sc.transactionCapacity = 100


     # Configure the source:
     search.sources.so.channels = sc
     search.sources.so.type = exec
     search.sources.so.command = tail -F /data/logs/demo.log

     # Describe the sink:
     search.sinks.si.channel = sc
     search.sinks.si.type = hdfs
     search.sinks.si.hdfs.path = cosn://bucketname/demo
     search.sinks.si.hdfs.writeFormat = Text
     search.sinks.si.hdfs.fileType = DataStream
     search.sinks.si.hdfs.rollSize=0
     search.sinks.si.hdfs.rollCount = 10000
     search.sinks.si.hdfs.batchSize=1000
     search.sinks.si.rollInterval=1

更多详细配置,请参考https://flume.apache.org/FlumeUserGuide.html#hdfs-sink

4 启动服务并验证

4.1 启动 flume 的 agent 服务 进入 flume 安装目录,执行如下命令启动服务:

代码语言:shell
复制
bin/flume-ng agent -c conf -f ./conf/demo.conf --name demo

启动服务后观察日志是否存在异常,如果有如下异常请忽略

4.2 验证日志是否生成成功 在 flume 启动成功后,您可以使用如下命令来查看文件是否生成成功

代码语言:javascript
复制
         hadoop fs -ls cosn://bucket/demo

5 启动分析任务

在日志推送成功后,您可以通过如下的方式进行数据分析

• 把日志推送到 hive 表的 storageLocation 下进行 ETL

• 直接生产 ORC 格式的数据然后通过 Presto 来进行查询

• 通过 spark 或者 MR 写程序分析

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据处理套件 TBDS
腾讯大数据处理套件(Tencent Big Data Suite,TBDS)依托腾讯多年海量数据处理经验,基于云原生技术和泛 Hadoop 生态开源技术提供的可靠、安全、易用的大数据处理平台。 TBDS可在公有云、私有云、非云化环境,根据不同数据处理需求组合合适的存算分析组件,包括 Hive、Spark、HBase、Flink、Presto、Iceberg、Elasticsearch、StarRocks 等,以快速构建企业级数据湖仓。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档