車聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)運(yùn)行環(huán)境部署總結(jié)(一)

經(jīng)過近一個(gè)月的學(xué)習(xí)和實(shí)踐,終于成功部署了車輛監(jiān)控軟件成功,在這里將相關(guān)的步驟和遇到的坑總結(jié)一下

目錄

  1. 概述
  2. 系統(tǒng)安裝(CentOS 7.3)
  3. 大數(shù)據(jù)環(huán)境配置(java hadoop hbase zookeeper
  4. 軟件運(yùn)行環(huán)境配置(docker mysql kafka redis zookeeper tomcat)
  5. 軟件部署
  6. 跑起來
  7. 注意事項(xiàng)
  8. Q&A

概述

本項(xiàng)目為某單位開發(fā)的“電動(dòng)汽車監(jiān)控系統(tǒng)”,采用一個(gè)終端盒子從電動(dòng)汽車上采集數(shù)據(jù),使用4G發(fā)送出去,服務(wù)端接收到數(shù)據(jù)后進(jìn)行預(yù)處理,使用kafka進(jìn)行消息分發(fā),將實(shí)時(shí)數(shù)據(jù)存儲(chǔ)在redis,將歷史數(shù)據(jù)存儲(chǔ)在hbase,通過webservice向web前端傳遞mysql數(shù)據(jù),從而實(shí)現(xiàn)電動(dòng)汽車的實(shí)時(shí)數(shù)據(jù)的監(jiān)控以及歷史數(shù)據(jù)的回放。本文將描述如何在以下的軟硬件環(huán)境下,進(jìn)行該監(jiān)控系統(tǒng)的配置與部署。

結(jié)構(gòu)圖:

圖1

硬件環(huán)境

  • 1號(hào)機(jī) 工作站1 thinkstation i7
  • 2號(hào)機(jī) 工作站2 thinkstation i7
  • 3號(hào)機(jī) 服務(wù)器1 Dell Intel Xeon
  • 4號(hào)機(jī) 服務(wù)器2 Dell Intel Xeon
  • 交換機(jī)一臺(tái),網(wǎng)線若干

其中

  • 1號(hào)機(jī)安裝hadoop管理節(jié)點(diǎn)
  • 1、2、3號(hào)機(jī)安裝hadoop三個(gè)數(shù)據(jù)節(jié)點(diǎn)
  • 4號(hào)機(jī)安裝服務(wù)軟件,web軟件

軟件環(huán)境

軟件由對(duì)方單位提供,包括以下幾部分:

  • CentOS 7.3 安裝盤
  • hadoop 2.6.1 、hbase 1.2.0 、jdk 1.8.0 、zookeeper 3.4.8
  • 配置好的data、tmp文件夾,profile文件
  • 大數(shù)據(jù)啟動(dòng)、停止腳本
  • docker離線安裝包,安裝腳本,redis、kafka、mysql、zookeeper鏡像,docker基礎(chǔ)環(huán)境
  • tomcat安裝包
  • 應(yīng)用軟件發(fā)布包(webservice、datacollector、dataprocessor、alertprocessor、simulator、ddhbase、vehicle)

系統(tǒng)安裝(CentOS 7.3)

系統(tǒng)為對(duì)方單位提供的CentOS 7.3 安裝盤(也可以自己做一個(gè)安裝盤,但是如果系統(tǒng)版本不一樣的話,在安裝docker的時(shí)候,會(huì)報(bào)錯(cuò),因?yàn)橛行┮蕾嚢陌姹緦?duì)不上,太新和太舊都不行,這時(shí)候,可以采用yum安裝的方式,詳見后文)

