车联网大数据平台运行环境部署总结(一)

经过近一个月的学习和实践,终于成功部署了车辆监控软件成功,在这里将相关的步骤和遇到的坑总结一下

目录

  1. 概述
  2. 系统安装(CentOS 7.3)
  3. 大数据环境配置(java hadoop hbase zookeeper
  4. 软件运行环境配置(docker mysql kafka redis zookeeper tomcat)
  5. 软件部署
  6. 跑起来
  7. 注意事项
  8. Q&A

概述

本项目为某单位开发的“电动汽车监控系统”,采用一个终端盒子从电动汽车上采集数据,使用4G发送出去,服务端接收到数据后进行预处理,使用kafka进行消息分发,将实时数据存储在redis,将历史数据存储在hbase,通过webservice向web前端传递mysql数据,从而实现电动汽车的实时数据的监控以及历史数据的回放。本文将描述如何在以下的软硬件环境下,进行该监控系统的配置与部署。

结构图:

《车联网大数据平台运行环境部署总结(一)》 图1

硬件环境

  • 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的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

配置步骤包括:

  1. 环境变量配置
  2. hadoop配置
  3. zookeeper配置
  4. hbase配置
  5. 启动配置

每台机子上都要做以下配置

环境变量配置

  • 将软件包 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

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

<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>
  • 配置数据节点
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

<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

有几个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

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

<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>

启动配置

启动顺序为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镜像导入与启动

  1. 复制basicEnv和Dockerimage两个文件夹到某个路径下,此处以/opt/dadao为例;
  2. 导镜像:
  • 进入/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
  1. 运行导入的镜像:
  • 进入/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

未完待续

    原文作者:加班饭不好吃
    原文地址: https://www.jianshu.com/p/d588e706c734
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