把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. mongodb 学习之——mongod --help 中文解释

    中文解释如下: -------------------------------------------------------------------------------- --quiet # 安 ...

  2. scala&&spark学习参考文章

    http://www.cnblogs.com/xing901022/p/5944297.html    牛逼

  3. 解压版mysql+免破解版Navicat,好用!

    解压版mysql安装流程 获取mysql压缩包 获取地址: 链接:https://pan.baidu.com/s/1HqdFDQn_6ccPM0gOftApIg 提取码:n19t 获取压缩包后可安装压 ...

  4. Ionic学习记录

    1.跨域问题 浏览器中的运行 当你运行 ionic serve 时发生了什么呢? 启动了一个本地 web 服务器 你的浏览器打开并定位到本地服务器地址 这让你看着你的应用加载到你电脑上一个浏览器里,地 ...

  5. 淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)

    上一篇的同学拿到了bigo和腾讯的offer,这一次的分享来自两位同学的面试综合,他们分别拿到了菜鸟.嘀嘀.盒马的多个offer,由于面试的时间跨度时间太长,且面试的部门太多,只能回忆到具体的面试题, ...

  6. vue 分支结构

    分支循环结构 分支循环结构指令 v-if v-else v-else-if v-show v-if 指令 可以直接在元素中添加指令,添加判断的值 最后运行可以得到结果是:  v-show v-show ...

  7. Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

    hive安装时遇到的问题 解压后指定了hive-env.sh文件的Hadoop_home  & hive_conf 两个参数后,先直接bin/hive 用Derby数据库启动一下,然后再配置其 ...

  8. npm的下载与安装

    1.Node (1)什么是Node.js Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. (2)Node ...

  9. 工具-Git与GitHub-GitHub使用(99.5.3)

    @ 目录 1.在github中添加公钥 2.克隆项目 3.在本地工作区新建分支,修改文件并提交 4.推送到远程仓库 5.从远程分支上拉取代码 关于作者 1.在github中添加公钥 首次使用git必须 ...

  10. 高效实用linux命令之-history

    History(历史)命令用法 15 例 如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率.本文将通过实例的方式向你介绍 history 命令的 15 个 ...