隨着公司業務發展,對大數據的獲取和實時處理的要求就會愈來愈高,日誌處理、用戶行爲分析、場景業務分析等等,傳統的寫日誌方式根本知足不了業務的實時處理需求,因此本人準備開始着手改造原系統中的數據處理方式,從新搭建一個實時流處理平臺,主要是基於hadoop生態,利用Kafka做爲中轉,SparkStreaming框架實時獲取數據並清洗,將結果多維度的存儲進HBase數據庫。html
整個平臺大體的框架以下:java
操做系統:Centos7node
用到的框架:nginx
1. Flume1.8.0
2. Hadoop2.9.0
3. kafka2.11-1.0.0
4.Spark2.2.1
5.HBase1.2.6
6. ZooKeeper3.4.11
7. maven3.5.2程序員
總體的開發環境是基於JDK1.8以上以及Scala,因此得提早把java和Scala的環境給準備好,接下來就開始着手搭建基礎平臺:面試
1、配置開發環境shell
下載並解壓JDK1.8,、下載並解壓Scala,配置profile文件:數據庫
2、配置zookeeper、maven環境瀏覽器
下載並解壓zookeeper以及maven並配置profile文件服務器
而後配置一下zoo.cfg裏面的相關配置,指定一下dataDir目錄等等
啓動zookeeper:
/usr/local/zookeeper-3.4.11/bin/zkServer.sh start
若是不報錯,jps看一下是否啓動成功
3、安裝配置Hadoop
Hadoop的安裝配置在以前文章中有說過(傳送門),爲了下面的步驟方便理解,這裏只作一個單機版的簡單配置說明:
下載hadoop解壓並配置環境:
首先配置hadoop-env.sh、yarn-env.sh,修改JAVA_HOME到指定的JDK安裝目錄/usr/local/java/jdk1.8.0_144
建立hadoop的工做目錄
mkdir /opt/data/hadoop
編輯core-site.xml、hdfs-site.xml、yarn-site.xml等相關配置文件,具體配置再也不闡述請看前面的文章,配置完成以後記得執行hadoop namenode -format,不然hdfs啓動會報錯,啓動完成後不出問題瀏覽器訪問50070端口會看到hadoop的頁面。
4、安裝配置kafka
仍是同樣,先下載kafka,而後配置:
進入kafka的config目錄,配置server.properties,指定log.dirs和zookeeper.connect參數;配置zookeeper.properties文件中zookeeper的dataDir,配置完成後啓動kafka
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
能夠用jps查看有沒有kafka進程,而後測試一下kafka是否可以正常收發消息,開兩個終端,一個用來作producer發消息一個用來作consumer收消息,首先,先建立一個topic
若是不出一下會看到以下輸出:
而後在第一個終端中輸入命令:
kafka-console-producer.sh –broker-list localhost:9092 –topic testTopic
在第二個終端中輸入命令:
kafka-console-consumer.sh –zookeeper 127.0.0.1:2181 –topic testTopic
若是啓動都正常,那麼這兩個終端將進入阻塞監聽狀態,在第一個終端中輸入任何消息第二個終端都將會接收到。
5、安裝配置HBase
下載並解壓HBase:
修改hbase下的配置文件,首先修改hbase-env.sh,主要修改JAVA_HOME以及相關參數,這裏要說明一下HBASE_MANAGES_ZK這個參數,由於採用了本身的zookeeper,因此這裏設置爲false,不然hbase會本身啓動一個zookeeper
而後修改hbase-site.xml,咱們設置hbase的文件放在hdfs中,因此要設置hdfs地址,其中tsk1是我安裝hadoop的機器的hostname,hbase.zookeeper.quorum參數是安裝zookeeper的地址,這裏的各類地址最好用機器名
配置完成後啓動hbase,輸入命令:
start-hbase.sh
完成後查看日誌沒有報錯的話測試一下hbase,用hbase shell進行測試:
至此,hbase搭建成功,訪問如下hadoop的頁面,查看file system(菜單欄Utilities->Browse the file system),這時能夠看見base的相關文件已經載hadoop的文件系統中。
6、安裝spark
下載spark並解壓
7、測試
至此,環境基本搭建完成,以上搭建的環境僅是服務器生產環境的一部分,涉及服務器信息、具體調優信息以及集羣的搭建就不寫在這裏了,下面咱們寫一段代碼總體測試一下從kafka生產消息到spark streaming接收到,而後處理消息並寫入HBase。先寫一個HBase的鏈接類HBaseHelper:
再寫一個測試類KafkaRecHbase用來作spark-submit提交
編譯提交到服務器,執行命令:
沒報錯的話執行kafka的producer,輸入幾行數據在HBase內就能看到結果了!
8、裝一個Flume實時採集Nginx日誌寫入Kafka
Flume是一個用來日誌採集的框架,安裝和配置都比較簡單,能夠支持多個數據源和輸出,具體能夠參考Flume的文檔,寫的比較全 傳送門
下載Flume並配置環境
寫一個Flume的配置文件在flume的conf目錄下:
kafka建立一個名爲flumeKafka的topic用來接收,而後啓動flume:
若是沒有報錯,Flume將開始採集opt/data/nginxLog/nginxLog.log中產生的日誌並實時推送給kafka,再按照上面方法寫一個spark streaming的處理類進行相應的處理就好。
OK!所有搞定!
結語
感謝您的觀看,若有不足之處,歡迎批評指正。
若是有對大數據感興趣的小夥伴或者是從事大數據的老司機能夠加羣:
658558542
歡迎你們交流分享,學習交流,共同進步。(裏面還有大量的免費資料,幫助你們在成爲大數據工程師,乃至架構師的路上披荊斬棘!)
最後祝福全部遇到瓶頸的大數據程序員們突破本身,祝福你們在日後的工做與面試中一切順利。