把Flume Source(netcat类型),从终端上不断给Flume

Source发送消息,Flume把消息汇集到Sink(avro类型),由Sink把消息推送给Spark Streaming并处理后输出

版本信息:spark2.4.0 Flume 1.7.0

(基于pyspark)

一、Flume安装

①、文件导入

# 将apache-flume-1.7.0-bin.tar.gz解压到/usr/local目录下
sudo tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr/local
#将解压的文件修改名字为flume,简化操作
sudo mv ./apache-flume-1.7.0-bin ./flume
#把/usr/local/flume目录的权限赋予当前登录Linux系统的用户,这里假设是hadoop用户
sudo chown -R hadoop:hadoop ./flume

②、变量配置

#配置环境变量
sudo vim ~/.bashrc #加入下面路径
export FLUME_HOME=/usr/local/flume
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin

③、flume-env.sh 配置文件修改

cd /usr/local/flume/conf
sudo cp ./flume-env.sh.template ./flume-env.sh
sudo vim ./flume-env.sh #加入java路径,根据各自路径配置
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;

④、查看Flume版本

cd /usr/local/flume
./bin/flume-ng version

二、Avro中anent配置文件建立

cd /usr/local/flume/conf2.sudo
vim ./flume-to-spark.conf

新建文件flume-to-spark.conf

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1 #receive message from port 33333
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 33333 #send message through port 44444
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = localhost
a1.sinks.k1.port = 44444 # Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000000
a1.channels.c1.transactionCapacity = 1000000 # Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

1.Flume suorce类为netcat,绑定到localhost的33333端口, 消息可以通过telnet localhost 33333 发送到flume suorce

2.Flume Sink类为avro,绑定44444端口,flume sink通过 localhost 44444端口把消息发送出来。而spark streaming程序一直监听44444端口。

三、spark配置

①、下载spark-streaming-kafka-0-8_2.11-2.4.0.jar

2.11对应scala,2.4.0对应spark版本(根据自己配置版本下载)

下载地址:

https://repo1.maven.org/maven2/org/apache/spark/spark-streaming-flume_2.11/2.4.1/spark-streaming-flume_2.11-2.4.1.jar

把这个jar文件放到/usr/local/spark/jars/flume目录下

②、sudo cp ./spark-streaming-kafka-0-8_2.11-2.4.0.jar /usr/local/spark/jars/flume/

