Skip to content

Ambari Installation for Distributed EasyML Cluster

callmevan edited this page Mar 22, 2018 · 7 revisions

序言

本文资源汇总

官网链接
百度云盘

一、介绍

1.1 Ambari

Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。目前最新的发布版本是 2.6.0。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等), 而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。 Ambari 现在所支持的平台组件也越来越多,例如流行的 Spark,Storm 等计算框架,以及资源调度平台 YARN 等,我们都能轻松地通过 Ambari 来进行部署。 Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。

1.2 HDP

HDP是hortonworks的软件栈,里面包含了hadoop生态系统的所有软件项目,比如HBase,Zookeeper,Hive,Pig等等。

1.3 HDP-UTILS

HDP-UTILS是工具类库。

二、搭建环境

操作系统: CentOS7 64位

JDK:1.8.0_40 64位

Ambari:2.4.0

HDP:2.5.0

HDP-UTILS:1.1.0.21

2.1 服务器安装准备工作

2.2 Ambari安装准备工作(所有机器)

2.2.1 配置主机名(以master为例)

修改主机名

# vim /etc/hostname
将主机名修改为:master.easyml
hostname

修改网络配置文件

# vim /etc/sysconfig/network
添加:

NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=master.easyml
GATEWAY= 当前主机网关

network

配置主机解析

# vim /etc/hosts
添加所有主机解析:

master机器ip地址 master.easyml master
slave机器ip地址 slave01.easyml slave01
slave机器ip地址 slave02.easyml slave02
...

2.2.2 安装网络工具包

查看是否已安装

# rpm -qa|grep net-tools
netool

配置网络

根据机器具体情况进行网络配置,使主机可以直接访问网络。

2.2.3 关闭防火墙&Selinux

关闭防火墙
# systemctl stop firewalld.service
# systemctl disable firewalld.service
# firewall-cmd --state

firewall

关闭Selinux

# vim /etc/selinux/config
修改:

SELINUX=disabled

selinux

重启机器,检查是否关闭
# sestatus
selinux

2.2.4 关闭THP服务

# vim /etc/rc.local
添加:

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
  echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
exit 0

# echo never > /sys/kernel/mm/transparent_hugepage/enabled
检查THP是否被禁用:
# cat /sys/kernel/mm/transparent_hugepage/enabled
THP

2.2.5 配置无密码登录(以master为例)

所有主机上建立ssh免密码登录文件
# ssh-keygen  -t  rsa  -P  ""
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
# chmod 700 ~/.ssh
将操作ambari-server的Web UI机器的rsa公钥发送给安装集群的各个主机
# scp ~/.ssh/id_rsa.pub root@slave01~/
# scp ~/.ssh/id_rsa.pub root@slave02~/
...
在各个集群主机上追加收到的公钥到自己的密钥里

# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

把"~/"目录下的"id_rsa.pub"文件删除

# rm -rf ~/id_rsa.pub

修改/etc/ssh/sshd_config,确保服务开启

# vim /etc/ssh/sshd_config
去掉注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

sshd

重启服务
# /bin/systemctl restart sshd.service

2.2.6 同步时间

  • 选择一台机器作为ntp服务器,以master机器为例
在master机器上需启动ntpd

# /bin/systemctl start ntpd.service
# systemctl enable ntpd.service

其他机器必须关闭ntpd,并启动ntpdate

# /bin/systemctl stop ntpd.service
# /bin/systemctl start ntpdate.service

修改master机器上的ntp服务器文件

# vim /etc/ntp.conf
添加:

server 127.127.1.0
fudge 127.127.1.0 stratum 8

配置slave机器

# vim /etc/ntp.conf
添加:

server master机器ip

master机器上重启ntpd服务

# /bin/systemctl restart ntpd.service
# watch ntpq -p ntpd
注意:第6列reach达到17时,表示ntpd已完成自身的时间同步

同步slave机器

