一、前言

Ambari 是什么

Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等),而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。

说到这里,大家就应该明白什么人最需要 Ambari 了。那些苦苦花费好几天去安装、调试 Hadoop 的初学者是最能体会到 Ambari 的方便之处的。而且,Ambari 现在所支持的平台组件也越来越多,例如流行的 Spark,Storm 等计算框架,以及资源调度平台 YARN 等,我们都能轻松地通过 Ambari 来进行部署。

Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。详细的操作和介绍会在后续章节介绍。

大多数情况下,我们在linux环境中安装软件都是使用在线安装的方式,比如centOS的 yum,ubuntu的apt-get,但是,有些时候,我们需要安装软件,但并没有网络,或网速并不快,比如公司的集群,很可能是没有外网的,有些库是国外的库,下载速度非常慢,这个时候,如果有个本地库,这个问题就能比较好的解决了 。当然,并不是说所有的软件都做成本地库,这里只是把安装Ambari和HDP的库本地化。

二、安装准备

关于 Ambari 的安装,目前网上能找到两个发行版,一个是 Apache 的 Ambari,另一个是 Hortonworks 的,两者区别不大。这里就以 Apache 的 Ambari 作为示例。

安装默认使用Root用户,避免权限问题导致不成功。

角色分配:

IP主机名角色
192.168.0.203master.hdp.comambari-server,ambari-client
192.168.0.205slave1.hdp.comambari-client
192.168.0.206slave2.hdp.comambari-client

1.安装前系统设定

和Cloudera Manager安装类似

  1. 修改主机名和hosts文件
  2. ntp时间同步
  3. 关闭防火墙
  4. 设置SSH免密码登录

Do **not **remove the following two lines from your hosts file. Removing or editing the following lines may cause various programs that require network functionality to fail.

127.0.0.1 localhost.localdomain localhost

::1 localhost6.localdomain6 localhost6

2.安装 Java

java version “1.8.0_144”

3.安装MarinDB(require > 10*)

创建必要的数据库和数据库用户:

安装完成后创建ambari数据库及用户,登录root用户执行下面语句:

mysql> create database ambari character set utf8;
mysql> CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';
mysql> FLUSH PRIVILEGES;

如果要安装Hive,再创建Hive数据库和用户 再执行下面的语句:

mysql> create database hive character set utf8;
mysql> CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%';
mysql> FLUSH PRIVILEGES;

如果要安装Oozie,再创建Oozie数据库和用户 再执行下面的语句:

mysql> create database oozie character set utf8;
mysql> CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie-1234';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%';
mysql> FLUSH PRIVILEGES; 

三、制作 Ambari Local Repository

1. 下载压缩包

首先下载包含必要软件的压缩包(tarball)到本地,以CentOS7,Ambari 2.4.1和HDP2.5.0.0为例:

Ambari-2.4.1.0 压缩包地址:

http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.1.0/ambari-2.4.1.0-centos7.tar.gz

HDP-2.5.0.0压缩包地址:

http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos7-rpm.tar.gz

HDP UTILS压缩包下载地址:

http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7/HDP-UTILS-1.1.0.21-centos7.tar.gz

其他版本,下载地址请参考:

Ambari:

http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.1.0/bk_ambari-installation/content/ambari_repositories.html

HDP和HDP UTILS:

http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.1.0/bk_ambari-installation/content/hdp_stack_repositories.html

2. 设置本地库

在设置本地库之前,我们先需要完成一些准备工作,如下:

  1. 选择一台机器作为本地库的镜像服务器,这个机器能够被集群中的机器所访问,且有一个被支持的操作系统。
  2. 此台镜像服务器有软件包管理,例如centOS的yum,ubuntu的apt-get,SLES的zypper。

2.1 创建一个HTTP服务

Step 1 在镜像服务器上安装一个HTTP服务(例如Apache httpd)
[root@master ~]# yum install httpd

安装完成之后,可以看到有/var/www/html目录了。

step 2 启动web 服务
[root@master ~]# systemctl start httpd
[root@master ~]# systemctl enable httpd
step 3 确保防火墙允许来自集群中的节点的访问请求。

2.2 拷贝并解压tarball

把下载到的3个资源文件,上传到master.hdp.com,并解压到制定目录:

# mkdir /var/www/html/ambari-hdp
# mkdir /var/www/html/ambari-hdp/HDP-UTILS
# tar -xvf ambari-2.4.1.0-centos7.tar.gz -C /var/www/html/ambari-hdp/
# tar -xvf HDP-2.5.0.0-centos7-rpm.tar.gz -C /var/www/html/ambari-hdp/
# tar -xvf HDP-UTILS-1.1.0.21-centos7.tar.gz -C /var/www/html/ambari-hdp/HDP-UTILS

