1、编译DBus源代码
DBus本身是一个前后端分离的maven多模块项目,前端基于React,后端基于SpringCloud全家桶 。
到 https://github.com/BriData/DBus 拉取源码
我本地已经安装好了
通过git工具拉取代码到本地
git clone https://github.com/BriData/DBus.git
通过idea打开项目
先编译后端代码
在dbus-commons/pom.xml 中,需要在占位符处引入 mysql和 oracle相关包
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.2.0</version> </dependency>
修改依赖组件的版本号
修改
dbus-main是总体工程,其中encoder-base、 dbus-commons等一些模块是公共模块,会被其他引用。
所以,推荐直接在dbus-main工程上使用mvn clean package命令进行编译。
编译完成后,DBus/deployer/target目录下的deployer-0.6.1.zip就是最终的部署文件
前端代码编译
使用淘宝NPM镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
前端编译
修改源码:
# (1) 文件:DBus/dbus-keeper/keeper-web/app/containers/Project/route/index.js,确保目录Project首字母P是大写,源码中有几行是project // 导入自定义组件 # 注意,确保第一行import的路径为'@/app/containers/App' import App from '@/app/containers/App' import TopologyWrapper from '@/app/containers/Project/TopologyWrapper' import TableWrapper from '@/app/containers/Project/TableWrapper' import SinkWrapper from '@/app/containers/Project/SinkWrapper' import UserWrapper from '@/app/containers/Project/UserWrapper' import ResourceWrapper from '@/app/containers/Project/ResourceWrapper' import FullpullWrapper from '@/app/containers/Project/FullpullWrapper' import MonitorWrapper from '@/app/containers/Project/MonitorWrapper' import UserKeyDownloadWrapper from '@/app/containers/Project/UserKeyDownloadWrapper'
# (2) 文件:DBus/dbus-keeper/keeper-web/app/components/index.js,确保目录common是小写,源码中有几行是Common // common 公共无状态组件 export Bread from './common/Bread' export Navigator from './common/Navigator' export Header from './common/Header' export Foot from './common/Foot' export OperatingButton from './common/OperatingButton' export FileTree from './common/FileTree'
# (3) 将DBus/dbus-keeper/keeper-web/app/containers/Project目录下的几个js文件的名称首字母改成大写 [admin@hdp01 Project]$ mv resourceWrapper.js ResourceWrapper.js [admin@hdp01 Project]$ mv tableWrapper.js TableWrapper.js [admin@hdp01 Project]$ mv topologyWrapper.js TopologyWrapper.js
进入DBusdbus-keeperkeeper-web下,在执行如下命令
cnpm install
编译
cnpm run build
编译成功后,在keeper-web生成了build目录,整个目录都是我们需要的前端文件
2、基础软件安装部署
在各个节点安装ZIP
sudo yum -y install zip
在安装软件之前,我们登录Ambari把用不到的服务先关掉,以节约
来。如下图所示,先保留Zookeeper和Ambari Metrics服务即可:
直接使用HDP3.1自带的Zookeeper,版本3.4.6正好合适,之前就安装好了这里保持不动,处于启动状态即可。
安装Kafka
生产上我们起码要部署三个节点的Kafka集群,这里我们就在node02上部署一个单点,
所有的部署方法、操作等跟部署集群没有差别。
后续步骤就一路下一步。
上传安装包到node02节点
解压安装包
unzip kafka-manager-2.0.0.0.zip ln -s kafka-manager-2.0.0.0 kafka-manager
创建软链接
配置环境变量:
sudo vim /etc/profile
末尾添加:
export KAFKA_MANAGER_HOME=/home/hadoop/app/kafka-manager
export PATH=$KAFKA_MANAGER_HOME/bin:$PATH
使环境变量生效
source /etc/profile
配置kafka-manager
修改如下配置项:
kafka-manager.zkhosts="node01:2181" basicAuthentication.enabled=true basicAuthentication.password="admin"
启动kafka-manager:
cd /home/hadoop/app/kafka-manager
#前台启动 kafka-manager -Dhttp.port=9999
#也可以后台启动 nohup $KAFKA_MANAGER_HOME/kafka-manager -Dhttp.port=9999 > kafka-managernohup.log 2>&1 &
访问 http://node02:9999/ 前提是配置好hosts文件
用户名 admin
密码admin
接下来添加一个kafka集群到kafka-manager
其余选项根具体是修改,不需要修改的保持默认即可,直接点击保存即可,至此kafka-manager就安装
好了,一个Kafka-manager可以管理多个集群。
保存后:
此时,Kafka-manager是获取不到Kafka Broker的相关信息的,cluster视图如下:
开启kafka的JMX
保存的时候,记得输入描述信息,这是个好习惯:
改完一定要重启kafka Broker才能生效:
我们可以看到Ambari考虑得比较全面,在生产环境肯定不能随意整体重启,肯定是滚动重启的。
安装Storm
基于步骤基本就是下一步。
安装InfluxDB
我们将infludb安装到node03
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.6.x86_64.rpm
安装
sudo yum -y localinstall influxdb-1.7.6.x86_64.rpm
启动
sudo systemctl start influxdb #启动influxdb
sudo systemctl status influxdb #查看状态
sudo systemctl enable influxdb #开启开机启动
初始化配置
登录influxdb
执行如下命令:
#执行初始化脚本 create database dbus_stat_db use dbus_stat_db CREATE USER "dbus" WITH PASSWORD 'dbus' #配置监控数据的保留时间,实际生产时根据自己的运维要求来定 ALTER RETENTION POLICY autogen ON dbus_stat_db DURATION 15d exit
安装Grafana
Ambari使用的Grafana根DBus依赖的版本不一样,需要单独安装以便于导入Dashboard
我们安装在node02上:
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x86_64.rpm
sudo yum -y localinstall grafana-4.2.0-1.x86_64.rpm
配置文件:
sudo vim /etc/grafana/grafana.ini
我们保持默认,启动即可:
sudo systemctl start grafana-server sudo systemctl status grafana-server sudo systemctl enable grafana-server.service #设置开机启动
登录Grafana:
访问 http://node02:3000/login
默认的用户名密码是admin/admin,登录即可。
生成GrafanaToken
Dbus使用Grafana展示数据线监控信息。需要提供Grafana Token进行监控模板的初始化。
点击打开API Keys管理页面:
添加Key
在跳出来的页面拷贝Key并并保存好:
eyJrIjoiZTQ3Zk9lUnR3Q3N4OThvQlA2bTZoWWlOMlJtN0dMQm4iLCJuIjoiZ3JhZmFfYWRtaW4iLCJpZCI6MX0= curl -H "Authorization: Bearer eyJrIjoiZTQ3Zk9lUnR3Q3N4OThvQlA2bTZoWWlOMlJtN0dMQm4iLCJuIjoiZ3JhZmFfYWRtaW4iLCJpZCI6MX0=" http://node02:3000/api/dashboards/home
创建MySQL dbusmgr库
DBus的Web管理模块就是一个web程序,它需要用到Mysql数据库,我们复用Ambari所用的node01
上安装的MySQL即可,但是需要创建库、用户和表。
在node01上登录MySQL(密码是root)
mysql -u root -p
执行如下命令:
set global validate_password_policy=0; set global validate_password_mixed_case_count=0; set global validate_password_number_count=3; set global validate_password_special_char_count=0; set global validate_password_length=3; create database dbusmgr DEFAULT CHARSET utf8 COLLATE utf8_general_ci; create user 'dbusmgr'@'%' identified by 'dbusmgr'; flush privileges; grant all privileges on dbusmgr.* to 'dbusmgr'@'%' identified by 'dbusmgr'; flush privileges; exit
安装Nginx
我们在node03上安装Nginx
安装依赖环境,安装命令:
sudo yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
添加Nginx官方Yum源:
由于yum源中没有我们想要的nginx,那么我们就需要创建一个“/etc/yum.repos.d/nginx.repo”的文件,其实就是新增一个yum源。
sudo vim /etc/yum.repos.d/nginx.repo
然后将下面的内容复制进去:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
然后保存“/etc/yum.repos.d/nginx.repo”文件后,我们就使用yum命令查询一下我们的nginx的yum源配置好了没有。
sudo yum list |grep nginx
然后要安装我们的nginx就直接执行:
sudo yum -y install nginx
也可以查看一下是否安装完成:
rpm -q nginx
启动Nginx:
sudo systemctl start nginx
sudo systemctl status nginx
sudo systemctl enable nginx #设置开机启动
访问Nginx:
http://node03/