劉永濤 院志超
摘 要:大數(shù)據(jù)分析和應(yīng)用在高校得到廣泛的發(fā)展,在線運行平臺是其基礎(chǔ),因此,本文運用開源軟件Apache Hadoop、Flume、Spark以及Kafka構(gòu)建了一個大數(shù)據(jù)采集、計算、存儲平臺。
關(guān)鍵詞:Apache Hadoop Apache Flume Apache Spark Apache Kafka
中圖分類號:TP391文獻標識碼:A文章編號:1003-9082(2019)04-000-01
在進行大數(shù)據(jù)分析之前,需要構(gòu)建一個支持數(shù)據(jù)在線采集、分析和存儲的運行環(huán)境。本文使用分布式日志收集系統(tǒng)Apache Flume、數(shù)據(jù)分發(fā)中間件Kafka、分布式實時計算框架Spark Streaming構(gòu)建了一個在線數(shù)據(jù)平臺。通過使用該平臺,完成了數(shù)據(jù)信息的實時采集、計算和存儲。
一、大數(shù)據(jù)平臺整體設(shè)計
分布式大數(shù)據(jù)計算框架由6個節(jié)點構(gòu)成,服務(wù)器集群中的服務(wù)器操作系統(tǒng)為Centos6.5,服務(wù)器集群軟件為Apache Hadoop。1臺服務(wù)器為數(shù)據(jù)采集平臺,運行分布式日志收集系統(tǒng)Apache Flume,1臺服務(wù)器為消息中間件,運行分布式的日志系統(tǒng)Kafka,一臺服務(wù)器為Apache Hadoop集群的NameNode,負責(zé)作業(yè)的調(diào)度和管理,剩余3臺服務(wù)器為數(shù)據(jù)處理服務(wù)器,運行分布式計算框架Spark,為大數(shù)據(jù)的采集、計算和存儲提供平臺支撐。
二、運行環(huán)境的安裝與配置
運行在Centos6.5中,在系統(tǒng)上線運行之前,需要安裝一系列的環(huán)境軟件來支撐其運行。環(huán)境運行支撐軟件有Java、Scala等,由于系統(tǒng)運行對軟件的運行版本有一定的要求,因此,在選擇正確的軟件版本后進行安裝。
1.Java的安裝和配置
由于Spark streaming僅僅支持Java8以上的版本,因此,使用wget命令從Oracle的官方網(wǎng)站上下載Java SE Development Kit 9.0.1并保存在源碼文件夾下。使用解壓命令tar zxvf jdk-9.0.1_linux-x64_bin.tar.gz-C/home/用戶名/application,將Java的tar文件解壓至目錄/home/用戶名/application。然后使用vi命令編輯./bash_profile文件,添加Java的環(huán)境變量以及將java的運行路徑進行映射,配置后使用source ./bash_profile命令啟用環(huán)境變量。
2.Scala的安裝與配置
由于Spark2.2.0版本對Scala的版本要求是2.11,因此,使用wget命令從Scala的官方網(wǎng)站上下載scala-2.11.tgz并保存在源碼文件夾下。使用解壓命令tar zxvf scala-2.11.tgz-C /home/用戶名/application,將Scala的tar文件解壓至目錄/home/用戶名/application。然后使用vi命令編輯./bash_profile文件,添加Scala的環(huán)境變量以及將Scala的運行路徑進行映射,配置后使用source ./bash_profile命令啟用環(huán)境變量。
三、數(shù)據(jù)流量的采集
網(wǎng)絡(luò)數(shù)據(jù)的采集使用Apache Flume,通過使用端口鏡像技術(shù)將數(shù)據(jù)流截獲并發(fā)送到Apach Flume所在的服務(wù)器41414端口上,從而實現(xiàn)數(shù)據(jù)流量的準實時獲取,從而為后續(xù)的數(shù)據(jù)處理提供數(shù)據(jù)消費源。Apache Flume會啟動Flume Agent監(jiān)控上網(wǎng)日志采集服務(wù)器41414端口從而獲取數(shù)據(jù)信息。該數(shù)據(jù)信息被Flume Agent發(fā)送到消息隊列Channel中,消息隊列Channel中的數(shù)據(jù)信息被Kafka作為數(shù)據(jù)源進行消費,在這種情況下,kafka就是Apache Flume的sink。而Kafaka的數(shù)據(jù)作為spark streaming應(yīng)用程序的數(shù)據(jù)源,被其進行業(yè)務(wù)邏輯處理。
四、Apache Flume的編譯、安裝與設(shè)置
由于默認的Apache Flume在接收數(shù)據(jù)時,會對接收的數(shù)據(jù)進行自動裁剪,其source端單event的body數(shù)據(jù)部分只會留下16字節(jié)的信息,為了使其接收的數(shù)據(jù)不被自動裁剪,就需要修改源碼并對源碼進行編譯,編譯后進行安裝使用。通過對EventHelper.java以及LogerSink.java源文件的閱讀,發(fā)現(xiàn)該文件定義了一個靜態(tài)私有整數(shù)型變量DEFAULT_MAX_BYTES來進行body數(shù)據(jù)信息的大小,因此,需要對該文件中的變量進行修改,修改完成后使用maven insatll-DskipTests-Dtar來對源碼包進行編譯處理。
編譯成功后,有一個編譯完成后的壓縮包apache-flume-1.8.0-bin.tar.gz。使用解壓命令tar zxvf apache-flume-1.8.0-bin.tar.gz-C /home/用戶名/application,將Apache Flume的tar文件解壓至目錄/home/用戶名/application。然后使用vi命令編輯./bash_profile文件,添加Apache Flume的環(huán)境變量以及將Apache Flume的運行路徑進行映射,配置后使用source ./bash_profile命令啟用環(huán)境變量。
由于Apache Flume使用代理Agent作為部署的基本單元,因此,在使用時需要定義一個或者更多的Agent。又由于Source組件(源)、Channel組件(通道)以及Sink組件(接收器)構(gòu)成了一個Flume Agent,因此,在配置文件中既要定義Agent又要定義這些組件。在配置文件中,一個Flume Agent的三個構(gòu)成部分必須唯一。
五、Kafka的安裝和配置
使用wget命令從Zookeeper的官方網(wǎng)站中下載Zookeeper的壓縮文件并保存在源碼文件夾下。使用解壓命令tar zxvf zookeeper-3.4.10.tar.gz-C/home/用戶名/application,將Zookeeper的壓縮文件解壓至目錄/home/用戶名/application。然后使用vi命令編輯./bash_profile文件,添加Zookeeper的環(huán)境變量以及將Zookeeper的運行路徑進行映射,配置后使用source ./bash_profile命令啟用環(huán)境變量。
Apache Hadoop和Apache Spark的安裝過程和Apache Flume雷同,在此不在贅述。通過使用開源軟件Apache Hadoop、Flume、Kafka和Spark搭建一個實時數(shù)據(jù)采集、計算和存儲平臺,為大數(shù)據(jù)后續(xù)的分析提供基本的運行環(huán)境支持。