目录
- 概述
- 系统安装(CentOS 7.3)
- 大数据环境配置(java hadoop hbase zookeeper)
- 软件运行环境配置(docker mysql kafka redits zookeeper tomcat)
- 软件部署
- 跑起来
- 注意事项
- Q&A
软件部署
应用软件安装在主机webserver上,
IP 192.168.34.124
应用软件由某单位开发,主要包括以下几个:
- webservice
- datacollector
- dataprocessor
- alertprocessor
- simulator
- ddhbase
- vehicle(Web网站)
各模块之间的关系
这些应用软件的部署,主要工作是修改配置文件,确保与实际部署环境一致
应用软件部署
将以上安装包(除vehicle)放到 /opt/dadao/service/ 目录下
注意所有项目的配置文件中,关于mysql、WebService、kafka、redis、hbase、zookeeper等需要与部署机的主机名ip端口等匹配,相关配置例如在WebService中配置如下:
mysql:
druid.url=jdbc:mysql://192.168.34.124:30003/vms?characterEncoding=utf8&useSSL=true
hbase:
spring.data.hbase.quorum=hadoop1:2181
spring.data.hbase.rootdir=hdfs://hadoop1:9000/hbase
spring.data.hbase.port=16000
spring.data.hbase.infoPort=16010
spring.data.hbase.dataDir=/usr/htdadao/data/hbase/zookeeper
spring.data.hbase.clientPort=2181
kafka:
kafka.broker.address=192.168.34.124:30002
kafka.groupId=xinchangzheng
redis
spring.redis.host=192.168.34.124
spring.redis.port=30001
spring.redis.password=
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=0
主要是将每个配置文件中的ip和主机名改为实际部署的名称
web软件部署
将vehicle.war放到 /usr/tomcat8/webapps/ 目录下
启动tomcat的时候就可以启动该web服务,注意配置文件的修改,目录为
/usr/tomcat8/webapps/vehicle/WEB-INF/classes
如果有配置文件没有修改好,服务可能启动不起来,或者有问题,在这里掉了很多次坑
Run
大数据平台启动
大数据平台启动脚本在之前的文章中提到过,直接运行即可,注意查看各个节点的运行状态
docker启动
#cd /lyc/basicEnv
#docker-compose up -d
#docker-compose ps
注意查看四个服务是不是都启动了
软件启动
#cd /opt/dadao/service/webservice/bin
#./start.sh
#cd /opt/dadao/service/collector/bin
#./start.sh
#cd /opt/dadao/service/dataprocessor/bin
#./start.sh
#cd /opt/dadao/service/alertprocesser/bin
#./start.sh
#cd /opt/dadao/service/ddhbase/bin
#./start.sh
#cd /opt/dadao/service/simulator/bin
#./start.sh
#cd /usr/tomcat8/bin
#./startup.sh
通过以下指令查看应用启动情况
#jps -l
访问网站
在浏览器输入以下地址
http://192.168.34.124:8088/vehicle
如果各个软件启动成功,则可访问网站
注意查看是否有在线车辆显示,历史数据是否可以成功访问
注意事项
- 注意各个文件的权限,为了方便,凡是我用到的,我都将权限设为 755
- 大数据平台,第一次启动的时候,执行启动脚本需要把每台机子的profile变量写到 ~/.bashrc
#echo 'source /etc/profile' >> ~/.bashrc
- 遇到问题,找配置文件,找日志
Q&A
Q:
配置网络的时候
#vi /etc/sysconfig/network-scripts/ifcfg-eno1
改成静态启动,添加ip地址、网关、掩码,将ONBOOT=yes
执行
#service network restart
此步骤出错
A:
解决方法:
参考 http://doc.okbase.net/1169607/archive/113415.html ,使用命令运行
cat /var/log/messages | grep network
命令查看日志中出现的与network相关的信息,发现network 默认去启动的是eth0这个网卡,但是这个网卡我没有配置,
#ls /etc/sysconfig/network-scripts/
发现真的有一个ifcfg-eth0的空文件,rm掉,再次运行以下指令成功,ping也可以通
#service network restart
Q:
SELinux 永久关闭,docker-compose up无法启动镜像
A:
原因是,权限不够,修改basicEnv下的文件权限,将所有的文件添加执行权限,即可
Q:
在hadoop未启动的状态下怎么增加一个数据节点?
A:
新添加的节点配置如下
解压 hadoop hbase zookeeper jdk /usr/htdadao/
配置profile(邵网盘)
配置 core-site.xml 指定管理节点
配置 zookeeper/conf/zoo.cfg
每个节点都要配置:
- hadoop/etc/hadoop/slaves 增加数据节点
- hadoop hdfs-site.xml 修改备份数量
- zoo.cfg, 增加节点 server.2=hadoop2:2888:3888
- 修改新的节点 cd /usr/htdadao/tmp/zookeeper 改myid 改成2 ,与3中对应
- 修改hbase配置 增加节点 管理数据的节点
#vim /usr/htdadao/habase/conf/regionserver
- 修改hbase配置
#vim /usr/htdadao/habase/conf/hbase-site.xml hadoop1,hadoop2,...
Q:
在新添加数据节点之后,无法启动大数据平台
A:
- 注意查看hadoop、hbase、zookeeper的配置文件是否都修改对了
- 注意查看各个主机之间是否可以免密ssh登录
- 注意文件的权限,是否都有执行权限
- 如果新节点中的文件是从原来的节点中拷过来的,很多很多tmp和data中的数据是hadoop1中的,没有清,所以会导致dfs进入安全模式,应该直接用干净的文件夹
- 查看日志tail hbase-hadoop-master-hadoop1.log寻找原因
Q:
网站可正常访问,历史信息查不到,查验ddhbase日志,如下错误
2017-09-29 10:48:48.733 ERROR 6315 --- [http-nio-8081-exec-3] o.a.h.hbase.zookeeper.ZooKeeperWatcher : hconnection-0x5d0ed76f0x0, quorum=hadoop1:2181,hadoop2:2181,hadoop3:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
A:
在hadoop3上 jps -l发现hbase没有启动,date查看时间,发现hadoop3的时间有问题,与其他两个主机相差太大
修改hadoop3的系统时间,启动服务,一切正常
第二次部署中遇到的问题:
Q: SSH远程登录hadoop1特别慢,怎么回事?
A: ssh -v hadoop1 可查看debug信息,(或者ssh -vvv hadoop1 查看更详细的debug信息),发现卡在了 debug1: Applying options for * ,输出这句话后就一直在等,上网查
https://zhidao.baidu.com/question/556624340.html
解决办法:
请在主机的/etc/hosts文件里添加
你执行ssh的机器的IP信息。
比如说你在192.168.1.21上执行的ssh
192.168.1.212/etc/hosts里要有
192.168.1.21 sshclient
这样的信息
在hadoop1 的主机上 /etc/hosts 添加一行: 192.168.56.5 hadoop1
解决了登录过慢的问题
Q: 启动hadoop时,NameNode进程启动后消失,log中出现:java.io.IOException: NameNode is not formatted
A: 参考 http://mrlee23.iteye.com/blog/2009777 NameNode未初始化,初始化一下
注意:初始化会清除之前的数据
# hadoop namenode -format
提示是否重新初始化namenode,输入y
初始化成功后,hadoop即可登录,但是hbase中的东西都没了
于是需要从原来部署成功的机子上,将数据拷贝恢复到这个集群:
参考1 http://greatwqs.iteye.com/blog/1839232
参考2 http://blog.csdn.net/bigkeen/article/details/51034902
因为部署的是hbase 1.2.0
因此表的位置和参考1的不太一样
表位于hadoop文件结构的 /hbase/data/default 下面
按照参考2的离线迁移方法,将整个default文件夹拷贝和恢复即可
参考2中第4步
在我的hbase 1.2.0 中并没有add_table.rb这个文件
因此继续查
http://blog.csdn.net/jiangheng0535/article/details/10387167
执行(重新分区)指令
#hbase hbck -fixAssignments
即可修复