数果Tindex平台是数果智能自主研发的产品,用于解决大数据行业中实现大规模(PB级)行为数据实时接入、高效存储和快速查询,满足数据分析和数据挖掘等领域的需求。
数果Tindex平台核心组件包含Broker, Coordinator, MiddleManager, Overlord,Historical,整体架构如如图1所示:
图1 Tindex技术架构图
-
Broker节点:接受客户端请求,分发至各历史/实时节点,然后汇总返回客户端的节点
-
Coordinator节点:用于在平衡各历史节点负载的节点。
-
Overlord节点:用于调度实时/离线数据接入任务的节点。
-
MiddleManager节点:用于启动实时/离线数据接入任务的节点。
-
Historical节点:用于加载并提供历史数据查询功能的节点。
分布式集群借助Ambari进行部署,并利用Amabri对集群进行统一管理和监控,技术架构中的所有组件均通过Ambari进行部署、监控和管理,这里以3节点为例,介绍分布式集群的部署架构。
数果智能将Ambari汉化及添加自研组件后,改名为Alaska,整体框架基本不变,所以Alaska在此文档中仍称为Amabri,Ambari基本架构如图2所示
图2 Ambari架构图
Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、Hbase、Zookeper、Sqoop和Hcatalog等。
Ambari主要包括Ambari Server和Amabri Agent两部分,Ambari Server在整个架构中只有一个,元数据信息存储在Postgres数据库中,通过心跳信息的传递对多个Ambari Agent进行管理,Ambari Agent与主机一一对应,Ambari通过Ambari Agent对该主机上的组件进行管理。
如图3所示为基于Ambari的部署架构:
图3 Ambari的部署架构
3台主机对应3个Ambari Agent,其中一台主机安装Ambari Server,每台主机上安装、运行的进程如图,每台主机安装多个组件,节点上安装的进程由该节点主机性能等因素决定,可灵活调整。主机部署规划可咨询数果智能。组件之间具有依赖关系,所以组件的安装需基于上图的顺序(从下往上)进行安装配置。
具体安装流程如下:
1)安装Ambari-Server,注册主机
2)部署集群
3)修改配置、启动组件
4)集群测试
部署集群有两种方式供选择,一键部署和独立部署。
1)一键部署:主要在终端操作,修改安装所需的配置文件后,运行安装脚本;
2)独立部署:主要是通过Ambari的Web界面进行操作。
一键部署适合对Linux系统熟悉,对Json语法规则有所了解的人员。独立部署操作界面更友好,但耗时一些。建议非运维人员通过独立部署方式进行安装,具体操作在分布式集群部署部分有详细介绍,可先查看再决定部署方式。
本部分描述的单机版部署,所有服务均安装在同一台主机上,是在全新安装的主机上进行的,不建议在已有其它服务的主机上进行部署。由于部分环境内网无法访问,需要通过公网进行访问,则需要绑定公网IP,并且在启动部署脚本时会有些不同。
| 项目 | 要求 | 备注 |
|---|---|---|
| CPU | 4核以上 | |
| 总内存 | 16G以上 | |
| 磁盘 | 根据数据量、存储周期决定 |
表1 单机版主机配置要求
也可根据实际情况对主机配置进行调整,但不建议降低配置,主机安装系统(建议CentOS6.8)后,修改静态IP地址,下载单机版安装包,如果无法连接网络,请安装本地yum源。
解压单机版安装包,启动安装脚本,如果内网无法访问,需要通过公网IP对服务进行访问时,请绑定公网IP,且启动安装脚本时,参数选择会略有不同。
tar –zxvf single_deploy.tar.gz
cd single_deploy
1)无需公网IP时执行:
source single-deploy.sh –IP 192.168.0.120
)需要公网IP时执行:
source single-deploy.sh –IP 192.168.0.120 -public_IP 192.168.0.121
此时,所有服务安装完成并启动,如果需要公网IP才能访问,请开放端口80、8000、8887和8090,如果不需要公网IP,可以直接访问,则无需设置端口转发。
如果安装是通过无需公网IP的方式执行部署脚本,而安装完成后因其它原因需要通过公网IP才能访问时,请开放端口,且将以下参数的IP地址修改为公网IP:
cd /opt/apps/astro_sugo/analytics
vim config.js
collectGateway: 'http://192.168.0.122',
sdk_ws_url: 'ws://192.168.0.122:8887',
websdk_api_host: '192.168.0.122:8000'
测试方法与分布式集群测试一致,具体请参考分布式集群测试步骤。
| 项目 | 要求 | 备注 |
|---|---|---|
| 总CPU | 8核以上 | |
| 总内存 | 32G以上 | |
| 主机数量 | 3台以上 | |
| 磁盘 | 根据数据量、存储周期决定 |
表2 主机配置要求
也可根据实际情况对主机配置进行调整,但不建议降低配置
根据技术架构、部署架构及主机配置,合理规划组件的安装节点,表3为3节点的安装规划(3台主机配置均为4核16G),供参考,具体可咨询数果智能。
| Services | Components | Host1 | Host2 | Host3 |
|---|---|---|---|---|
| Ambari Metrics | Metrics Collector | √ | ||
| Grafana | √ | |||
| Metrics Monitor | √ | √ | √ | |
| PostgresQL | Postgres server | √ | ||
| Redis | Redis server | √ | ||
| Zookeeper | ZooKeeper Server | √ | √ | √ |
| HDFS | Namenode | √ | √ | |
| Datanode | √ | √ | √ | |
| ZKFailoverController | √ | √ | ||
| Journalnode | √ | √ | √ | |
| Yarn | Resourcemanager | √ | √ | |
| ProxyServer | √ | |||
| Nodemanager | √ | |||
| MapReduce | History Server | √ | ||
| Kafka | Kafka Broker | √ | ||
| Tindex | Broker | √ | √ | |
| Historical | √ | √ | ||
| Overlord | √ | √ | ||
| MiddleManager | √ | √ | ||
| Coordinator | √ | √ | ||
| Astro | ASTRO UI | √ | ||
| Gateway | Gateway Server | √ |
表3 安装配置要求
做好主机规划后,配置好各主机的静态IP,修改hostname,注意hostname需要为二级域名,如:test1.sugo.vm,如果是离线主机,需要配置本地yum安装源库。这部分的具体操作不做描述。
安装Ambari-Server的不同场景:
-
如果您的主机是新安装的,在配置静态IP、修改hostname后,可通过脚本一键安装Ambari-Server,这也是我们推荐的方式;
-
如果您的主机上有其它服务(部署架构中不包含该服务),请手动安装,或通过查看脚本start.sh使用参数,选择性执行脚本,或对其修改来进行安装;
-
如果需要将集群与已有的组件集成,请联系数果人员,由数果人员安装;
生产环境请与数果人员沟通或由数果人员进行安装,勿利用此脚本独自安装!
以下步骤是在新安装系统的主机上部署的过程:
-
创建数据存储目录,下载本地安装的yum源安装包(联系数果智能获取下载链接);
-
解压安装包,进入部署脚本目录${yum源下载目录}/sugo_yum/deploy_scripts/centos6/ambari-server/,修改host和ip.txt文件。host文件为各主机ip与hostname的映射,ip.txt文件为ambari-server所在主机外,其它所有主机的hostname+root用户密码,以空格分割;
-
修改完成后保存,执行脚本start.sh(http的端口号建议设置为81,因为安装网关时会占用端口号80),具体操作如下:
mkdir ${数据存储目录}
cd ${数据存储目录}
wget ${yum源下载链接}
tar –zxvf ${yum源下载目录}/sugo_yum.tar.gz
cd ${yum源下载目录}/sugo_yum/deploy_scripts/centos6/ambari-server/
vi host
192.168.10.1 test1.sugo.vm
192.168.10.2 test2.sugo.vm
192.168.10.3 test3.sugo.vm
vi ip.txt
test2.sugo.vm 123456
test3.sugo.vm 123456
./start.sh -http_port 端口号 –ambari_ip Ambari-Server节点IP
例:
./start.sh -http_port 81 –ambari_ip 192.168.10.1
如果没有报错信息,则表明ambari-server安装成功。登陆界面如图4所示, web UI默认端口8080(admin,admin),组件的安装可通过一键部署或独立部署实现。
图4 ambari-server登陆界面
主机注册及Ambari Metrics安装,通过Web界面登录后会提示注册集群、主机,ssh秘钥及安装Ambari Metrics,具体操作如下:
第1步:启动安装向导(如图5所示):
图5 Ambari安装向导页面
第2步:创建集群
命名集群,选择服务栈(此处仅勾选redhat6),浏览器打开http服务地址(如图6所示),选择1.0所在的目录,复制链接粘贴到Ambari界面的”基础URL”内(如图6所示)。
图6 基础URL链接
图7 选择服务栈
第3步:填写秘钥
点击下一步后,如图8所示,获取秘钥(在Ambari-server所在节点的终端查询),复制粘贴到安装选项界面(如图9所示),同时在界面填写目标主机:
cat ~/.ssh/id_rsa
图8 SSH秘钥
图9 安装选项界面
第4步:注册
确认注册,Ambari-Server便开始注册主机并检测环境,图10表明主机注册成功,点击下一步,勾选Ambari Metrics,点击下一步,分配主从节点,可打开下拉框选择将Ambari Metrics安装在您规划的主机上,一般默认即可,按照提示填写参数Grafana Admin Password(admin,admin。也可自行填写其它密码),下一步,部署,然后等待安装完成。
图10 主机注册及Ambari Metrics安装成功界面
首先,打开终端,进入部署脚本目录,按照部署架构或组件规划修改配置文件host_server.json(建议在其它编辑器上编辑,如notepad++,完成后复制到该文件内),修改install.py脚本,修改Ambari-Server节点的IP和界面注册时填写的集群名称,如图11所示。
图11 修改配置设置
接着,启动一键部署脚本,等待脚本执行完成,如图12所示,完成后打开Web界面:
python install.py
图12 正在安装服务界面
图12 显示正在安装相关组件,等待安装完成,完成后如图13所示,即可开始修改配置。
图13 成功安装服务界面
表4为需要修改的服务和参数:
| Services | Parameters | Value(example) | 备注 |
|---|---|---|---|
| Postgres | postgres.password | 123456 | Postgres数据库密码 |
| port | 15432 | Postgres数据库端口号 | |
| Gateway | bootstrap.servers | test1.sugo.vm:9092 | Kafka主机名:9092,多个kafka之间以逗号分割 |
| Druid | druid.license.signature | 联系数果智能获取秘钥 | |
| druid.metadata.storage. connector.connectURI |
jdbc:postgresql:// test1.sugo.vm: 15432/druid |
连接到Postgres的druid库地址 | |
| druid.metadata.storage. connector.password |
123456 | Postgres数据库密码 | |
| Astro | postgres.host | test1.sugo.vm | Postgres数据库主机名 |
| dataConfig.hostAndPorts | test1.sugo.vm:6379 | Redis数据库主机及端口号 | |
| db.host | test1.sugo.vm | Postgres数据库主机名 | |
| db.port | 15432 | Postgres数据库端口号 | |
| db.password | 123456 123456 | Postgres数据库密码 | |
| redis.host | test1.sugo.vm | Redis数据库主机 | |
| site.collectGateway | http://test1.sugo.vm | 数据上报网关 | |
| site.sdk_ws_url | ws://test1.sugo.vm:8887 | App可视化埋点socket链接 | |
| site.websdk_api_host | test1.sugo.vm | Web数据上报网关 | |
| site.websdk_decide_host | test1.sugo.vm:8000 | Web获取埋点事件服务端 | |
| site.websdk_app_host | test1.sugo.vm:8000 | Web获取埋点事件服务端 | |
| site.websdk_js_cdn | test1.sugo.vm:8000 | Web埋点埋点js服务cdn |
表4 修改的服务和参数
如图14 所示,修改Postgres的参数,具体参数表如表3所示,修改完成后保存,启动Postgres。
图14 修改Postgres参数
正常启动后,创建其它服务的依赖库(如图15所示):
cd /opt/apps/postgres_sugo
bin/psql -p 15432 -U postgres -d postgres -c "CREATE DATABASE druid WITH OWNER = postgres ENCODING = UTF8;"
bin/psql -p 15432 -U postgres -d postgres -c "CREATE DATABASE sugo_astro WITH OWNER = postgres ENCODING = UTF8;"
bin/psql -p 15432 -U postgres -d postgres -c "select datname from pg_database"
图15 创建依赖库窗口
直接点击启动按钮即可。
第1步:点击启动所有,启动完成后HDFS会出现如下报错信息(如图16所示),属正常现象。
图16 报错提示
第2步:在NameNode1节点上执行zkfc格式化(如图17所示):
su - hdfs -c "hdfs zkfc -formatZK -nonInteractive"
图17 zkfc格式化
第3步:格式化完成后,在界面启动所有zkfc(如图18所示)。
图18 ZKFC启动界面
图19 ZKFC重启界面
第4步:zkfc重启完成后,界面会显示zkfc处于启动状态,然后在NameNode1上执行格式化操作:
su - hdfs -c "hdfs namenode -format"
图20 NameNode1执行格式化
第5步:格式化完成后,在界面重启NameNode1(如图21)。
图21重启 NameNode1
第6步:启动完成后,如图22所示,界面会显示test1.sugo.vm上的NameNode已启动。
图22 成功启动NameNode1
第7步:在NameNode2节点执行格式化后的数据同步(如图22所示)。
su - hdfs -c "hdfs namenode -bootstrapStandby"
图23 NameNode2执行格式化后的数据同步
第8步:数据同步命令执行完成后,启动NameNode2
图24重启 NameNode
启动完成后不再显示报错信息
图25 HDFS安装启动成功
第9步:创建其它服务依赖的文件目录,在HDFS Client节点的终端执行如下命令:
su - hdfs
hdfs dfs -mkdir -p /remote-app-log/logs
hdfs dfs -chown -R yarn:hadoop /remote-app-log
hdfs dfs -chmod 777 /remote-app-log/logs
hdfs dfs -mkdir -p /mr_history/tmp
hdfs dfs -mkdir -p /mr_history/done
hdfs dfs -chmod 777 /mr_history/
hdfs dfs -mkdir -p /tmp/hadoop-yarn/staging
hdfs dfs -chmod 777 /tmp/hadoop-yarn/staging
hdfs dfs -mkdir -p /druid/hadoop-tmp
hdfs dfs -mkdir -p /druid/indexing-logs
hdfs dfs -mkdir -p /druid/segments
hdfs dfs -chown -R druid:druid /druid
hdfs dfs -mkdir -p /user/druid
hdfs dfs -chown -R druid:druid /user/druid
图26 HDFS上创建相关目录
第10步:在浏览器上打开NameNode的IP:50070页面,通过Amabari主机名打开页面时,需要在windows的host文件中配置IP与hostname的映射
打开文件C:\Windows\System32\drivers\etc\host
复制Linux下/etc/hosts文件内的映射,追加到Windows的host文件末尾
192.168.10.1 test1.sugo.vm
192.168.10.2 test2.sugo.vm
192.168.10.3 test3.sugo.vm
图27 打开HDFS文件目录界面
通过主机名打开HDFS界面:test1.sugo.vm:50070,查看Utilities,显示文件创建成功
图28 HDFS文件目录
第11步:配置NameNode1和NameNode2在 hdfs用户下的免密码登录,启动配置脚本(注:passwd为root用户密码):
cd {脚本存储目录}/sugo_yum/deploy_scripts/service
./password-less-ssh-hdfs.sh $namenode1 $passwd(NN1) $namenode2 $passwd(NN2)
例:
./password-less-ssh-hdfs.sh test1.sugo.vm 00000001 test2.sugo.vm 00000002
执行完成后检查hdfs用户免密码登录是否成功,在NameNode1或NameNode2上执行以下命令:
su – hdfs ssh $NameNode1 ssh $NameNode2
在此例中,命令为:
su – hdfs ssh test1.sugo.vm ssh test2.sugo.vm
如果能够成功的切换到两个NameNode的hdfs用户,则说明配置成功
直接按顺序启动即可
根据参数表修改参数,保存后启动即可
图29 修改Gateway参数
根据参数表修改参数,保存后启动即可
图30 Tindex启动成功
根据[数表修改参数,保存后启动即可
图31 Astro启动成功
独立部署在安装各个服务(如HDFS、YARN,图32所示左侧部分均称为服务)时,需要按照一定的顺序进行安装!
第1步:添加服务(如图33所示),选择服务,勾选Postgres-sugo,点击下一步
图32 添加服务
第2步:分配主从节点,选择Postgres安装的节点(如图34所示),点击下一步
图33 分配主节点
安装步骤与Postgresql基本相同,且无需修改配置信息,按照提示操作即可
添加服务,选择服务,分配主节点,此处有多个Zookeeper Server时,需要点击加号按钮选择多个节点安装同一个组件(此处组件为Ambari内的component)
图34 添加Zookeeper主节点
按照提示完成Zookeeper的安装,配置文件无需修改
第1步:按提示进行操作,分配主节点时,需要通过加号按钮添加一个NameNode(如图35所示),实现HDFS集群的高可用
图35 添加NameNode主节点
第2步:分配从节点和客户端(如图36所示) 前面的Postgresql/Redis/Zookeeper都只有主节点,HDFS既有主节点又有从节点,还有些服务只有从节点,点击下一步,部署
图36 选择从节点和客户端
注意:在安装完成后会出现报错信息(如图37所示),为正常现象,点击下一步,完成
图37 独立部署HDFS报错信息
解决办法与一键部署时的启动HDFS过程完全相同,请参考一键部署的启动HDFS部分
按照提示操作即可,注意ResourceManager需要两个(如图38所示),实现YARN的高可用
图38 分配YARN主节点、从节点和客户端
按照提示操作即可
按照提示操作即可
图39 选择Kafka从节点和客户端
Gateway的安装与前两个服务略微有些不同,但是基本没有差异,服务的安装包括三种情况:主节点分配、从节点和客户端分配、两者都有修改配置文件参数(如表5,注:如果没有该参数,则无需修改参数,安装包版本更新后,在ambari管理界面没有该参数)
| 配置项(参数) | 参数值 | 备注 |
|---|---|---|
| bootstrap.servers | test1.sugo.vm:9092 | Kafka主机名:9092,多个kafka之间以逗号分割 |
表5 Gateway需修改的参数
第1步:创建Postgres数据库druid(注:在Postgres所在节点执行,参数-p指定Postgres的端口号,如图40所示):
cd /opt/apps/postgres_sugo
bin/psql -p 15432 -U postgres -d postgres -c "CREATE DATABASE druid WITH OWNER = postgres ENCODING = UTF8;"
bin/psql -p 15432 -U postgres -d postgres -c "select datname from pg_database"
图40 在Postgres数据库中创建druid库
第2步:按照提示进行操作(如图41所示)
图41 选择druid从节点和客户端
第3步:修改配置文件(需修改参数如表6所示),然后按提示完成安装
| 配置项(参数) | 参数值 | 备注 |
|---|---|---|
| druid.license.signature | 联系数果智能获取秘钥 | |
| druid.metadata.storage.connector.connectURI | jdbc:postgresql://test1.sugo.vm:15432/druid | Postgresql数据库的druid库 |
表6 Tindex需修改的参数
图42 修改druid参数界面
第1步:创建Postgres数据库的sugo_astro库(如图43所示):
cd /opt/apps/postgres_sugo
bin/psql -p 15432 -U postgres -d postgres -c "CREATE DATABASE sugo_astro WITH OWNER = postgres ENCODING = UTF8;"
bin/psql -p 15432 -U postgres -d postgres -c "select datname from pg_database"
43在Postgres数据库中创建sugo_astro库
第2步:按提示继续后面的安装,修改配置文件(需修改参数如表7所示),修改完成后按提示完成安装(最新安装包参数会有些不一样,但需要填写的参数值的规则不变)
| 配置项(参数) | 参数值 | 备注 |
|---|---|---|
| postgres.host | test1.sugo.vm | Postgres数据库主机名 |
| dataConfig.hostAndPorts | test1.sugo.vm:6379 | Redis数据库主机及端口号 |
| db.host | test1.sugo.vm | Postgres数据库主机名 |
| db.port | 15432 | Postgres数据库端口号 |
| db.password | 123456 123456 | Postgres数据库密码 |
| redis.host | test1.sugo.vm | Redis数据库主机 |
| site.collectGateway | http://test1.sugo.vm | 数据上报网关 |
| site.sdk_ws_url | ws://test1.sugo.vm:8887 | App可视化埋点socket链接 |
| site.websdk_api_host | test1.sugo.vm | Web数据上报网关 |
| site.websdk_decide_host | test1.sugo.vm:8000 | Web获取埋点事件服务端 |
| site.websdk_app_host | test1.sugo.vm:8000 | Web获取埋点事件服务端 |
| site.websdk_js_cdn | test1.sugo.vm:8000 | Web埋点埋点js服务cdn |
表7 Astro需修改的参数
第1步:打开前端Web界面IP:8000(如图44所示,帐号密码分别为:admin,admin123456)
图44前端Astro登录界面
第2步:进入数据管理,项目管理(如图45所示)
图45前端Astro进入项目管理操作
第3步:新建项目,输入项目名称,提交后选择Csv文件接入,执行下一步(如图46所示)
图46选择接入数据类型
第4步:选择文件,进入下一步(如图50所示),输入名称,选择维度字段(全选),提交采集维度(如图49所示),开始采集,查看采集是否成功
图47配置接入参数
图48配置采集维度
第5步:点击自助分析(如图49所示),执行查询,出现总记录数且与源数据相同,证明部署成功(如图49所示)
图49查询总记录数
启动集群时,由于各组件之间具有依赖关系,需要按照一定的顺序启动各组件,可以按照图53所示的顺序启动各组件:
图50组件启动顺序参考图
通过Ambari界面更新数果智能自研组件,无需重复配置参数,暂时仅适用于数果智能自研组件。
更新服务具体步骤如下:
第1步:下载更新安装包到http服务所在目录,即Ambari指向的基础URL地址(如图54所示),在Ambari界面的管理员中查看,Linux系统上的位置一般为:/var/www/html/sugo_yum/SG/centos6/1.0,操作命令如下:
cd /var/www/html/sugo_yum/SG/centos6/1.0
wget {安装包链接(联系数果智能获取)} service httpd start
图51查看Ambari的基础URL地址
第2步:修改安装包包名,需与该服务配置文件中的package.name保持一致,之前的安装包可修改名称作为备份;
图52查看该服务配置文件中的package name
第3步:点击该服务的Client(如图56所示),选择该服务所在主机(如果该服务部署在多台主机上,每台主机都需要更新操作)
图53选择该服务的客户端
第4步:选择主机后,下拉页面到最底端,点击更新按钮(如图54所示),即可一键更新服务
图54一键更新服务操作
删除服务的功能尚未集成到Ambari管理界面,暂时只能通过API的方式删除服务。
删除服务具体步骤如下:
第1步:进入到ambari-server所在主机
第2步:执行以下命令,需修改的部分:ambari-server的IP,集群名称和服务名称,各服务服务名称如下
| 服务 | 服务名称 |
|---|---|
| PostgresQL | POSTGRES_SUGO |
| Redis | REDIS_SUGO |
| Zookeeper | ZOOKEEPER_SUGO |
| HDFS | HDFS_SUGO |
| YARN | YARN_SUGO |
| MapReduce | MAPREDUCE_SUGO |
| kafka | KAFA_SUGO |
| Gateway | GATEWAY_SUGO |
| Tindex | DRUIDIO_SUGO |
| Astro | ASTRO_SUGO |
表8 各服务在删除时,API命令中的服务名称
curl -u admin:admin -H "X-Requested-By: ambari" -X PUT -d '{"RequestInfo":{"context":"Stop Service"},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' http://192.168.0.220:8080/api/v1/clusters/sugo_test/services/ASTRO_SUGO
图55停止服务操作
执行完上面这条命令后,在ambari界面查看该服务是否已经停止,如果停止了,则执行以下命令,否则请等待服务停止,然后再执行以下命令:
图56停止服务
curl -u admin:admin -H "X-Requested-By: ambari" -X DELETE http://192.168.0.220:8080/api/v1/clusters/sugo_test/services/ASTRO_SUGO
图57删除服务操作
如果命令没有返回错误,则可查看ambari界面,刷新后即可看到该服务已经被删除(如下图)。
图58删除服务后的ambari界面
在已有Ambari的情况下,可能会遇到添加机器、扩展集群和迁移服务的需求,为了方便对集群的统一管理,增加Ambari-Agent则是一种比较合适的选择,增加Ambari-Agent后,通过Ambari对各服务进行迁移、增删等操作更加简便、友好。
增添Ambari-Agent主要分为主机准备、主机注册两个步骤,在完成主机注册后,即可在Ambari集群上对服务进行增删、迁移等。注:以下终端操作部分全部在Ambari-Server节点主机执行
第1步:主机准备
配置待添加主机的静态IP,修改hostname,注意hostname需要为二级域名,如:test1.sugo.vm,如果是离线主机,需要配置本地yum安装源库。
第2步:Agent环境准备
进入ambari-server所在主机终端,进入脚本目录/{安装包存储目录}/sugo_yum/deploy_scripts/centos6/ambari-agent(注:此处您的主机上可能不存在此目录,或者sugo_yum目录实际为yum,可以在github上下载脚本:https://github.com/Datafruit/deploy_scripts),修改hosts文件,hosts文件用于写入需要添加的agent的主机名,root用户的密码,该主机的IP地址按行写入,每行代表一个主机(ambari-agent),各项目之间以空格“ ”分割, 例:
test3.sugo.vm 123456789 192.168.0.122
修改完成后保存,执行脚本pre_add_agent.sh,此脚本用于安装agent前的主机准备,包括安装jdk、配置ambari-server到该agent的ssh免密码登录、系统优化等,且jdk、ssh免密码可选择性安装,具体使用可通过如下命令进行查看
./pre_add_agent.sh –help
例:
./pre_add_agent.sh -http_port 81 -ambari_ip 192.168.0.120
第3步:注册主机
运行脚本add_agent.py,此脚本用于安装、注册ambari-agent,会在hosts文件中列出的主机上安装注册agent,运行此脚本需输入参数:集群名称 ambari-server的IP地址 例:
python add_agent.py testCluster 192.168.0.120
注:此脚本包含安装和注册两个部分,由于主机的配置等因素不同,安装所需时间也会不同,而注册需要安装完成后才可执行,此处设置安装等待时间为5秒,若因配置原因,脚本注册部分执行失败,重复执行该脚本即可
图59注册Ambari-Agent
注册如果没有报错,则表明Agent注册成功,查看Web管理界面,如下图显示test3.sugo.vm注册成功,即可在此基础上管理相关服务。
图60 Ambari-Agent注册成功后的Web管理界面
在迁移服务之前,请注意,需要将下线节点所在的服务的数据转移到其它节点,所以需要先添加服务,此处以kafka为例:
第1步:添加kafka服务的组件kafka broker
选择新添加的主机,如此处的test3.sugo.vm,点击增加,选择Kafka Broker,如图61所示:
图61 增加Kafka Broker
此时,返回kafka主界面,会看到Kafka Broker从1个变成了2个,如图63所示:
图62 增加Kafka Broker后的Kafka主界面
第2步:迁移数据
手工将test1.sugo.vm主机上Kafka的数据迁移至test3.sugo.vm上
第3步:删除旧的Kafka Broker
进入到Ambari界面旧主机(此处为test1.sugo.vm),停止该主机的Kafka Broker,如图63所示:
图63 停止旧主机的Kafka Broker
正确停止该Kafka Broker后,点击该选项的删除按钮,删除完成后即将Kafka从test1.sugo.vm迁移到test3.sugo.vm上。如果只需要添加Kafka Broker,省略第3步。




































































