版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章日志采集系統(tǒng)Flume目
錄5.1Flume簡(jiǎn)介5.2Flume的安裝和使用5.3Flume和Kafka的組合使用5.4采集日志文件到HDFS5.5采集MySQL數(shù)據(jù)到HDFS5.1Flume簡(jiǎn)介5.1Flume簡(jiǎn)介Flume運(yùn)行的核心是Agent。Flume以Agent為最小的獨(dú)立運(yùn)行單位,一個(gè)Agent就是一個(gè)JVM(JavaVirtualMachine),它是一個(gè)完整的數(shù)據(jù)采集工具,包含三個(gè)核心組件,分別是數(shù)據(jù)源(Source)、數(shù)據(jù)通道(Channel)和數(shù)據(jù)槽(Sink)。通過這些組件,“事件”可以從一個(gè)地方流向另一個(gè)地方。每個(gè)組件的具體功能如下(如圖5-1所示):(1)數(shù)據(jù)源是數(shù)據(jù)的收集端,負(fù)責(zé)將數(shù)據(jù)捕獲后進(jìn)行特殊的格式化,將數(shù)據(jù)封裝到事件(Event)里,然后將事件推入數(shù)據(jù)通道中。常用的數(shù)據(jù)源的類型包括Avro、Thrift、Exec、JMS、SpoolingDirectory、Taildir、Kafka、NetCat、Syslog、HTTP等。(2)數(shù)據(jù)通道是連接數(shù)據(jù)源和數(shù)據(jù)槽的組件,可以將它看作一個(gè)數(shù)據(jù)的緩沖區(qū)(數(shù)據(jù)隊(duì)列),它可以將事件暫存到內(nèi)存中,也可以持久化到本地磁盤上,直到數(shù)據(jù)槽處理完該事件。常用的數(shù)據(jù)通道類型包括Memory、JDBC、Kafka、File、Custom等。(3)數(shù)據(jù)槽取出數(shù)據(jù)通道中的數(shù)據(jù),存儲(chǔ)到文件系統(tǒng)和數(shù)據(jù)庫(kù),或者提交到遠(yuǎn)程服務(wù)器。常用的數(shù)據(jù)槽包括HDFS、Hive、Logger、Avro、Thrift、IRC、FileRoll、HBase、ElasticSearch、Kafka、HTTP等。5.1Flume簡(jiǎn)介圖5-1Flume的技術(shù)架構(gòu)Flume提供了大量?jī)?nèi)置的數(shù)據(jù)源、數(shù)據(jù)通道和數(shù)據(jù)槽類型。不同類型的數(shù)據(jù)源、數(shù)據(jù)通道和數(shù)據(jù)槽可以自由組合。組合方式基于用戶設(shè)置的配置文件,非常靈活。比如,數(shù)據(jù)通道可以把事件暫存在內(nèi)存里,也可以持久化到本地硬盤上;數(shù)據(jù)槽可以把日志寫入HDFS、HBase甚至是另外一個(gè)數(shù)據(jù)源等等。5.2Flume的安裝和使用5.2Flume的安裝和使用5.2.1Flume的安裝5.2.2Flume的使用5.2.1Flume的安裝Flume的運(yùn)行需要Java環(huán)境的支持,因此,需要在Windows系統(tǒng)中安裝JDK。請(qǐng)參照第2章內(nèi)容完成JDK的安裝。訪問Flume官網(wǎng)(/download.html),下載Flume安裝文件apache-flume-1.9.0-bin.tar.gz。把安裝文件解壓縮到Windows系統(tǒng)的“C:\”目錄下,然后,執(zhí)行如下命令測(cè)試是否安裝成功:>cdc:\apache-flume-1.9.0-bin\bin>flume-ngversion如果能夠返回類似如下的信息,則表示啟動(dòng)成功:Flume1.9.0Sourcecoderepository:/repos/asf/flume.gitRevision:d4fcab4f501d41597bc616921329a4339f73585eCompiledbyfszaboonMonDec1720:45:25CET2018Fromsourcewithchecksum35db629a3bda49d23e9b3690c80737f95.2.2Flume的使用1.實(shí)例1:采集NetCat數(shù)據(jù)顯示到控制臺(tái)這里給出一個(gè)簡(jiǎn)單的實(shí)例,假設(shè)Source為NetCat類型,使用Telnet連接Source寫入數(shù)據(jù),產(chǎn)生日志數(shù)據(jù)輸出到控制臺(tái)(屏幕)。下面首先介紹操作系統(tǒng)Windows7中的操作方法,然后再介紹Windows10中的操作方法。為了順利完成后面的測(cè)試,首先開啟Windows7的telnet服務(wù)。具體方法是,打開“控制面板”,進(jìn)入“默認(rèn)程序”,在出現(xiàn)的界面的左側(cè)底部點(diǎn)擊“程序和功能”,再在出現(xiàn)的界面的左側(cè)頂部點(diǎn)擊“打開或關(guān)閉Windows功能”,會(huì)出現(xiàn)如圖5-2所示的界面,把“Telnet服務(wù)器”和“Telnet客戶端”都選中,然后點(diǎn)擊“確定”按鈕。5.2.2Flume的使用圖5-2打開或關(guān)閉Windows功能5.2.2Flume的使用在Flume安裝目錄的conf子目錄下,新建一個(gè)名稱為example.conf的配置文件,該文件的內(nèi)容如下:#設(shè)置Agent上的各個(gè)組件名稱a1.sources=r1a1.sinks=k1a1.channels=c1
#配置Sourcea1.sources.r1.type=netcata1.sources.r1.bind=localhosta1.sources.r1.port=44444
#配置Sinka1.sinks.k1.type=logger5.2.2Flume的使用#配置Channela1.channels.c1.type=memorya1.channels.c1.capacity=1000a1.channels.c1.transactionCapacity=100
#把Source和Sink綁定到Channel上a1.sources.r1.channels=c1a1.sinks.k1.channel=c15.2.2Flume的使用在這個(gè)配置文件中,設(shè)置了Source類型為netcat,Channel類型為memory,Sink的類型為logger。然后,新建一個(gè)cmd窗口(稱為“Flume窗口”),并執(zhí)行如下命令:>cdc:\apache-flume-1.9.0-bin>.\bin\flume-ngagent--conf.\conf--conf-file.\conf\example.conf--namea1-propertyflume.root.logger=INFO,console再新建一個(gè)cmd窗口,并執(zhí)行如下命令:>telnetlocalhost44444這時(shí)就可以從鍵盤輸入一些英文單詞,比如“HelloWorld”,切換到Flume窗口,就可以看到屏幕上顯示了“HelloWorld”(如圖5-3所示),說明Flume成功地接收到了信息。圖5-3Flume窗口中顯示接收到的信息5.2.2Flume的使用上面介紹了Windows7中的操作方法,現(xiàn)在介紹Windows10中的操作方法。在Windows10中,運(yùn)行Flume的操作和Windows7一樣,不同是的Telnet操作。由于Telnet服務(wù)端的安全性問題,Windows10中移除了Telnet服務(wù)端組件,也就是說,在Windows10中無(wú)法找到Telnet服務(wù)端組件,也就無(wú)法執(zhí)行“telnetlocalhost44444”命令,因此,操作方法不同于Windows7。為了能夠執(zhí)行“telnetlocalhost44444”命令,這里使用子系統(tǒng)的方法通過Linux的telnet命令進(jìn)行操作,操作步驟如下:5.2.2Flume的使用(1)進(jìn)入Windows10自帶的“軟件商店”(MircrosoftStore),在軟件商店中搜索“Ubuntu”,選擇第一個(gè)進(jìn)行下載(如圖5-4所示)。下載結(jié)束后,如圖5-5所示,點(diǎn)擊“安裝”按鈕,完成Ubuntu系統(tǒng)的安裝。圖5-4在“軟件商店”中下載Ubuntu5.2.2Flume的使用圖5-5安裝Ubuntu5.2.2Flume的使用(2)安裝完成以后,可以從“開始”菜單中啟動(dòng)Ubuntu(如圖5-6所示)。初次啟動(dòng)時(shí)會(huì)要求設(shè)置用戶名和密碼,設(shè)置以后就可以進(jìn)入U(xiǎn)buntu的命令界面。圖5-6從“開始”菜單啟動(dòng)Ubuntu5.2.2Flume的使用(3)在命令提示符后面輸入“telnetlocalhost44444”命令即可(如圖5-7所示),Ubuntu子系統(tǒng)和原系統(tǒng)Windows10的端口信息可以互通,效果等同于Windows7中的telnet命令。這時(shí)就可以從鍵盤輸入一些英文單詞,比如“HelloWorld”,切換到Windows10中的Flume窗口,就可以看到屏幕上顯示了“HelloWorld”,說明Flume成功地接收到了信息。圖5-7執(zhí)行telnet命令5.2.2Flume的使用2.采集目錄下的數(shù)據(jù)顯示到控制臺(tái)假設(shè)Windows系統(tǒng)中有一個(gè)目錄“C:\mylogs”,這個(gè)目錄下不斷有新的文件生成,使用Flume采集這個(gè)目錄下的文件,并把文件內(nèi)容顯示到控制臺(tái)(屏幕)。在Flume安裝目錄的conf子目錄下,新建一個(gè)名稱為example1.conf的配置文件,該文件的內(nèi)容如下:5.2.2Flume的使用#定義三大組件名稱a1.sources=r1a1.channels=c1a1.sinks=k1
#定義Sourcea1.sources.r1.type=spooldira1.sources.r1.spoolDir=C:/mylogs/
#定義Channela1.channels.c1.type=memorya1.channels.c1.capacity=10000a1.channels.c1.transactionCapacity=100
#定義Sinka1.sinks.k1.type=logger
#組裝Source、Channel、Sinka1.sources.r1.channels=c1a1.sinks.k1.channel=c15.2.2Flume的使用清空“C:\mylogs”目錄(即刪除該目錄下的所有內(nèi)容),然后新建一個(gè)cmd窗口(稱為“Flume窗口”),并執(zhí)行如下命令:>cdc:\apache-flume-1.9.0-bin>.\bin\flume-ngagent--conf.\conf--conf-file.\conf\example1.conf--namea1-propertyflume.root.logger=INFO,console
然后,在“C:\”目錄下新建一個(gè)文件mylog.txt,里面輸入一些內(nèi)容,比如“IloveFlume”,保存該文件,并把該文件復(fù)制到“C:\mylogs”目錄下,可以看到,mylog.txt很快會(huì)變成mylog.txt.COMPLETED,這時(shí),在Flume窗口中就可以看到mylog.txt中的內(nèi)容,比如“IloveFlume”。5.3Flume和Kafka的組合使用5.3Flume和Kafka的組合使用在Windows系統(tǒng)中打開第1個(gè)cmd窗口,執(zhí)行如下命令啟動(dòng)Zookeeper服務(wù):>cdc:\kafka_2.12-2.4.0>.\bin\windows\zookeeper-server-start.bat.\config\zookeeper.Properties打開第2個(gè)cmd窗口,然后執(zhí)行下面命令啟動(dòng)Kafka服務(wù):>cdc:\kafka_2.12-2.4.0>.\bin\windows\kafka-server-start.bat.\config\perties打開第3個(gè)cmd窗口,執(zhí)行如下命令創(chuàng)建一個(gè)名為test的Topic:>cdc:\kafka_2.12-2.4.0>.\bin\windows\kafka-topics.bat--create--zookeeperlocalhost:2181--replication-factor1--partitions1--topictest5.3Flume和Kafka的組合使用在Flume的安裝目錄的conf子目錄下創(chuàng)建一個(gè)配置文件kafka.conf,內(nèi)容如下:#Namethecomponentsonthisagenta1.sources=r1a1.sinks=k1a1.channels=c1
#sourcea1.sources.r1.type=netcata1.sources.r1.bind=localhosta1.sources.r1.port=444445.3Flume和Kafka的組合使用#sinka1.sinks.k1.type=org.apache.flume.sink.kafka.KafkaSinka1.sinks.k1.kafka.topic=testa1.sinks.k1.kafka.bootstrap.servers=localhost:9092a1.sinks.k1.kafka.flumeBatchSize=20ducer.acks=1ducer.linger.ms=1pression.type=snappy
#channela1.channels.c1.type=memorya1.channels.c1.capacity=1000a1.channels.c1.transactionCapacity=100
#Bindthesourceandsinktothechannela1.sources.r1.channels=c1a1.sinks.k1.channel=c15.3Flume和Kafka的組合使用打開第4個(gè)cmd窗口,執(zhí)行如下命令啟動(dòng)Flume:>cdc:\apache-flume-1.9.0-bin>.\bin\flume-ng.cmdagent--conf./conf--conf-file./conf/kafka.conf--namea1-propertyflume.root.logger=INFO,console打開第5個(gè)cmd窗口,執(zhí)行如下命令:>telnetlocalhost44444執(zhí)行上面命令以后,在該窗口內(nèi)用鍵盤輸入一些單詞,比如“hadoop”。這個(gè)單詞會(huì)發(fā)送給Flume,然后,F(xiàn)lume發(fā)送給Kafka。打開第6個(gè)cmd窗口,執(zhí)行如下命令:>cdc:\kafka_2.12-2.4.0>.\bin\windows\kafka-console-consumer.bat--bootstrap-serverlocalhost:9092--topictest--from-beginning上面命令執(zhí)行以后,就可以在屏幕上看到“hadoop”,說明Kafka成功接收到了數(shù)據(jù)。5.4采集日志文件到HDFS5.4采集日志文件到HDFS5.4.1采集目錄到HDFS5.4.2采集文件到HDFS5.4.1采集目錄到HDFS采集需求是某服務(wù)器的某特定目錄下(比如“C:\mylog”),會(huì)不斷產(chǎn)生新的文件,每當(dāng)有新文件出現(xiàn),就需要把文件采集到HDFS中去。根據(jù)需求,首先定義以下3大要素:Source:因?yàn)橐O(jiān)控文件目錄,所以Souce的類型是spooldir;Sink:因?yàn)橐盐募杉紿DFS中,所以,Sink的類型是hdfs;Channel:Channel的類型可以設(shè)置為memory。5.4.1采集目錄到HDFS在Flume安裝目錄的conf子目錄下,編寫一個(gè)配置文件spooldir_hdfs.conf,其內(nèi)容如下:#定義三大組件的名稱agent1.sources=source1agent1.sinks=sink1agent1.channels=channel1
#配置Source組件agent1.sources.source1.type=spooldiragent1.sources.source1.spoolDir=C:/mylogs/agent1.sources.source1.fileHeader=false5.4.1采集目錄到HDFS#配置Sink組件agent1.sinks.sink1.type=hdfsagent1.sinks.sink1.hdfs.path=hdfs://localhost:9000/weblog/%y-%m-%d/%H-%Magent1.sinks.sink1.hdfs.filePrefix=access_logagent1.sinks.sink1.hdfs.maxOpenFiles=5000agent1.sinks.sink1.hdfs.batchSize=100agent1.sinks.sink1.hdfs.fileType=DataStreamagent1.sinks.sink1.hdfs.writeFormat=Textagent1.sinks.sink1.hdfs.rollSize=102400agent1.sinks.sink1.hdfs.rollCount=1000000agent1.sinks.sink1.hdfs.rollInterval=60#agent1.sinks.sink1.hdfs.round=true#agent1.sinks.sink1.hdfs.roundValue=10#agent1.sinks.sink1.hdfs.roundUnit=minuteagent1.sinks.sink1.hdfs.useLocalTimeStamp=true
5.4.1采集目錄到HDFS#設(shè)置Channelagent1.channels.channel1.type=memoryagent1.channels.channel1.keep-alive=120agent1.channels.channel1.capacity=500000agent1.channels.channel1.transactionCapacity=600
#把Source和Sink綁定到Channel上agent1.sources.source1.channels=channel1agent1.sinks.sink1.channel=channel15.4.1采集目錄到HDFS為了讓Flume能夠順利訪問HDFS,需要把Flume安裝目錄下的lib子目錄下的guava-11.0.2.jar文件刪除,然后,把Hadoop安裝目錄下的“share\hadoop\common\lib”目錄下的guava-27.0-jre.jar文件復(fù)制到Flume安裝目錄下的lib子目錄下。在Windows系統(tǒng)中,新建一個(gè)cmd窗口,使用如下命令啟動(dòng)Hadoop的HDFS:>cdc:\hadoop-3.1.3\sbin>start-dfs.cmd執(zhí)行JDK自帶的命令jps查看Hadoop已經(jīng)啟動(dòng)的進(jìn)程:>jps需要注意的是,這里在使用jps命令的時(shí)候,沒有帶上絕對(duì)路徑,是因?yàn)橐呀?jīng)把JDK添加到了Path環(huán)境變量中。執(zhí)行jps命令以后,如果能夠看到“DataNode”和“NameNode”這兩個(gè)進(jìn)程,就說明Hadoop啟動(dòng)成功。5.4.1采集目錄到HDFS再新建一個(gè)cmd窗口,執(zhí)行如下命令啟動(dòng)Flume:>cdc:\apache-flume-1.9.0-bin>.\bin\flume-ngagent--conf.\conf--conf-file.\conf\spooldir_hdfs.conf--nameagent1-propertyflume.root.logger=INFO,console執(zhí)行上述命令以后,F(xiàn)lume就被啟動(dòng)了,開始實(shí)時(shí)監(jiān)控“C:/mylogs/”目錄,只要這個(gè)目錄下有新的文件生成,就會(huì)被Flume捕捉到,并把文件內(nèi)容保存到HDFS中。在C盤根目錄下新建一個(gè)文本文件mylog1.txt,里面寫入一些句子,比如“Thisismylog1”,然后,把mylog1.txt文件復(fù)制到“C:\mylog”目錄下,過一會(huì)兒,就會(huì)看到mylog1.txt文件名被修改成了mylog4.txt.COMPLETED,說明該文件已經(jīng)成功被Flume捕捉到??梢栽贖DFS的WEB管理頁(yè)面中(http://localhost:9870)查看生成的文件及其內(nèi)容。5.4.2采集文件到HDFS采集需求是某服務(wù)器的某特定目錄下的文件(比如“C:\mylog\log1.txt”),會(huì)不斷發(fā)生更新,每當(dāng)文件被更新時(shí),就需要把更新的數(shù)據(jù)采集到HDFS中去。根據(jù)需求,首先定義以下3大要素:Source:因?yàn)橐O(jiān)控文件內(nèi)容,所以Souce的類型是exec;Sink:因?yàn)橐盐募杉紿DFS中,所以,Sink的類型是hdfs;Channel:Channel的類型可以設(shè)置為memory。5.4.2采集文件到HDFS在Flume安裝目錄的conf子目錄下,編寫一個(gè)配置文件exec_hdfs.conf,其內(nèi)容如下:#定義三大組件的名稱agent1.sources=source1agent1.sinks=sink1agent1.channels=channel1
#配置Source組件agent1.sources.source1.type=execmand=tail-FC:/mylogs/log1.txtagent1.sources.source1.channels=channel15.4.2采集文件到HDFS#配置Sink組件agent1.sinks.sink1.type=hdfsagent1.sinks.sink1.hdfs.path=hdfs://localhost:9000/weblog/%y-%m-%d/%H-%Magent1.sinks.sink1.hdfs.filePrefix=access_logagent1.sinks.sink1.hdfs.maxOpenFiles=5000agent1.sinks.sink1.hdfs.batchSize=100agent1.sinks.sink1.hdfs.fileType=DataStreamagent1.sinks.sink1.hdfs.writeFormat=Textagent1.sinks.sink1.hdfs.rollSize=102400agent1.sinks.sink1.hdfs.rollCount=1000000agent1.sinks.sink1.hdfs.rollInterval=60#agent1.sinks.sink1.hdfs.round=true#agent1.sinks.sink1.hdfs.roundValue=10#agent1.sinks.sink1.hdfs.roundUnit=minuteagent1.sinks.sink1.hdfs.useLocalTimeStamp=true5.4.2采集文件到HDFS#配置Channel組件agent1.channels.channel1.type=memoryagent1.channels.channel1.keep-alive=120agent1.channels.channel1.capacity=500000agent1.channels.channel1.transactionCapacity=600
#把Source和Sink綁定到Channelagent1.sources.source1.channels=channel1agent1.sinks.sink1.channel=channel15.4.2采集文件到HDFS在上面的配置文件中,有一行內(nèi)容如下:mand=tail-FC:/mylogs/log1.txt在這個(gè)配置信息中,使用了tail命令,Windows系統(tǒng)沒有自帶tail命令,因此,需要單獨(dú)安裝??梢缘骄W(wǎng)絡(luò)查找tail.exe文件,或者直接到教材官網(wǎng)的“下載專區(qū)”的“軟件”目錄中下載tail.zip文件,解壓縮生成tail.exe文件,再把tail.exe文件復(fù)制到“C:\Windows\System32”目錄下,然后,可以測(cè)試一下該命令的效果。首先新建一個(gè)文件“C:\mylog\log1.txt”,文件內(nèi)容可以為空,然后,打開一個(gè)cmd窗口(這里稱為“tail窗口”),輸入如下命令:>tail-fc:\mylogs\log1.txt然后,用記事本打開log1.txt,向里面輸入一些內(nèi)容(比如“IloveFlume”)并且保存文件,這時(shí),tail窗口內(nèi)就會(huì)顯示剛剛輸入到log1.txt中的這些內(nèi)容。5.4.2采集文件到HDFS再新建一個(gè)cmd窗口,啟動(dòng)HDFS,然后執(zhí)行如下命令啟動(dòng)Flume:>cdc:\apache-flume-1.9.0-bin>.\bin\flume-ngagent--conf.\conf--conf-file.\conf\exec_hdfs.conf--nameagent1-propertyflume.root.logger=INFO,console執(zhí)行上述命令以后,F(xiàn)lume就被啟動(dòng)了,開始實(shí)時(shí)監(jiān)控“C:/mylogs/log1.txt”文件,只要這個(gè)文件發(fā)生了內(nèi)容更新,就會(huì)被Flume捕捉到,并把更新內(nèi)容保存到HDFS中。作為測(cè)試,可以在log1.txt文件中輸入一些內(nèi)容,然后到HDFS的WEB管理頁(yè)面中(http://localhost:9870)查看生成的文件及其內(nèi)容。5.5采集MySQL數(shù)據(jù)到HDFS5.5采集MySQL數(shù)據(jù)到HDFS5.5.1準(zhǔn)備工作5.5.2創(chuàng)建MySQL數(shù)據(jù)庫(kù)5.5.3配置和啟動(dòng)Flume5.5.1準(zhǔn)備工作在采集MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)到HDFS時(shí),需要用到一個(gè)第三方JAR包,即flume-ng-sql-source-1.5.2.jar。這個(gè)JAR包可以直接從網(wǎng)絡(luò)上下載,或者也可以到教材官網(wǎng)的“下載專區(qū)”的“軟件”目錄中下載。但是,直接下載的JAR包一般都不是最新的版本,或者可能與已經(jīng)安裝的Flume不兼容,因此,這里介紹自己下載源代碼進(jìn)行編譯得到JAR包的方法。為了對(duì)源代碼進(jìn)行編譯,這里需要用到Maven工具,可以到Maven官網(wǎng)(/download.cgi)下載安裝包apache-maven-3.6.3-bin.zip,然后,解壓縮到Windows系統(tǒng)的“C:\”目錄下。訪問github網(wǎng)站(/keedio/flume-ng-sql-source/tree/release/1.5.2),在出現(xiàn)的頁(yè)面(如圖5-8所示)中,點(diǎn)擊右上角的“Code”按鈕,在彈出的菜單中點(diǎn)擊“DownloadZIP”,就可以把壓縮文件flume-ng-sql-source-release-1.5.2.zip下載到本地。然后,把文件解壓縮到Windows系統(tǒng)的“C:\”目錄下。5.5.1準(zhǔn)備工作圖5-8github網(wǎng)站頁(yè)面5.5.1準(zhǔn)備工作打開一個(gè)cmd窗口,執(zhí)行如下命令執(zhí)行編譯打包:>cdC:\flume-ng-sql-source-release-1.5.2>C:\apache-maven-3.6.3\bin\mvnpackage
編譯打包過程會(huì)持續(xù)一段時(shí)間,最終,如果編譯打包成功,會(huì)返回類似如下的信息:[INFO]Buildingjar:c:\flume-ng-sql-source-release-1.5.2\target\flume-ng-sql-source-1.5.2-javadoc.jar[INFO]------------------------------------------------------------------------[INFO]BUILDSUCCESS[INFO]------------------------------------------------------------------------[INFO]Totaltime:04:27min[INFO]Finishedat:2021-02-17T09:36:13+08:00[INFO]------------------------------------------------------------------------
5.5.1準(zhǔn)備工作這時(shí),在“C:\flume-ng-sql-source-release-1.5.2\target”目錄下,可以看到一個(gè)JAR包文件flume-ng-sql-source-1.5.2.jar,把這個(gè)文件復(fù)制到Flume安裝目錄的lib子目錄下(比如“C:\apache-flume-1.9.0-bin\lib”)。此外,為了讓Flume能夠順利連接MySQL數(shù)據(jù)庫(kù),還需要用到一個(gè)連接驅(qū)動(dòng)程序JAR包??梢栽L問MySQL官網(wǎng)(/downloads/connector/j/?os=26)下載驅(qū)動(dòng)程序壓縮文件mysql-connector-java-8.0.23.tar.gz(也可以到教材官網(wǎng)下載),然后,對(duì)該壓縮文件進(jìn)行解壓縮,在解壓后的目錄中,找到文件mysql-connector-java-8.0.23.jar,把這個(gè)文件復(fù)制到Flume安裝目錄的lib子目錄下(比如“C:\apache-flume-1.9.0-bin\lib”)。5.5.2創(chuàng)建MySQL數(shù)據(jù)庫(kù)參照第2章中關(guān)于MySQL數(shù)據(jù)庫(kù)的內(nèi)容,完成MySQL的安裝,并學(xué)習(xí)其基本使用方法,這里假設(shè)讀者已經(jīng)成功安裝了MySQL數(shù)據(jù)庫(kù)并掌握了基本的使用方法。在Windows系統(tǒng)中,啟動(dòng)MySQL服務(wù)進(jìn)程,然后,打開MySQL的命令行客戶端,執(zhí)行如下SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)和表:mysql>CREATEDATABASEschool;mysql>USEschool;mysql>CREATETABLEstudent1(->idINTNOTNULL,->nameVARCHAR(40),->ageINT,->gradeINT,->PRIMARYKEY(id));5.5.2創(chuàng)建MySQL數(shù)據(jù)庫(kù)需要注意的是,在創(chuàng)建表的時(shí)候,一定要設(shè)置一個(gè)主鍵(比如,這里id是主鍵),否則后面Flume會(huì)捕捉數(shù)據(jù)失敗。創(chuàng)建好MySQL數(shù)據(jù)庫(kù)以后,再執(zhí)行如下命令啟動(dòng)Hadoop的HDFS:>cdc:\hadoop-3.1.3\sbin>start-dfs.cmd執(zhí)行JDK自帶的命令jps查看Hadoop已經(jīng)啟動(dòng)的進(jìn)程:>jps執(zhí)行jps命令以后,如果能夠看到“DataNode”和“NameNode”這兩個(gè)進(jìn)程,就說明Hadoop啟動(dòng)成功。5.5.3配置和啟動(dòng)Flume根據(jù)需求,首先定義以下3大要素:Source:因?yàn)橐O(jiān)控MySQL數(shù)據(jù)庫(kù),所以Souce的類型是org.keedio.flume.source.SQLSource;Sink:因?yàn)橐盐募杉紿DFS中,所以,Sink的類型是hdfs;Channel:Channel的類型可以設(shè)置為memory。5.5.3配置和啟動(dòng)Flume在Flume安裝目錄的conf子目錄下,編寫一個(gè)配置文件mysql_hdfs.conf,其內(nèi)容如下:#設(shè)置三大組件agent1.channels=ch1agent1.sinks=HDFSagent1.sources=sql-source
#設(shè)置Source組件agent1.sources.sql-source.type=org.keedio.flume.source.SQLSourceagent1.sources.sql-source.hibernate.connection.url=jdbc:mysql://localhost:3306/schoolagent1.sources.sql-source.hibernate.connection.user=root#數(shù)據(jù)庫(kù)用戶名agent1.sources.sql-source.hibernate.connection.password=123456#數(shù)據(jù)庫(kù)密碼agent1.sources.sql-source.hibernate.connection.autocommit=trueagent1.sources.sql-source.table=student#數(shù)據(jù)庫(kù)中的表名稱agent1.sources.sql-source.run.query.delay=5000agent1.sources.sql-source.status.file.path=C:/apache-flume-1.9.0-bin/=sql-source.status5.5.3配置和啟動(dòng)Flume#設(shè)置Sink組件agent1.sinks.HDFS.type=hdfsagent1.sinks.HDFS.hdfs.path=hdfs://localhost:9000/flume/mysqlagent1.sinks.HDFS.hdfs.fileType=DataStreamagent1.sinks.HDFS.hdfs.writeFormat=Textagent1.sinks.HDFS.hdfs.rollSize=268435456agent1.sinks.HDFS.hdfs.rollInterval=0agent1.sinks.HDFS.hdfs.rollCount=0
#設(shè)置Channelagent1.channels.ch1.type=memory
#把Source和Sink綁定到Channelagent1.sinks.HDFS.channel=ch1agent1.sources.sql-source.channels=ch15.5.3配置和啟動(dòng)Flume在配置文件mysql_hdfs.conf中,有如下兩行:agent1.sources.sql-source.status.file.path=C:/apache-flume-1.9.0-bin/=sql-source.status這兩行設(shè)置了Flume狀態(tài)信息的保存位置,即保存在“C:/apa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版工業(yè)4.0項(xiàng)目廠房收購(gòu)合同樣本3篇
- 航空航天碳資產(chǎn)管理辦法
- 礦山工程招投標(biāo)法規(guī)實(shí)務(wù)講解
- 橋梁質(zhì)量檢測(cè)協(xié)議
- 2024年度地板企業(yè)競(jìng)業(yè)禁止協(xié)議范本3篇
- 企業(yè)重組顧問聘用協(xié)議模板
- 私募基金資金流動(dòng)規(guī)則
- 畜牧養(yǎng)殖保證人擔(dān)保承諾書
- 通信網(wǎng)絡(luò)行業(yè)退休管理辦法
- 保險(xiǎn)公司房產(chǎn)管理策略
- 甲醇制氫生產(chǎn)裝置計(jì)算書
- T-JSREA 32-2024 電化學(xué)儲(chǔ)能電站消防驗(yàn)收規(guī)范
- 設(shè)計(jì)中的重點(diǎn)、難點(diǎn)及關(guān)鍵技術(shù)問題的把握控制及相應(yīng)措施
- 2023-2024學(xué)年福建省泉州市石獅市三年級(jí)(上)期末數(shù)學(xué)試卷
- 新時(shí)代高校馬克思主義學(xué)院內(nèi)涵式發(fā)展的現(xiàn)狀和現(xiàn)實(shí)進(jìn)路
- 2024以租代購(gòu)合同
- 湖南省益陽(yáng)市2023-2024學(xué)年高二上學(xué)期1月期末物理試題 含答案
- 第六單元(整體教學(xué)課件)七年級(jí)語(yǔ)文上冊(cè)大單元教學(xué)名師備課系列(統(tǒng)編版2024)
- 垃圾填埋廠租地合同范本
- 漢語(yǔ)詞匯與文化智慧樹知到期末考試答案章節(jié)答案2024年浙江師范大學(xué)
- 科研設(shè)計(jì)及研究生論文撰寫智慧樹知到期末考試答案2024年
評(píng)論
0/150
提交評(píng)論