日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql storm_flume+kafka+storm+mysql架构设计

發(fā)布時(shí)間:2023/12/15 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql storm_flume+kafka+storm+mysql架构设计 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前段時(shí)間學(xué)習(xí)了storm,最近剛開blog,就把這些資料放上來供大家參考。 這個(gè)框架用的組件基本都是最新穩(wěn)定版本,flume-ng1.4+kafka0.8+storm0.9+mysql(項(xiàng)目是maven項(xiàng)目,需要改動mysql配置,提供兩種topology:讀取本地文件(用來本地測試);讀取服務(wù)器日志文件。)

(是visio畫的,圖太大,放上來字看起來比較小,如果有需要的朋友留郵箱)

實(shí)時(shí)日志分析系統(tǒng)架構(gòu)簡介

系統(tǒng)主要分為四部分:

負(fù)責(zé)從各節(jié)點(diǎn)上實(shí)時(shí)采集數(shù)據(jù),選用cloudera的flume來實(shí)現(xiàn)

由于采集數(shù)據(jù)的速度和數(shù)據(jù)處理的速度不一定同步,因此添加一個(gè)消息中間件來作為緩沖,選用apache的kafka

對采集到的數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,選用apache的storm

對分析后的結(jié)果持久化,暫定用mysql

操作系統(tǒng):centos6.4

Flume是Cloudera提供的一個(gè)分布式、可靠、和高可用的海量日志采集、聚合和傳輸?shù)娜罩臼占到y(tǒng),支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),Flume提供對數(shù)據(jù)進(jìn)行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力。

下圖為flume典型的體系結(jié)構(gòu):

Flume數(shù)據(jù)源以及輸出方式:

Flume提供了從console(控制臺)、RPC(Thrift-RPC)、

text(文件)、tail(UNIX

tail)、syslog(syslog日志系統(tǒng),支持TCP和UDP等2種模式),exec(命令執(zhí)行)等數(shù)據(jù)源上收集數(shù)據(jù)的能力,在我們的系統(tǒng)中目前

使用exec方式進(jìn)行日志采集。

Flume的數(shù)據(jù)接受方,可以是console(控制臺)、text(文件)、dfs(HDFS文件)、RPC(Thrift-RPC)和syslogTCP(TCP syslog日志系統(tǒng))等。在我們系統(tǒng)中由kafka來接收。

Flume版本:1.4.0

$tar zxvf apache-flume-1.4.0-bin.tar.gz /usr/local

Flume啟動命令:

$bin/flume-ng agent --conf conf --conf-file conf/flume-conf.properties --name producer -Dflume.root.logger=INFO,console

注意事項(xiàng):需要更改conf目錄下的配置文件,并且添加jar包到lib目錄下。

Kafka是一個(gè)消息中間件,它的特點(diǎn)是:

1、關(guān)注大吞吐量,而不是別的特性

2、針對實(shí)時(shí)性場景

3、關(guān)于消息被處理的狀態(tài)是在consumer端維護(hù),而不是由kafka server端維護(hù)。

4、分布式,producer、broker和consumer都分布于多臺機(jī)器上。

下圖為kafka的架構(gòu)圖:

Kafka版本:0.8.0

Kafka下載及文檔:http://kafka.apache.org/

Kafka安裝:

> tar xzf kafka-.tgz

> cd kafka-

> ./sbt update

> ./sbt package

> ./sbt assembly-package-dependency Kafka

啟動及測試命令:

(1) start server

> bin/zookeeper-server-start.sh config/zookeeper.properties

> bin/kafka-server-start.sh config/server.properties

(2)Create a topic

> bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic test

> bin/kafka-list-topic.sh --zookeeper localhost:2181

(3)Send some messages

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

(4)Start a consumer

> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

Storm是一個(gè)分布式的、高容錯(cuò)的實(shí)時(shí)計(jì)算系統(tǒng)。

Storm架構(gòu)圖:

storm工作任務(wù)topology:

Storm 版本:0.9.0

Storm 下載:Storm安裝:

第一步,安裝Python2.7.2

# wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz

# tar zxvf Python-2.7.2.tgz

# cd Python-2.7.2

# ./configure

# make

# make install

# vi /etc/ld.so.conf

第二步,安裝zookeeper(kafka自帶zookeeper,如果選用kafka的,該步可省略)

#wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//zookeeper/zookeeper-3.3.3/zoo keeper-3.3.3.tar.gz

# tar zxf zookeeper-3.3.3.tar.gz

# ln -s /usr/local/zookeeper-3.3.3/ /usr/local/zookeeper