系統(tǒng)安裝步驟

  • 如果想裝雙系統(tǒng)就先清出來一個(gè)空白分區(qū)
  • 插入光盤
  • 重啟電腦,設(shè)置boot選項(xiàng),從光盤啟動(dòng)
  • 如果光盤沒問題的話,直接進(jìn)入安裝界面,如果進(jìn)不去,換一張盤或者重新刻盤
  • 保持默認(rèn)最小系統(tǒng)安裝
  • 手動(dòng)創(chuàng)建分區(qū),去掉/home分區(qū),保持/swap、/boot,然后將剩下所有的空間分配給/
  • 開始安裝系統(tǒng)
  • 系統(tǒng)安裝重啟電腦
  • 如果是雙系統(tǒng),開機(jī)后只能進(jìn)入CentOS,無法進(jìn)入原來的windows,這時(shí)候要進(jìn)行以下修改:

安裝CentOS和Windows雙系統(tǒng),開機(jī)沒有Windows選項(xiàng)的解決辦法:

進(jìn)入centos系統(tǒng),修改/boot/grub2/gurb.cfg文件,如下

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Window XP'{
insmod ntfs
set root=(hd0,1)
chainloader +1
}
### END /etc/grub.d/30_os-prober ###

如此,即可將系統(tǒng)安裝好

系統(tǒng)基本配置

日期時(shí)間

CentOS 設(shè)置日期

#date -s 09/28/2017

設(shè)置時(shí)間

#date -s 17:21

寫入硬件

#clock -w

各主機(jī)之間的時(shí)間差不可超過30s,否則hadoop節(jié)點(diǎn)起不來

主機(jī)名配置

#hostnamectl set-hostname xxx

本次配置的主機(jī)名如下

  • 1號(hào)機(jī): hadoop1
  • 2號(hào)機(jī): hadoop2
  • 3號(hào)機(jī): hadoop3
  • 4號(hào)機(jī): webserver

網(wǎng)絡(luò)配置

查看當(dāng)前網(wǎng)卡的ip和配置:

#ip addr show

修改配置:

#vi /etc/sysconfig/network-scripts/ifcfg-eno1

其中eno1為所使用的網(wǎng)卡的名字,做以下修改:

  • ONBOOT=yes
  • BOOTPROTO=static #如果是自動(dòng)獲取ip,則是dhcp,且不需要配置下面的ip和mask我在這里用的是靜態(tài)ip
  • 添加ip地址 : IPADDR=192.168.34.124
  • 添加子網(wǎng)掩碼:NETMASK=255.255.255.0

修改完成后,重啟網(wǎng)絡(luò)服務(wù):

#systemctl restart network.service

4臺(tái)機(jī)子ip配置如下:

  • hadoop1 : 192.168.34.121
  • hadoop2 : 192.168.34.122
  • hadoop3 : 192.168.34.123
  • webserver : 192.168.34.124

關(guān)閉防火墻:

#systemctl disable firewalld.service

關(guān)閉之后,可以互相ping一下,看是不是能互相ping通

ssh免密登錄配置

hadoop三個(gè)節(jié)點(diǎn)必須要實(shí)現(xiàn)互相ssh免密登錄

參考 http://blog.csdn.net/triumphao/article/details/53264190

關(guān)閉SELinux

如果不關(guān)閉,hadoop啟動(dòng)可能會(huì)失敗

修改/etc/selinux/config 文件

SELINUX=enforcing

改為

SELINUX=disabled

重啟機(jī)器即可

大數(shù)據(jù)環(huán)境配置(java hadoop hbase zookeeper)

本部分是將hadoop安裝到hadoop1、hadoop2、hadoop3三臺(tái)機(jī)子上,其中hadoop1既是管理節(jié)點(diǎn),也是數(shù)據(jù)節(jié)點(diǎn),hadoop2和hadoop3是另外兩個(gè)數(shù)據(jù)節(jié)點(diǎn),需要安裝的有

  • jdk
  • hadoop,Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu),Hadoop=HDFS(文件系統(tǒng),數(shù)據(jù)存儲(chǔ)技術(shù)相關(guān))+ Mapreduce(數(shù)據(jù)處理)
  • hbase,HBase是建立在Hadoop文件系統(tǒng)之上的分布式面向列的數(shù)據(jù)庫。
  • ZooKeeper,ZooKeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。

