经过近一个月的学习和实践,终于成功部署了车辆监控软件成功,在这里将相关的步骤和遇到的坑总结一下
目录
- 概述
- 系统安装(CentOS 7.3)
- 大数据环境配置(java hadoop hbase zookeeper )
- 软件运行环境配置(docker mysql kafka redis zookeeper tomcat)
- 软件部署
- 跑起来
- 注意事项
- Q&A
概述
本项目为某单位开发的“电动汽车监控系统”,采用一个终端盒子从电动汽车上采集数据,使用4G发送出去,服务端接收到数据后进行预处理,使用kafka进行消息分发,将实时数据存储在redis,将历史数据存储在hbase,通过webservice向web前端传递mysql数据,从而实现电动汽车的实时数据的监控以及历史数据的回放。本文将描述如何在以下的软硬件环境下,进行该监控系统的配置与部署。
结构图:
硬件环境
- 1号机 工作站1 thinkstation i7
- 2号机 工作站2 thinkstation i7
- 3号机 服务器1 Dell Intel Xeon
- 4号机 服务器2 Dell Intel Xeon
- 交换机一台,网线若干
其中
- 1号机安装hadoop管理节点
- 1、2、3号机安装hadoop三个数据节点
- 4号机安装服务软件,web软件
软件环境
软件由对方单位提供,包括以下几部分:
- CentOS 7.3 安装盘
- hadoop 2.6.1 、hbase 1.2.0 、jdk 1.8.0 、zookeeper 3.4.8
- 配置好的data、tmp文件夹,profile文件
- 大数据启动、停止脚本
- docker离线安装包,安装脚本,redis、kafka、mysql、zookeeper镜像,docker基础环境
- tomcat安装包
- 应用软件发布包(webservice、datacollector、dataprocessor、alertprocessor、simulator、ddhbase、vehicle)
系统安装(CentOS 7.3)
系统为对方单位提供的CentOS 7.3 安装盘(也可以自己做一个安装盘,但是如果系统版本不一样的话,在安装docker的时候,会报错,因为有些依赖包的版本对不上,太新和太旧都不行,这时候,可以采用yum安装的方式,详见后文)
系统安装步骤
- 如果想装双系统就先清出来一个空白分区
- 插入光盘
- 重启电脑,设置boot选项,从光盘启动
- 如果光盘没问题的话,直接进入安装界面,如果进不去,换一张盘或者重新刻盘
- 保持默认最小系统安装
- 手动创建分区,去掉/home分区,保持/swap、/boot,然后将剩下所有的空间分配给/
- 开始安装系统
- 系统安装重启电脑
- 如果是双系统,开机后只能进入CentOS,无法进入原来的windows,这时候要进行以下修改:
安装CentOS和Windows双系统,开机没有Windows选项的解决办法:
进入centos系统,修改/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 ###
如此,即可将系统安装好
系统基本配置
日期时间
CentOS 设置日期
#date -s 09/28/2017
设置时间
#date -s 17:21
写入硬件
#clock -w
各主机之间的时间差不可超过30s,否则hadoop节点起不来
主机名配置
#hostnamectl set-hostname xxx
本次配置的主机名如下
- 1号机: hadoop1
- 2号机: hadoop2
- 3号机: hadoop3
- 4号机: webserver
网络配置
查看当前网卡的ip和配置:
#ip addr show
修改配置:
#vi /etc/sysconfig/network-scripts/ifcfg-eno1
其中eno1为所使用的网卡的名字,做以下修改:
- ONBOOT=yes
- BOOTPROTO=static #如果是自动获取ip,则是dhcp,且不需要配置下面的ip和mask我在这里用的是静态ip
- 添加ip地址 : IPADDR=192.168.34.124
- 添加子网掩码:NETMASK=255.255.255.0
修改完成后,重启网络服务:
#systemctl restart network.service
4台机子ip配置如下:
- hadoop1 : 192.168.34.121
- hadoop2 : 192.168.34.122
- hadoop3 : 192.168.34.123
- webserver : 192.168.34.124
关闭防火墙:
#systemctl disable firewalld.service
关闭之后,可以互相ping一下,看是不是能互相ping通
ssh免密登录配置
hadoop三个节点必须要实现互相ssh免密登录
参考 http://blog.csdn.net/triumphao/article/details/53264190
关闭SELinux
如果不关闭,hadoop启动可能会失败
修改/etc/selinux/config 文件
将
SELINUX=enforcing
改为
SELINUX=disabled
重启机器即可
大数据环境配置(java hadoop hbase zookeeper)
本部分是将hadoop安装到hadoop1、hadoop2、hadoop3三台机子上,其中hadoop1既是管理节点,也是数据节点,hadoop2和hadoop3是另外两个数据节点,需要安装的有
- jdk
- hadoop,Hadoop是一个由Apache基金会所开发的分布式系统基础架构,Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理)
- hbase,HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。
- ZooKeeper,ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
配置步骤包括:
- 环境变量配置
- hadoop配置
- zookeeper配置
- hbase配置
- 启动配置
每台机子上都要做以下配置
环境变量配置
- 将软件包 hadoop 2.6.1 、hbase 1.2.0 、jdk 1.8.0 、zookeeper 3.4.8
以及data,tmp文件夹放到/usr/htdadao目录下 - 配置环境变量:profile文件追加内容:
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
- 修改完成后,运行以下指令使修改生效
#source profile
hadoop配置
- 配置hadoop管理节点
#vim /usr/htdadao/hadoop-2.6.1/etc/hadoop/core-site.xml
修改后的文件为:(省略注释)
hadoop.tmp.dir
/usr/htdadao/tmp/hadoop
A base for other temporary directories.
fs.default.name
hdfs://hadoop1:9000
- 配置数据节点
vim /usr/htdadao/hadoop-2.6.1/etc/hadoop/slaves
将各个节点的主机名写到该文件,配置好的文件:
hadoop1
hadoop2
hadoop3
- 修改备份数量
#vim /usr/htdadao/hadoop-2.6.1/etc/hadoop/hdfs-site.xml
其中value表示数据备份数量,本例为1
dfs.replication
1
配置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
有几个server就加几个server,server后面的数字与下一步的myid对应
- 配置zookeeper的myid
#vim /usr/htdadao/tmp/zookeeper/myid
修改每台机子的id与上一步中的server后面的数字对应
配置hbase
- 配置管理数据的节点
#vim /usr/htdadao/hbase-1.2.0/conf/regionservers
修改后的文件内容如下
hadoop1
hadoop2
hadoop3
- 修改配置文件
#vim /usr/htdadao/hbase-1.2.0/conf/hbase-site.xml
修改后的文件:(省略注释)
hbase.rootdir
hdfs://hadoop1:9000/hbase
hbase.cluster.distributed
true
hbase.master
hdfs://hadoop1:60000
hbase.zookeeper.property.dataDir
/usr/htdadao/data/hbase/zookeeper
hbase.zookeeper.quorum
hadoop1,hadoop2,hadoop3
启动配置
启动顺序为zookeeper-->hadoop-->hbase
编写启动脚本 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'
编写启动脚本 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'
在第一次运行脚本之前,每台机子都需要运行一下
#echo 'source /etc/profile' >> ~/.bashrc
查看运行状态
运行start-hadoop.sh脚本成功后,可以看hbase中的表
#hbase shell
进入hbase命令行,输入指令list,如果出现所有的表,则启动成功
hbase(main):001:0> list
TABLE
ALERT
ENGINE
EXTREME
FUEL
GPS
LENGJI15S
MOTOR
VEHICLE
VOLTAGE
YLKZ
10 row(s) in 8.2730 seconds
各个节点的java进程如下:
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
如果有某个进程没启动,则表示该节点相关软件启动失败
软件运行环境配置(docker mysql kafka redis zookeeper tomcat)
安装 docker
有两种方式,离线和在线
离线安装
该安装方式基于该单位提供的离线安装包和脚本
将 run.sh 和 docker_offline_install.tar 放在相同目录. 运行 run.sh
脚本根据输入 可执行以下操作:
- 安装 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
该种安装方式较为局限,如果操作系统版本不对,则会出现部分依赖包版本不对的错误,从而安装失败
在线安装
在机器联网的情况下可以直接在线安装
这个没试过在线安装,需要查一下怎么做:安装 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
待安装完成后,执行查询版本的命令,验证是否成功
#docker-compose version
安装完成
启动docker服务:
#systemctl start docker.service
查看docker服务状态:
#systemctl status docker.service
停止docker服务:
#systemctl stop docker.service
重启docker服务:
#systemctl restart docker.service
docker镜像导入与启动
- 复制basicEnv和Dockerimage两个文件夹到某个路径下,此处以/opt/dadao为例;
- 导镜像:
- 进入/opt/dadao后执行ls,查看下面的文件;
- 进入Dockerimage,执行ls查看其中的镜像文件;
- 依次执行以下指令,导入四个镜像文件;
#docker load –i kafka.img
#docker load –i zookeeper.img
#docker load –i redis.img
#docker load –i mysql.img
- 再进入basicEnv路径下,执行ls查看文件,执行以下命令,编辑其中的IP为当前服务器的IP。
#vim docker-compose.yml
- 运行导入的镜像:
- 进入/opt/dadao/basicEnv路径下;
- 执行
docker-compose up
查看是否有报错,如果有报错查看原因,没有报错,ctrl+c停止当前进程,执行docker ps查看是否已经停止;
执行指令将各镜像对应的服务跑起来:
docker-compose up –d
- 执行指令,查看执行情况
docker ps
- 执行指令可以停止镜像对应的服务(如果需要)。
docker-compose down
tomcat安装
官方下载地址:http://tomcat.apache.org/download-80.cgi
下载tar.gz压缩包并解压即可
如果防火墙是开着的,需要设置防火墙端口号
tomcat默认端口是8080,以8080为例,执行命令:
#firewall-cmd --zone=public --add-port=8080/tcp --permanent
#firewall-cmd reload
未完待续