2.3 确认解压目录正常

解压结束后,在浏览器中确认是否可以访问,访问地址如下:

Ambari Base URL:http://192.168.0.203/ambari-hdp/AMBARI-2.4.1.0/centos7/2.4.1.0-22/

HDP Base URL:http://192.168.0.203/ambari-hdp/HDP/centos7/

HDP-UTILS Base URL:http://192.168.0.203/ambari-hdp/HDP-UTILS/

这里写图片描述

3.配置Yum本地源

3.1 配置Yum本地Repos资源池

If you have multiple repositories configured in your environment, deploy the following plug-in on all the nodes in your cluster.

  • Install the plug-in.

    • For RHEL and CentOS 7:

    yum install yum-plugin-priorities

    • For RHEL and CentOS 6:

    yum install yum-plugin-priorities

  • Edit the /etc/yum/pluginconf.d/priorities.conf file to add the following:

    [main]

    enabled=1

    gpgcheck=0

3.2 制作本地资源文件

创建Ambari、HDP、HDP-UTIL资源文件:

  • ambari.repo

    [ambari-2.4.1.0]
    name=ambari-2.4.1.0
    baseurl=http://192.168.0.203/ambari-hdp/AMBARI-2.4.1.0/centos7/2.4.1.0-22/
    gpgcheck=0
    gpgkey=http://192.168.0.203/ambari-hdp/AMBARI-2.4.1.0/centos7/2.4.1.0-22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
    enabled=1
    priority=1
  • hdp.repo

    [HDP-2.5.0.0]
    name=Hortonworks Data Platform Version - HDP-2.5.0.0
    baseurl=http://192.168.0.203/ambari-hdp/HDP/centos7
    gpgcheck=0
    gpgkey=http://192.168.0.203/ambari-hdp/HDP/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
    enabled=1
    priority=1
  • hdp-util.repo

    [HDP-UTILS-1.1.0.21]
    name=Hortonworks Data Platform Version - HDP-UTILS-1.1.0.21
    baseurl=http://192.168.0.203/ambari-hdp/HDP-UTILS/
    gpgcheck=0
    gpgkey=http://192.168.0.203/ambari-hdp/HDP-UTILS/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
    enabled=1
    priority=1

制作完成后,移动到/etc/yum.repos.d/;依次执行以下命令,更新本地资源池:

  # yum clean all
  # yum makecache

等待更新完毕后,查看资源池:

  # yum repolist

如果看到以下资源,表示配置成功:

  [root@master yum.repos.d]# yum repolist 
  repo id                                          repo name                                                                     status
  HDP-2.5                                          HDP-2.5                                                                        0+200
  HDP-2.5.0.0                                      Hortonworks Data Platform Version - HDP-2.5.0.0                                  200
  HDP-UTILS-1.1.0.21                               HDP-UTILS-1.1.0.21                                                                64
  ambari-2.4.1.0                                   ambari-2.4.1.0             

以上操作在所有主机中都执行

四、安装Ambari和HDP

1.安装和配置 Ambari

1.1 安装Ambari-Server

# yum install -y ambari-server

将Ambari数据库脚本导入到数据库。

Ambari安装会将安装等信息写入数据库,建议使用自己安装的MySQL数据库,也可以不安装而使用默认数据库PostgreSQL。如果使用自己定义的数据库,必须在启动Ambari服务之前导入Ambari的sql脚本。

# mysql -uroot -p

mysql> use ambari;
mysql> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;

1.2 配置Ambari-Server

执行配置命令:

[root@master ~]# ambari-server setup
Using python  /usr/bin/python
Setup ambari-server
Checking SELinux...
SELinux status is 'disabled'
Customize user account for ambari-server daemon [y/n] (n)? y
Enter user account for ambari-server daemon (root):root
Adjusting ambari-server permissions and ownership...
Checking firewall status...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] Custom JDK
==============================================================================
Enter choice (1): 3
WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
Path to JAVA_HOME: /usr/java/jdk1.8.0_144/
Validating JDK on Ambari Server...done.
Completing setup...
Configuring database...
Enter advanced database configuration [y/n] (n)? y
Configuring database...
==============================================================================
Choose one of the following options:
[1] - PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL / MariaDB
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
[6] - SQL Anywhere
[7] - BDB
==============================================================================
Enter choice (1): 3
Hostname (localhost): master.hdp.com
Port (3306): 
Database name (ambari): 
Username (ambari): 
Enter Database Password (bigdata): 
Re-enter password: 
Configuring ambari database...
Copying JDBC drivers to server resources...
Configuring remote database connection properties...
WARNING: Before starting Ambari Server, you must run the following DDL against the database to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed with configuring remote database connection properties [y/n] (y)? y
Extracting system views...
ambari-admin-2.4.1.0.22.jar
...........
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.