配置步驟包括:

  1. 環(huán)境變量配置
  2. hadoop配置
  3. zookeeper配置
  4. hbase配置
  5. 啟動(dòng)配置

每臺(tái)機(jī)子上都要做以下配置

環(huán)境變量配置

  • 將軟件包 hadoop 2.6.1 、hbase 1.2.0 、jdk 1.8.0 、zookeeper 3.4.8
    以及data,tmp文件夾放到/usr/htdadao目錄下
  • 配置環(huán)境變量:profile文件追加內(nèi)容:
export JAVA_HOME=/usr/htdadao/jdk1.8.0_65
export HADOOP_HOME=/usr/htdadao/hadoop-2.6.1
export ZOOKEEPER_HOME=/usr/htdadao/zookeeper-3.4.8
export HBASE_HOME=/usr/htdadao/hbase-1.2.0
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 修改完成后,運(yùn)行以下指令使修改生效
#source profile

hadoop配置

  • 配置hadoop管理節(jié)點(diǎn)
#vim /usr/htdadao/hadoop-2.6.1/etc/hadoop/core-site.xml

修改后的文件為:(省略注釋)

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/htdadao/tmp/hadoop</value>
  <description>A base for other temporary directories.</description>
 </property>
 <property>
  <name>fs.default.name</name>
  <value>hdfs://hadoop1:9000</value>
 </property>
</configuration>
  • 配置數(shù)據(jù)節(jié)點(diǎn)
vim /usr/htdadao/hadoop-2.6.1/etc/hadoop/slaves

將各個(gè)節(jié)點(diǎn)的主機(jī)名寫到該文件,配置好的文件:

hadoop1
hadoop2
hadoop3
  • 修改備份數(shù)量
 #vim /usr/htdadao/hadoop-2.6.1/etc/hadoop/hdfs-site.xml

其中value表示數(shù)據(jù)備份數(shù)量,本例為1

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

配置zookeeper

  • 修改zookeeper配置文件
#vim /usr/htdadao/zookeeper-3.4.8/conf/zoo.cfg

修改后的文件:(省略注釋)

dataDir=/usr/htdadao/tmp/zookeeper
clientPort=2181

server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

有幾個(gè)server就加幾個(gè)server,server后面的數(shù)字與下一步的myid對(duì)應(yīng)

  • 配置zookeeper的myid
#vim /usr/htdadao/tmp/zookeeper/myid

修改每臺(tái)機(jī)子的id與上一步中的server后面的數(shù)字對(duì)應(yīng)

配置hbase

  • 配置管理數(shù)據(jù)的節(jié)點(diǎn)
#vim /usr/htdadao/hbase-1.2.0/conf/regionservers

修改后的文件內(nèi)容如下

hadoop1
hadoop2
hadoop3
  • 修改配置文件
#vim /usr/htdadao/hbase-1.2.0/conf/hbase-site.xml

修改后的文件:(省略注釋)

<configuration>
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://hadoop1:9000/hbase</value>
 </property>
 <property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
 </property>
 <property>
   <name>hbase.master</name>
   <value>hdfs://hadoop1:60000</value>
 </property>
 <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/htdadao/data/hbase/zookeeper</value>
 </property>
 <property>
   <name>hbase.zookeeper.quorum</name>
   <value>hadoop1,hadoop2,hadoop3</value>

啟動(dòng)配置

啟動(dòng)順序?yàn)閦ookeeper-->hadoop-->hbase

編寫啟動(dòng)腳本 start-hadoop.sh如下

