火花全体のプロジェクトの戦闘シーン、リアルタイムユーザーの行動分析、リアルタイムの交通監視システム、リアルタイムの動画推薦装置

シナリオを使用してください:私たちは毎日のマシンにまたは定期的に多くのタスクを実行するために、多くの場合、エラータスクが時間内に見つけることができない、それはタスクが長時間ハングアップされてきた時間の発見につながりました。 

解決策:水路カフカのフレームワーク+ +ストリーミングスパークに基づいて、これらのタスクのログ出力のリアルタイム監視、情報の担当者は、ログは、プロジェクトへのメール送信にエラーが表示されたときに検出されました。

目的:リアルタイムのログ分析のための水路+カフカ+スパークストリーミングフレームワークに基づいて、この小さなプロジェクトに精通しているために、より良い実際のプロジェクトに使用することができます。

、水路

水路は、収集収集とカフカにログデータを送信するためのものです。ログは、カフカシンクへ複数のソースに複数のタスクに対応して設けられてもよいです。次のようにコンフィギュレーションファイルは、次のとおりです。


#defineエージェント

agent_log.sources = S1 S2                                                                                                                  

agent_log.channels = C1                                                                                                                 

agent_log.sinks = K1                                                                                                                    

                  

#define sources.s1       

agent_log.sources.s1.type =幹部                                                                                                          

agent_log.sources.s1.command =尾-F /data/log1.log 

 

#define sources.s2       

agent_log.sources.s2.type =幹部                                                                                                          

agent_log.sources.s2.command =尾-F /data/log2.log  

 

#インターセプタを定義します。

agent_log.sources.s1.interceptors = I1

agent_log.sources.s1.interceptors.i1.type =静的

agent_log.sources.s1.interceptors.i1.preserveExisting =偽

agent_log.sources.s1.interceptors.i1.key = PROJECTNAME

agent_log.sources.s1.interceptors.i1.value = project1に

 

agent_log.sources.s2.interceptors = I2

agent_log.sources.s2.interceptors.i2.type =静的

agent_log.sources.s2.interceptors.i2.preserveExisting =偽

agent_log.sources.s2.interceptors.i2.key = PROJECTNAME

agent_log.sources.s2.interceptors.i2.value =のProject2

                                                                                                                                                                                                                                                                                                                                   

#defineチャンネル

agent_log.channels.c1.type =メモリ

agent_log.channels.c1.capacity = 1000

agent_log.channels.c1.transactionCapacity = 1000

 

#defineシンク

#受信機カフカを設定します

agent_log.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink

#設定カフカのブローカーアドレスとポート番号

CDH1 agent_log.sinks.k1.brokerList =:9092、CDH2:9092、CDH3:9092

#設定カフカのトピック

agent_log.sinks.k1.topic = result_log

#INCLUDEヘッダ

agent_log.sinks.k1.useFlumeEventFormat =真

#セットのシリアライズ

agent_log.sinks.k1.serializer.class = kafka.serializer.StringEncoder

agent_log.sinks.k1.partitioner.class = org.apache.flume.plugins.SinglePartition

agent_log.sinks.k1.partition.key = 1

agent_log.sinks.k1.request.required.acks = 0

agent_log.sinks.k1.max.message.size = 1000000

agent_log.sinks.k1.agent_log.type =同期

agent_log.sinks.k1.custom.encoding = UTF-8

 

#チャンネルのソースとシンクをバインド                                                                      

agent_log.sources.s1.channels = C1    

agent_log.sources.s2.channels = C1  

agent_log.sinks.k1.channel = C1 

フルーム-ngのコマンドの実行開始水路:

水路-ngのエージェント-cの/ etc /水路-NG / confに-f result_log.conf -n agent_log


二、カフカ

カフカは、メッセージング・システムでは、メッセージがバッファリングされてもよいです。水路カフカは、次いで、ストリーミングが消費さスパーク、及びデータが失われないことを保証することができるメッセージキュー(プロデューサとしてフリューム)にログを収集します。カフカ特定の知識を読むことができます。https://www.cnblogs.com/likehua/p/3999538.html

#result_logテーマを作成します。

CDH1 --zookeeperカフカ-トピック:2181、CDH1:2181、CDH3:2181 --create --topic result_log --partitions 3 --replication-因子1

#テスト - トピックの表示カフカリスト、成功観測result_logを作成するかどうか

カフカ-トピック--list --zookeeper CDH1:2181、CDH1:2181、CDH3:2181

#テスト - このリンクをカフカへの消費者テスト送信ログ水路を起動が正常に機能しています

カフカ・コンソール・消費者--bootstrapサーバCDH1:9092、CDH1:9092、CDH3:9092 --topic result_log


三、スパークストリーミング(プログラミング言語:スカラ、開発ツール:アイデア)

新しいMavenプロジェクトを作成し、依存のpom.xml設定を追加します。//特定のプロジェクトのコードを参照してください


私たちは、ストリーミング飼育係の消費者がオフセット火花を管理するために使用されます。コール


KafkaUtils.createDirectStream [文字列、文字列](SSC、PreferConsistentは、購読[文字列、文字列](トピック、kafkaParams、newOffset))

カフカとの接続の確立、データ・ストリームを取得し、InputDStreamを返し、    


stream.foreachRDD(RDD => {//ハンドラ})//プロセスデータストリーム。

ヴァルSSC =新しいStreamingContext(SC、Durations.seconds(60))  

ssc.start()SSCを起動します//

このパッケージHTML電子メールこのクラス、メールを送信HtmlEmail.sendを呼び出すorg.apache.commons.mail電子メール機能の設定を送信します。


Start.shはストリーミング番組、最後のsh start.sh起動スクリプトをスパーク起動するスクリプトを記述します。


#!/ binに/ bashの

輸出HADOOP_USER_NAME = HDFS

spark2提出\

糸--master \

--deployモードクライアント\

--executor 3色\

--num-執行10 \

--driver-メモリ2グラム\

--executor-メモリ1G \

--conf spark.default.parallelism = 30 \

--conf spark.storage.memoryFraction = 0.5 \

--conf spark.shuffle.memoryFraction = 0.3 \

--conf spark.reducer.maxSizeInFlight = 128メートル\

--driverクラスパスのmysql-コネクタ-javaの-5.1.38.jar \

--jarsのmysql-コネクタ-javaの-5.1.38.jar、qqwry-javaの-0.7.0.jar、fastjson-1.2.47.jar、火花ストリーミング・カフカ-10_2.11-2.2.0.jar、ハイブ-hbaseハンドラ-1.1.0-cdh5.13.0.jar、コモンズ・メール-1.5.jar、コモンズ・メール-1.5-sources.jar、メール-1.4.7.jar \

--class com.lin.monitorlog.mianer.Handler \

monitorLog.jar

 



おすすめ

転載: blog.51cto.com/14384035/2406275