# ntpdate master

设置定时任务

# crontab -e
添加:

*/15 * * * * ntpdate master

2.3 搭建yum源服务器

2.3.1 安装Http服务器

  • 选择一台机器作为ntp服务器,以master机器为例
检查系统是否已经安装http服务

# which httpd
httpd

若没有出现上述目录信息,则需要安装

# sudo yum install httpd
# systemctl start httpd.service

2.3.2 制作离线源

解压Ambari及HDP相关包并复制到/var/www/html目录下

hdp
目录说明:

ambari目录:包含ambari-server,ambari-agent,ambari-log4j等rpm包
HDP目录:包含hadoop的生态圈的组件,比如hdfs,hive,hbase,mahout等
HDP-UTILS目录:包含HDP平台所包含的工具组件等,比如nagios,ganglia,puppet等

2.3.3 使用yum源

删除所有机器自带的/etc/yum.repos.d目录下的所有repo文件
编辑repo文件
# cd /var/www/html/AMBARI-2.4.1.0/
# sh setup_repo.sh
# cp ./ambari.repo  /etc/yum.repos.d/
# cd /var/www/html/HDP/centos7
# cp ./hdp.repo /etc/yum.repos.d/

2.3.4 复制repo文件到其他机器/etc/yum.repo.d/目录下

# scp /etc/yum.repos.d/*.repo root@slave01:/etc/yum.repos.d/
# scp /etc/yum.repos.d/*.repo root@slave02:/etc/yum.repos.d/
...

2.4 安装MySQL(任一机器,以slave02为例)

2.4.1 相关文件

Mysql相关包:

mysql-community-client-5.7.20-1.el7.x86_64.rpm
mysql-community-devel-5.7.20-1.el7.x86_64.rpm
mysql-community-server-5.7.20-1.el7.x86_64.rpm
mysql-connector-java-5.1.38-bin.jar

将connector包放入目录:/usr/share/java

2.4.2 卸载MySQL与mariaDB

查找是否安装有MySQL

# rpm -qa|grep -i mysql
如果没有结果,可以进行下一步;否则请彻底删除MySQL。

查找是否安装有mariaDB

# rpm -qa|grep -i mariadb
如果没有结果,可以进行下一步;否则请彻底删除mariaDB。

2.4.3 安装自己下载的MySQL

# rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm --force --nodeps
# rpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm --force –nodeps
# rpm -ivh mysql-community-devel-5.7.20-1.el7.x86_64.rpm --force --nodeps

检验:
# find /usr/bin -name mysqladmin
# find /usr/bin -name mysqldump
mysql
若出现信息如图,则表示安装成功

启动MySQL

# /bin/systemctl start mysqld.service

2.4.4 设置root密码

设置/etc/my.cnf

# vim /etc/my.cnf
添加:

skip-grant-tables
validate-password=OFF

sqlpass

设置root密码

# mysql_secure_installation
注意:设置完后需要将my.cnf复原并重启MySQL。

2.4.5 MySQL相关配置

登录MySQL

# mysql –uroot –p

创建ambari用户
CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'localhost';
CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';
CREATE USER 'ambari'@'master.easyml' IDENTIFIED BY 'ambari';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'master.easyml';

2.5 安装Ambari(以master为例)

2.5.1 将服务器上的软件包信息缓存到本地

清空节点缓存文件

# yum clean all

将软件包缓存到本地

# yum makecache

检验配置是否正确

# yum search ambari-agent
如果可以看到Ambari 的对应版本的安装包列表,说明公共库已配置成功。

2.5.2 Ambari Server安装

若之前安装过,则先卸载

# yum erase ambari-server

安装

# yum install ambari-server
# ambari-server setup
注意:

  1. 指定Ambari Server的运行用户为root
  2. 选择Custom JDK,填写已安装JDK路径
  3. 进入高级数据库配置,选择PostgreSQL
配置MySQL驱动包

# ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java-5.1.38-bin.jar

2.5.3 启动Ambari界面

# ambari-server start
# ambari-server status
ambari
若出现图中信息则表示启动成功,否则查看日志/var/log/ambari-server/ambari-server.log查找是否有错误。
在浏览器输入http://localhost:8080即可访问Ambari GUI,登录账号密码为admin/admin. 8080

2.5.4 停止Ambari服务

所有机器

# ambari-agent stop

Ambari-Server机器

# ambari-server stop

重启

# ambari-server restart

2.6 部署一个Hadoop 2.x集群

2.6.1 开启Ambari安装向导

登录 Ambari 之后,点击按钮“Launch Install Wizard”,就可以开始创建属于自己的大数据平台。 hadoop

2.6.2 为集群命名

在文本框中输入集群的名字

2.6.3 选择Stack---Hadoop生态圈软件的集合

指定HDP版本和HDP的yum仓库位置,这里我们选择HDP2.5. 选中“Use Local Repository”,使用本地源安装。在仓库baseurl中指定本地的HDP和HDP UTILS仓库的BaseURL hadoop

2.6.4 添加hadoop主机

指定 Agent 机器, 这些机器会被安装 Hadoop 等软件包。
在Target Hosts添加机器:

master机器ip地址 master.easyml master
slave01机器ip地址 slave01.easyml slave01
slave02机器ip地址 slave02.easyml slave02
...

选择"Provide your SSH ...",点击“Browse...”,选择 Ambari Server 机器的私钥,即/~/.ssh/id_rsa文件。 hadoop
由于.ssh是隐藏文件夹,需要在/~目录下右击,选择 "show Hidden Files" 方可显示。 hadoop

2.6.5 自动安装Ambari Agent

Ambari Server 会自动安装 Ambari Agent 到刚才指定的机器列表。过程中可能会出错或警告,需要根据提示解决。

安装完成后,Agent 会向 Ambari Server 注册。成功注册后,就可以继续下一步。

2.6.6 查看并选择Hadoop相关组件

我们需要选择要安装的软件名称。本文环境只是选择了 HDFS,YARN + MapReduce2,Zoopkeeper,Ambari Metrics,oozie 。选的越多,就会需要越多的机器内存。选择之后就可以继续下一步了。
注意:

  1. Metrics与其它组件不要装在一台机器上,因为Metrics内置了HBase和Zookeeper,容易产生问题。
  2. 某些 Service 是有依赖关系的。如果您选了一个需要依赖其他 Service 的一个 Service,Ambari 会提醒安装对应依赖的 Service。

2.6.7 指定Master,Slave,Client机器

分别是选择安装软件所指定的 Master 机器和 Slave 机器,以及 Client 机器。
注意:

  1. Assign Masters中SNameNode必须跟NameNode在同一主机,否则Secondnamenode不能运行!!
  2. DataNode和NodeManager一定要选(2.0以下没有NodeManager选项,但有TaskTraker,将它选上)。

2.6.8 组件(Service)配置

绝大部分配置已经有默认值,不需要修改。要更改的有:

  1. HDFS在custom core-site中添加属性:hadoop.proxyuser.oozie.groups和hadoop.proxyuser.oozie.hosts,值都设置为*
  2. 在hdfs-site中将dfs.permission.enabled设置为 false
  3. Oozie在advanced oozie-site中的oozie.services(根据版本可能会没有这一项,则不用设置)中去掉org.apache.oozie.service.PurgeService这一项,并将oozie.service.AuthorizationService.security.enabled设置为false。

2.6.9 显示配置信息

Ambari 会总结一个安装列表,供用户审阅。这里没问题,就直接下一步。

2.6.10 启动并测试