# vi ~./bashrc (設(shè)置ZOOKEEPER_HOME和ZOOKEEPER_HOME/bin)

第三步,安裝JAVA

$tar zxvf ?jdk-7u45-linux-x64.tar.gz ?/usr/local

jzmq的安裝貌似是依賴zeromq的,所以應(yīng)該先裝zeromq,再裝jzmq。

這是因?yàn)闆]有安裝uuid相關(guān)的package。

# yum install e2fsprogs*

2)安裝jzmq(非必須)

第五步,安裝storm

$unzip storm-0.9.0-wip16.zip

備注:單機(jī)版不需要修改配置文件,分布式在修改配置文件時(shí)要注意:冒號后必須加空格。

測試storm是否安裝成功:

如果沒有安裝過maven,參見如下步驟安裝:

tar zxvf apache-maven-3.1.1-bin.tar.gz /usr/local

配置maven環(huán)境變量

export MAVEN_HOME=/usr/local/maven

export PATH=$PATH:$MAVEN_HOME/bin

驗(yàn)證maven是否安裝成功:mvn -v

修改Storm-Starter的pom文件m2-pom.xml ,修改dependency中twitter4j-core 和 twitter4j-stream兩個(gè)包的依賴版本,如下:

twitter4j-core

twitter4j-stream

[2.2,)

編譯完后生成target文件夾

啟動zookeeper

zkServer.sh start

啟動nimbus supervisor ui

storm nimbus

storm supervisor

storm ui

jps查看啟動狀態(tài)

進(jìn)入target目錄執(zhí)行:

storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.WordCountTopology wordcountTop

然后查看http://localhost:8080

注釋:單機(jī)版 不用修改storm.yaml

kafka和storm整合

3.將該jar包及kafka_2.9.2-0.8.0-beta1.jar??? metrics-core-2.2.0.jar? scala-library-2.9.2.jar (這三個(gè)jar包在kafka-storm-0.8-plus項(xiàng)目依賴中能找到)

備注:如果開發(fā)的項(xiàng)目需要其他jar,記得也要放進(jìn)storm的Lib中比如用到了mysql就要添加mysql-connector-java-5.1.22-bin.jar到storm的lib下

flume和kafka整合

修改該文件:#source section

producer.sources.s.type = exec

修改所有topic的值改為test

將改后的配置文件放進(jìn)flume/conf目錄下

在該項(xiàng)目中提取以下jar包放入環(huán)境中flume的lib下:

以上為單機(jī)版的flume+kafka+storm的配置安裝

flume+storm插件

https://github.com/xiaochawan/edw-Storm-Flume-Connectors

安裝好storm,flume,kafka之后開始項(xiàng)目部署啟動(在部署啟動之前最好按照安裝文檔進(jìn)行storm kafka flume各個(gè)組件測試)。

第一步

將編寫好的storm項(xiàng)目打成jar包放入服務(wù)器上,假如放在/usr/local/project/storm.xx.jar

注:關(guān)于storm項(xiàng)目的編寫見安裝文檔中的 kafka和storm整合 。

第二步

啟動zookeeper(這里可以啟動kafka自帶的zookeeper或者啟動單獨(dú)安裝的kafka,以下以kafka自帶為例)

cd /usr/local/kafka

創(chuàng)建主題

注:因?yàn)閗afka消息的offset是由zookeeper記錄管理的,所以在此需指定zookeeper的ip,replica 表示該主題的消息被復(fù)制幾份,partition 表示每份主題被分割成幾部分。test表示主題名稱。

> storm supervisor

cd /usr/local/project/

注:storm.xx.jar 為我們編寫好的storm項(xiàng)目jar包,第一步完成的工作。 storm.testTopology 為storm項(xiàng)目中main方法所在的類路徑。test為此次topology的名字。

第五步

啟動flume

cd /usr/local/flume

bin/flume-ng agent --conf conf --conf-file conf/flume-conf.properties --name producer

注:flume.conf.properties為我們自定義的flume配置文件,flume安裝好后是沒有此文件的,需要我們自己編寫,編寫方式見flume安裝的文章。

至此需要啟動的程序已經(jīng)全部啟動,storm項(xiàng)目已經(jīng)開始運(yùn)行,可以打開storm ui 觀察運(yùn)行是否正常。

http://localhost:8080

注:此處ip為storm nimbus所在機(jī)器Ip 端口可在storm配置文件 storm/conf/storm.yaml中修改

總結(jié)

以上是生活随笔為你收集整理的mysql storm_flume+kafka+storm+mysql架构设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。