ssh root@hadoop1 'echo "start-hadoop..."'
ssh root@hadoop1 '/usr/htdadao/zookeeper-3.4.8/bin/zkServer.sh start'
ssh root@hadoop2 '/usr/htdadao/zookeeper-3.4.8/bin/zkServer.sh start'
ssh root@hadoop3 '/usr/htdadao/zookeeper-3.4.8/bin/zkServer.sh start'
sleep 3
ssh root@hadoop1 '/usr/htdadao/hadoop-2.6.1/sbin/start-dfs.sh'
sleep 3
ssh root@hadoop1 '/usr/htdadao/hadoop-2.6.1/sbin/start-yarn.sh'
sleep 3
ssh root@hadoop1 '/usr/htdadao/hbase-1.2.0/bin/start-hbase.sh'
ssh root@hadoop1 'echo "hadoop1...jps -l"'
ssh root@hadoop1 'jps -l'

編寫啟動(dòng)腳本 stop-hadoop.sh如下

ssh root@hadoop1 'echo "stop-hadoop..."'
ssh root@hadoop1 '/usr/htdadao/hbase-1.2.0/bin/stop-hbase.sh'
sleep 3
ssh root@hadoop1 '/usr/htdadao/hadoop-2.6.1/sbin/stop-yarn.sh'
sleep 3
ssh root@hadoop1 '/usr/htdadao/hadoop-2.6.1/sbin/stop-dfs.sh'
sleep 3
ssh root@hadoop1 '/usr/htdadao/zookeeper-3.4.8/bin/zkServer.sh stop'
ssh root@hadoop2 '/usr/htdadao/zookeeper-3.4.8/bin/zkServer.sh stop'
ssh root@hadoop3 '/usr/htdadao/zookeeper-3.4.8/bin/zkServer.sh stop'
ssh root@hadoop1 'echo "hadoop1...jps -l"'
ssh root@hadoop1 'jps -l'

在第一次運(yùn)行腳本之前,每臺(tái)機(jī)子都需要運(yùn)行一下

#echo 'source /etc/profile' >> ~/.bashrc

查看運(yùn)行狀態(tài)

運(yùn)行start-hadoop.sh腳本成功后,可以看hbase中的表

#hbase shell

進(jìn)入hbase命令行,輸入指令list,如果出現(xiàn)所有的表,則啟動(dòng)成功

hbase(main):001:0> list
TABLE
ALERT
ENGINE
EXTREME
FUEL
GPS
LENGJI15S
MOTOR
VEHICLE
VOLTAGE
YLKZ
10 row(s) in 8.2730 seconds

各個(gè)節(jié)點(diǎn)的java進(jìn)程如下:

hadoop1:

[root@hadoop1 ~]# jps -l
3602 sun.tools.jps.Jps
2050 org.apache.hadoop.hdfs.server.datanode.DataNode
3011 org.apache.hadoop.hbase.regionserver.HRegionServer
2228 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
2854 org.apache.hadoop.hbase.master.HMaster
1910 org.apache.hadoop.hdfs.server.namenode.NameNode
2539 org.apache.hadoop.yarn.server.nodemanager.NodeManager
1743 org.apache.zookeeper.server.quorum.QuorumPeerMain

hadoop2:

[root@hadoop2 ~]# jps -l
2528 org.apache.hadoop.yarn.server.nodemanager.NodeManager
2341 org.apache.zookeeper.server.quorum.QuorumPeerMain
2711 org.apache.hadoop.hbase.regionserver.HRegionServer
2413 org.apache.hadoop.hdfs.server.datanode.DataNode
2957 sun.tools.jps.Jps

hadoop3:

[root@hadoop3 ~]# jps -l
2432 org.apache.hadoop.hdfs.server.datanode.DataNode
2549 org.apache.hadoop.yarn.server.nodemanager.NodeManager
2742 org.apache.hadoop.hbase.regionserver.HRegionServer
3002 sun.tools.jps.Jps
2363 org.apache.zookeeper.server.quorum.QuorumPeerMain

如果有某個(gè)進(jìn)程沒啟動(dòng),則表示該節(jié)點(diǎn)相關(guān)軟件啟動(dòng)失敗

軟件運(yùn)行環(huán)境配置(docker mysql kafka redis zookeeper tomcat)

安裝 docker

有兩種方式,離線和在線

離線安裝