1.3 启动ambari-server服务

# ambari-server start

注:

如果报错 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver, 需要查看如下几个目录, 确保 JDBC驱动 在这几个目录下面:

  • /usr/share/java/

  • /var/lib/ambari-server/resources

  • /usr/lib/ambari-server

启动后在浏览器输入Ambari地址: http://192.168.0.203:8080 便会出现 Login 界面

1.4 安装Ambari-agent

安装:

# yum install -y ambari-agent
# chkconfig --add ambari-agent

1.5设置Ambari Server Host Name

vi /etc/ambari-agent/conf/ambari-agent.ini

[server]
hostname=<your.ambari.server.hostname>
url_port=8440
secured_url_port=8441

2. 安装 HDP

在浏览器中输入 http://<your.ambari.server>:8080,登录的时候,用户名和密码都为:admin。

2.1 开启Ambari安装向导

launch_install_wizard
这里写图片描述

点击 Launch Install Wizard

2.2 为集群命名

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

2.3 选择版本

select_version
这里写图片描述

这里选中“Use Local Repository”,使用本地源安装,然后找到自己的系统,我的是centos7,其实就是选这个redhat7,然后把其他的都删除掉,然后,填上自己相应的URL,URL就是前面本地源的地址。

2.4 安装选项

install_options
这里写图片描述

在“Target Hosts”里填上主机名,主机名一定要是全限定名。一行一个主机名。

在“Host Registration information”,我使用的是上面那个,即使用ssh,这种方式不需要启动 ambari-agent.

如果使用下面那种方式需要注意:需要提前在host上安装好ambari-agent,并启动服务。

2.5 确认Hosts

这里写图片描述

如果出现 Confirm Hosts 失败现象,如出现如下错误:

ERROR 2017-09-27 17:12:25,322 NetUtil.py:88 - [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)

解决方法为:

vi /etc/python/cert-verification.cfg
[https]
verify=disable

这里写图片描述

等待验证,这一步主要是检查一下hosts的环境,如果提示哪些环境有问题,照着修改就好了。主要是一些jdk,目录啊,防火墙啊什么的。可参考以下官网:

http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.1.0/bk_ambari-installation/content/prepare_the_environment.html

由于,我以前在这个集群上安装过 Cloudera Manager CDH 集群,因此还需要删除以下表格中的文件和Linux 系统用户:

The following files and folders should not exist
Path
/etc/kafkaExists on 2 hosts
/etc/accumuloExists on 2 hosts
/var/log/hbaseExists on 2 hosts
/var/log/zookeeperExists on 2 hosts
/var/log/hadoop-hdfsExists on 2 hosts
/var/log/hadoop-yarnExists on 2 hosts
/var/log/kafkaExists on 2 hosts
/var/log/accumuloExists on 2 hosts
/var/log/hcatalogExists on 1 host
The following users should be removed
User
flumeExists on 2 hosts
hdfsExists on 2 hosts
zookeeperExists on 2 hosts
mapredExists on 2 hosts
sqoopExists on 2 hosts
yarnExists on 2 hosts
kmsExists on 2 hosts
hiveExists on 2 hosts
sqoop2Exists on 2 hosts
oozieExists on 2 hosts
hbaseExists on 2 hosts
sparkExists on 2 hosts
hueExists on 2 hosts
kafkaExists on 2 hosts
accumuloExists on 2 hosts

2.6 选择服务

这里写图片描述

选择自己需要的服务,这里的服务(Services)指的是各个组件,比如hbase, hive , spark等等。

现在没有选择的服务,在以后也可以添加,所以,看着选就好了。

2.7 分配Master

assign_masters
这里写图片描述

这里主要是对hosts上安装的服务进行master选择,比如我安装hdfs的话,那么hdfs的master,即namenode需要安装到哪个节点,类似云云的。

2.8 分配slave和clients

assign_slaves_and_clients
这里写图片描述

2.9 定制服务

customize_services
这里写图片描述

这里主要是对安装的服务进行配置,很多配置我们可以使用默认的,但有些必须让我们手动输入,比如hive的数据库的密码,因为hive的元数据是存储在关系型数据库中的,因此,这里在给我们安装hive的时候,会自动帮我们安装一个关系型数据库,这里需要输入的就是这个数据库的密码。当然,看着红色的数字,那就是需要我们手动输入的配置。

hive_conf
这里写图片描述

2.10 Review

review
这里写图片描述

2.11 安装,启动和测试

install_start_test
这里写图片描述

这一步主要是在各个hosts上安装服务并启动。可能会出现很多问题,通常是对报错进行修复,然后retry。

5.12 Summary

summary
这里写图片描述

5.13 安装成功

ambari_home
这里写图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