③、修改spark目录下conf/spark-env.sh文件中的SPARK_DIST_CLASSPATH变量.把flume的相关jar包添加到此文件中。

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoopclasspath):$(/usr/local/hbase/bin/hbaseclasspath):/usr/local/spark/jars/flume/*:/usr/local/flume/lib/*

四、编写spark程序使用Flume数据源

创建python文件

cd /usr/local/spark/mycode
mkdir flume
cd flume
sudo vim FlumeEventCount.py

代码如下:

from __future__ import print_function
import sys
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.flume import FlumeUtils
import pyspark if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: flume_wordcount.py <hostname> <port>", file=sys.stderr)
exit(-1)
sc = SparkContext(appName="FlumeEventCount")
ssc = StreamingContext(sc, 10)
hostname= sys.argv[1]
port = int(sys.argv[2])
stream=FlumeUtils.createStream(ssc,hostname,port,pyspark.StorageLevel.MEMORY_AND_DISK_SER_2)
stream.pprint()
stream.count().map(lambda cnt : "Recieve " + str(cnt) +" Flume events!!!!").pprint()
ssc.start()
ssc.awaitTermination()

五、效果测试

首先启动Spark streaming程序(基于pyspark) (终端1)

入参为本地localhose 端口44444(该端口对应flume-to-spark.conf中的sinks端口)

/usr/local/spark/bin/spark-submit --driver-class-path /usr/local/spark/jars/*:/usr/local/spark/jars/flume/* ./FlumeEventCount.py localhost 44444

然后启动一个新的终端,启动Flume Agent (终端2)

cd /usr/local/flume
bin/flume-ng agent --conf ./conf --conf-file ./conf/spark-streaming.conf --name a1 -Dflume.root.logger=INFO,console

最后再启动一个新的终端连接33333端口 (终端3)

telnet localhost 33333#输入hello world

终端1结果如下:(分开返回两条信息)




学习交流,有任何问题还请随时评论指出交流。

Spark Streaming处理Flume数据练习的更多相关文章

  1. spark streaming集成flume

    1. 安装flume flume安装,解压后修改flume_env.sh配置文件,指定java_home即可. cp hdfs jar包到flume lib目录下(否则无法抽取数据到hdfs上): $ ...

  2. Spark学习之路(十五)—— Spark Streaming 整合 Flume

    一.简介 Apache Flume是一个分布式,高可用的数据收集系统,可以从不同的数据源收集数据,经过聚合后发送到分布式计算框架或者存储系统中.Spark Straming提供了以下两种方式用于Flu ...

  3. Spark 系列(十五)—— Spark Streaming 整合 Flume

    一.简介 Apache Flume 是一个分布式,高可用的数据收集系统,可以从不同的数据源收集数据,经过聚合后发送到分布式计算框架或者存储系统中.Spark Straming 提供了以下两种方式用于 ...

  4. 通过Spark Streaming处理交易数据

    Apache Spark 是加州大学伯克利分校的 AMPLabs 开发的开源分布式轻量级通用计算框架. 由于 Spark 基于内存设计,使得它拥有比 Hadoop 更高的性能(极端情况下可以达到 10 ...

  5. Spark Streaming 整合 Flume

    Spark Streaming 整合 Flume ​ 一.简介二.推送式方法        2.1 配置日志收集Flume        2.2 项目依赖        2.3 Spark Strea ...

  6. Spark Streaming揭秘 Day16 数据清理机制

    Spark Streaming揭秘 Day16 数据清理机制 今天主要来讲下Spark的数据清理机制,我们都知道,Spark是运行在jvm上的,虽然jvm本身就有对象的自动回收工作,但是,如果自己不进 ...

  7. Spark Streaming接收Kafka数据存储到Hbase

    Spark Streaming接收Kafka数据存储到Hbase fly spark hbase kafka 主要参考了这篇文章https://yq.aliyun.com/articles/60712 ...

  8. Spark Streaming从Flume Poll数据案例实战和内幕源码解密

    本节课分成二部分讲解: 一.Spark Streaming on Polling from Flume实战 二.Spark Streaming on Polling from Flume源码 第一部分 ...

  9. cdh环境下,spark streaming与flume的集成问题总结

    文章发自:http://www.cnblogs.com/hark0623/p/4170156.html  转发请注明 如何做集成,其实特别简单,网上其实就是教程. http://blog.csdn.n ...

随机推荐

  1. redis学习之——主从复制(replication)

    准备:拥有linux环境,并安装redis mater:主机,进行写操作 slave:从机,进行读操作 一.配置 继续前边的学习.我们是拷贝redis.conf,文件到了/root /redis 下. ...

  2. vue+ springboot 分页(两种方式:sql分页 & PageHelper 分页)

    方法一:sql分页 思路:使用数据库进行分页   前端使用element-ui的分页组件,往后台传第几页的起始行offest 以及每页多少行pageSize,后台根据起始行数和每页的行数可以算出该页的 ...

  3. [日常摸鱼]bzoj1038 [ZJOI2008]瞭望塔-模拟退火/几何

    题意:给一条平面内$n$个点的折线,要求在折线上搞一个高度$h$的瞭望塔,能够看见折线上所有的点,求$h$的最小值($n \leq 300$) updata2018.1.21 正解半平面交在另一篇里面 ...

  4. Eureka系列(四) 获取服务Server端具体实现

    获取服务 Server端流程   我们先看下面这张图片,这张图片简单描述了下我们EurekaClient在调用EurekaServer 提供的获取服务Http接口,Server端实现接口执行的大致流程 ...

  5. pytest接口测试轻松入门

    通过Postman请求结果如下图: 那我们怎么用pytest进行测试呢? 在接口测试,我们要用到requests包,实现代码如下: import pytest import allure import ...

  6. js--数组的filter()过滤方法的使用

    前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...

  7. 基于Python实现环形队列高效定时器

    定时器Python实现代码 import time import redis import multiprocessing class Base: """ redis配置 ...

  8. Android自定义ViewGroup-入门

    1.效果 2步骤 自定义ViewGroup的步骤是 1.1测量onMeasure /** * 获取子view的个数 * 逐个测量其宽高 得到整个ViewGroup的宽高 * * @param widt ...

  9. 解决CentOS 8 Docker容器无法上网的问题

    发布于:2020-11-28  Docker  2条评论  3,051 views  如需VPS代购.PHP开发.服务器运维等服务,请联系博主QQ:337003006 CentOS 8已经发行好长一段 ...

  10. Double 值比较大小 Long值比较大小

    BigDecimal outValue = new BigDecimal(sapVerifyInventory.getQuantity()); BigDecimal inValue = new Big ...