Ambari 会开始安装选择的 Service 到 Ambari Agent 的机器。这里可能需要等好一会。安装完成之后,Ambari 就会启动这些 Service。安装中会可能会出现一些组件安装不成功的情况,需要根据报错信息进行修正,目前已经遇到的问题及解决方案有:

  • HDP组件安装不成功,提示某些包在本地Yum源找不到,分析发现是因为安装过程重新生成了HDP.repo和HDP-UTILS.repo跟我们之前制作的hdp.repo不是完全相同的,采用的解决方式是将生成的HDP.repo和HDP-UTILS.repo文件移除,手动执行:# yum install hdp.有其他组件安装不成功也可采取类似的手动安装方式。

安装完成后,启动刚才安装的这些组件的服务,看看是否正常,这个过程中遇到的问题与解决方案有:

  1. HDFS namenode启动不成功,报错是connection refused spark1:8020,解决方法是手动进行namenode格式化:# hdfs namenode –format,然后将配置文件中指定的namenode目录(这里是/hadoop/hdfs)的所有者和组改成hdfs和hadoop:# chown –R 744 /hadoop/hdfs。最后再重试安装HDFS。
  2. oozie job status PREP: 提示resource manager 不正常,看日志是因为有台机器的zookeeper没正常起来,查看zookeeper日志是找不到jar包,将hdp中zookeeper目录拷贝到/usr/hdp/zookeeper后解决。

2.6.11 查看Dashboard

安装完成之后,就可以查看 Ambari 的 Dashboard 了。例如下图:Amabri的Dashboard页面: hadoop

2.7 安装完成&测试

2.7.1 验证HDFS

创建HDFS测试目录及其设置权限

# sudo -u hdfs hadoop fs -mkdir /hdfstest
# sudo -u hdfs hadoop fs -chown -R root:hdfs /hdfstest

导入数据

# hadoop fs -copyFromLocal

导出数据

# hadoop fs -copyToLocal

2.7.2 验证MapReduce

hadoop有一个自带的wordcount程序可用于验证。文件地址为/usr/hdp/2.5.0.0-1245/hadoop-mapreduce/,文件名为hadoop-mapreduce-examples-2.7.3.2.5.0.0-1245.jar # hadoop jar /usr/hdp/2.5.0.0-1245/hadoop-mapreduce/hadoop-mapreduce-examples-2.7.3.2.5.0.0-1245.jar wordcount /hdfstest/file1.txt /hdfstest/output

三、EasyML部署

3.1 hadoop创建文件夹

创建EML相关文件夹
# sudo -u hdfs hadoop fs -mkdir /EML
# sudo -u hdfs hadoop fs -mkdir /EML/oozie
# sudo -u hdfs hadoop fs -mkdir /EML/Data
# sudo -u hdfs hadoop fs -mkdir /EML/Modules
设置权限

# sudo -u hdfs hadoop fs -chown -R root:hdfs /EML
# sudo -u hdfs hadoop fs -chmod -R 777 /EML

3.2 安装Spark

Spark的安装比较简单,推荐使用的版本是1.6.1,主要就是解压安装包,根据当前环境,配置环境变量SPARK_HOME,配置conf目录下的spark-env,spark-defaults.conf,slave,core-site。配置好后将conf目录拷贝到集群中其他机器的相应位置。 注意:需要配置history server

3.3 配置MySQL

执行mysql文件夹下的main.sql文件

3.4 部署Tmocat

  1. 安装tomcat,过程比较简单,就是解压一下tar包,然后在conf/server.xml中更改默认端口8080到18080,原因是Ambari Web服务占用了8080。启动服务:bin/startup.sh.

  2. 在对EML工程进行compilegwt:compile后,通过Export->Web->WAR file打成war包,并放到tomcat根目录下的webapps目录下。接着查看EML首页

3.5 HDFS准备数据

下载数据

下载对应版本的EML.zip,将其中EML\Environment\cluster下的modules文件夹解压并上传至master机器

上传数据

在master机器上执行modules文件夹下upload-hdfs.sh文件

Clone this wiki locally