該安裝方式基于該單位提供的離線安裝包和腳本

將 run.sh 和 docker_offline_install.tar 放在相同目錄. 運(yùn)行 run.sh

腳本根據(jù)輸入 可執(zhí)行以下操作:

  • 安裝 createrepo, 建立 /home/repo-local 目錄作為本地 yum repo
  • 添加rpm包, 配置yum源 (僅保留本地源, 其他源備份至 /etc/yum.repos.d_bak)
  • 安裝 docker-engine 和 docker-compose
  • 安裝 jdk(1.8.0_131), vim, nc, nmap, ntpdate, net-tools

該種安裝方式較為局限,如果操作系統(tǒng)版本不對(duì),則會(huì)出現(xiàn)部分依賴包版本不對(duì)的錯(cuò)誤,從而安裝失敗

在線安裝

在機(jī)器聯(lián)網(wǎng)的情況下可以直接在線安裝

這個(gè)沒試過在線安裝,需要查一下怎么做:安裝 createrepo, 建立 /home/repo-local 目錄作為本地 yum repo

其他試過了:

yum install docker
yum install vim
yum install nc
yum install nmap
yum install ntpdate
yum install net-tools

安裝 docker-compose需要通過pip安裝

參考 http://blog.csdn.net/gsying1474/article/details/52988784

安裝python-pip

#yum -y install epel-release
#yum -y install python-pip

安裝docker-compose

#pip install docker-compose 

待安裝完成后,執(zhí)行查詢版本的命令,驗(yàn)證是否成功

#docker-compose version

安裝完成

啟動(dòng)docker服務(wù):

#systemctl start docker.service

查看docker服務(wù)狀態(tài):

#systemctl status docker.service

停止docker服務(wù):

#systemctl stop docker.service

重啟docker服務(wù):

#systemctl restart docker.service

docker鏡像導(dǎo)入與啟動(dòng)

  1. 復(fù)制basicEnv和Dockerimage兩個(gè)文件夾到某個(gè)路徑下,此處以/opt/dadao為例;
  2. 導(dǎo)鏡像:
  • 進(jìn)入/opt/dadao后執(zhí)行l(wèi)s,查看下面的文件;
  • 進(jìn)入Dockerimage,執(zhí)行l(wèi)s查看其中的鏡像文件;
  • 依次執(zhí)行以下指令,導(dǎo)入四個(gè)鏡像文件;
#docker load –i kafka.img
#docker load –i zookeeper.img
#docker load –i redis.img
#docker load –i mysql.img
  • 再進(jìn)入basicEnv路徑下,執(zhí)行l(wèi)s查看文件,執(zhí)行以下命令,編輯其中的IP為當(dāng)前服務(wù)器的IP。
#vim docker-compose.yml
  1. 運(yùn)行導(dǎo)入的鏡像:
  • 進(jìn)入/opt/dadao/basicEnv路徑下;
  • 執(zhí)行
docker-compose up
  • 查看是否有報(bào)錯(cuò),如果有報(bào)錯(cuò)查看原因,沒有報(bào)錯(cuò),ctrl+c停止當(dāng)前進(jìn)程,執(zhí)行docker ps查看是否已經(jīng)停止;

  • 執(zhí)行指令將各鏡像對(duì)應(yīng)的服務(wù)跑起來:

docker-compose up –d
  • 執(zhí)行指令,查看執(zhí)行情況
docker ps
  • 執(zhí)行指令可以停止鏡像對(duì)應(yīng)的服務(wù)(如果需要)。
docker-compose down

tomcat安裝

官方下載地址:http://tomcat.apache.org/download-80.cgi

下載tar.gz壓縮包并解壓即可

如果防火墻是開著的,需要設(shè)置防火墻端口號(hào)

tomcat默認(rèn)端口是8080,以8080為例,執(zhí)行命令:

#firewall-cmd --zone=public --add-port=8080/tcp --permanent

#firewall-cmd reload

未完待續(xù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容