一,Ambari 是什么?
Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。目前最新的发布版本是 2.4.2。就 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,方便用户了解到集群的各种状态,并进行相应的维护。
二,Ambari安装详解(在线安装)
1.安装准备
关于 Ambari 的安装,目前网上能找到两个发行版,一个是 Apache 的 Ambari,另一个是 Hortonworks 的,两者区别不大。安装 Ambari 最方便的方式就是使用公共的库源(public repository)。这个不是重点,所以不在此赘述,下面只给出安装思路,注重说下离线安装。
在进行具体的安装之前,需要做几个准备工作。
SSH 的无密码登录;
Ambari 的 Server 会 SSH 到 Agent 的机器,拷贝并执行一些命令。因此我们需要配置 Ambari Server 到 Agent 的 SSH 无密码登录。在这个例子里,namenode 可以 SSH 无密码登录datanode1,datanode2,SecondNamenode。
确保 Yum 可以正常工作;
通过公共库(public repository),安装 Hadoop 这些软件,背后其实就是应用 Yum 在安装公共库里面的 rpm 包。所以这里需要您的机器都能访问 Internet。
确保 home 目录的写权限。
Ambari 会创建一些 OS 用户(我安装ambari的时候使用root用户以避免权限问题)。
2.首先需要获取 Ambari 的公共库文件(public repository)。
登录到 Linux 主机并执行下面的命令(也可以自己手工下载):
1 wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.2.0/ambari.repo
将下载的 ambari.repo 文件拷贝到 Linux 的系统目录/etc/yum.repos.d/。拷贝完后,我们需要获取该公共库的所有的源文件列表。依次执行以下命令。
1 yum clean all 2 yum list|grep ambari
如果可以看到 Ambari 的对应版本的安装包列表,说明公共库已配置成功。然后就可以安装 Ambari 的 package 了。执行下面的命令安装 Ambari Server 到该机器。
1 yum install ambari-server
待安装完成后,便需要对 Ambari Server 做一个简单的配置。执行下面的命令。
1 amari-server setup
在这个交互式的设置中,采用默认配置即可。Ambari 会使用 Postgres 数据库,默认会安装并使用 Oracle 的 JDK。默认设置了 Ambari GUI 的登录用户为 admin/admin。并且指定 Ambari Server 的运行用户为 root。
简单的 setup 配置完成后。就可以启动 Ambari 了。运行下面的命令。
1 ambari-server start
当成功启动 Ambari Server 之后,便可以从浏览器登录,默认的端口为 8080。以本文环境为例,在浏览器的地址栏输入 http://www.namenode.zgw:8080,登录密码默认为 admin/admin。Ambari的在线安装相对比较简单,在此就不太详细叙述,有什么不清楚的可以看下下面的离线安装。
三,Ambari安装详解(离线安装)
1.安装环境说明
安装ambari前先安装好 Centos 7.2并更新。要确保之前没有安装过Ambari,并且没有搭建过hadoop环境。我的四台CentOS7.2如下:
namenode,datanode1,datanode2,SecondNamenode。均是新安装的系统,未做任何设置。
2.操作系统环境准备
2.1 配置SSH免密码登录
主节点(namenode)里root用户登录执行如下步骤:
1 ssh-keygen
一路回车键,直到结束。然后复制key到各节点,注意不要漏掉主节点。
1 ssh-copy-id 192.168.190.21
2 ssh-copy-id 192.168.190.22 3 ssh-copy-id 192.168.190.23 4 ssh-copy-id 192.168.190.24
2.2 创建ambari系统用户和用户组(只在主节点操作)
添加ambari安装、运行用户和用户组,也可以不创建新用户,直接使用root或者系统其他账号
1 adduser ambari 2 passwd ambari
2.3 开启NTP服务(所有集群上节点都需要操作)
1 yum install ntp 2 systemctl is-enabled ntpd 3 systemctl enable ntpd 4 systemctl start ntpd
2.4 检查DNS和NSCD(所有节点都要设置)
ambari在安装时需要配置全域名,所以需要检查DNS。在节点里用 Name Service Caching Daemon (NSCD)
1 vi /etc/hosts
1 192.168.190.21 namenode www.namenode.zgw 2 192.168.190.22 datanode1 www.datanode1.zgw 3 192.168.190.23 datanode2 www.datanode2.zgw 4 192.168.190.24 SecondNamenode www.SecondNamenode.zgw
每台节点里配置FQDN,如下以主节点为例
1 vi /etc/sysconfig/network
1 NETWORKING=yes 2 HOSTNAME=www.namenode.zgw
2.5 关闭防火墙(最简单粗暴的方式,也可以不关闭防火墙,给需要的应用开方端口。所有节点都要设置)
1 systemctl disable firewalld 2 systemctl stop firewalld
2.6 关闭SELinux(所有节点都要设置)
查看SELinux状态:
1 sestatus
如果SELinux status参数为enabled即为开启状态
1 SELinux status: enabled
临时关闭,不用重启机器:
1 setenforce 0
修改配置文件需要重启机器:
1 vi /etc/sysconfig/selinux
1 SELINUX=disabled
3.制作本地源
制作本地源只需在主节点上进行即可。
3.1安装 Apache HTTP 服务器
安装HTTP 服务器,允许 http 服务通过防火墙(永久)。
1 yum install httpd 2 firewall-cmd --add-service=http 3 firewall-cmd --permanent --add-service=http
添加 Apache 服务到系统层使其随系统自动启动。
1 systemctl start httpd.service 2 systemctl enable httpd.service
3.2 安装本地源制作相关工具
1 yum install yum-utils createrepo
3.3下载安装资源
下载 Ambari 2.4.2 , HDP 2.5.3 的安装资源,本次安装是在Centos 7 上,只列出centos7的资源,其他系统的请现在对用系统的资源。
Ambari 2.4.2 下载资源:
1 wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.2.0/ambari.repo 2 wget http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.2.0/ambari-2.4.2.0-centos7.tar.gz
HDP 2.4.2 下载资源:
1 wget http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.3.0/hdp.repo 2 wget http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.3.0/HDP-2.5.3.0-centos7-rpm.tar.gz 3 wget http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7/HDP-UTILS-1.1.0.21-centos7.tar.gz
在httpd网站根目录,默认是即/var/www/html/,创建目录ambari,并且将下载的压缩包解压到/var/www/html/ambari目录。
1 cd /var/www/html/ 2 mkdir ambari 3 cd ambari/
1 tar -zxvf ambari-2.4.2.0-centos7.tar.gz -C /var/www/html/ambari/ 2 tar -zxvf HDP-2.5.3.0-centos7-rpm.tar.gz -C /var/www/html/ambari/ 3 tar -zxvf HDP-UTILS-1.1.0.21-centos7.tar.gz -C /var/www/html/ambari/
验证http网站是否可用,可以使用links 命令或者浏览器直接访问下面的地址:
1 links http://192.168.190.21/ambari/
结果如下:
3.4 配置ambari、HDP、HDP-UTILS的本地源
首先下载上面资源列表中的相应repo文件,修改其中的URL为本地的地址,相关配置如下:
1 vim ambari.repo
1 #VERSION_NUMBER=2.4.2.0-136 2 3 [Updates-ambari-2.4.2.0] 4 name=ambari-2.4.2.0 - Updates 5 baseurl=http://namenode/ambari/AMBARI-2.4.2.0/centos7/2.4.2.0-136/ 6 gpgcheck=1 7 gpgkey=http://namenode/ambari/AMBARI-2.4.2.0/centos7/2.4.2.0-136/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins 8 enabled=1 9 priority=1
1 vim hdp.repo
1 #VERSION_NUMBER=2.5.3.0-37 2 [HDP-2.5.3.0] 3 name=HDP Version - HDP-2.5.3.0 4 baseurl=http://namenode/ambari/HDP/centos7 5 gpgcheck=1 6 gpgkey=http://namenode/ambari/HDP/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins 7 enabled=1 8 priority=1 9 10 11 [HDP-UTILS-1.1.0.21] 12 name=HDP-UTILS Version - HDP-UTILS-1.1.0.21 13 baseurl=http://namenode/ambari/HDP-UTILS-1.1.0.21/repos/centos7/ 14 gpgcheck=1 15 gpgkey=http://namenode/ambari/HDP-UTILS-1.1.0.21/repos/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins 16 enabled=1 17 priority=1
将上面的修改过的源放到/etc/yum.repos.d/下面。
1 mv ambari.repo /etc/yum.repos.d/ 2 mv hdp.repo /etc/yum.repos.d/
然后更新yum。
1 yum clean all 2 yum list update 3 yum makecache 4 yum repolist
3.5 安装Mysql数据库
Ambari安装会将安装等信息写入数据库,建议使用自己安装的MySQL数据库,也可以不安装而使用默认数据库PostgreSQL。
Mysql数据库安装过程如下:
3.5.1. 下载mysql的repo源(CentOS 7.2的yum源中默认没有mysql,要先下载mysql的repo源)
1 wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
3.5.2. 安装mysql57-community-release-el7-8.noarch.rpm包
1 rpm -ivh mysql57-community-release-el7-8.noarch.rpm --nodeps --force
安装这个包后,会获得两个mysql的yum repo源:
1 /etc/yum.repos.d/mysql-community.repo 2 3 /etc/yum.repos.d/mysql-community-source.repo
3.5.3.安装mysql
1 yum install mysql-server
3.5.4. 启动mysql服务
查看MySQL服务是否已启动:
1 service mysqld status
启动服务:
1 systemctl start mysqld
3.5.5. 重置root密码
MySQL5.7会在安装后为root用户生成一个随机密码,而不是像以往版本的空密码。 可以安全模式修改root登录密码或者用随机密码登录修改密码。下面用随机密码方式
MySQL为root用户生成的随机密码通过mysqld.log文件可以查找到:
1 grep 'temporary password' /var/log/mysqld.log
修改root用户密码:(MySQL的密码策略比较复杂,过于简单的密码会被拒绝)
1 mysql -u root -p 2 mysql> Enter password: (输入刚才查询到的随机密码) 3 mysql> SET PASSWORD FOR 'root'@'localhost'= "Zgw-123"; 4 mysql> exit
用root新密码登录:
1 mysql -u root -pZgw-123
如果上面的方式不能修改可以使用下面安全模式修改root:
关闭服务:
1 systemctl stop mysqld.service 2 vi /etc/my.cnf
mysqld下面添加skip-grant-tables 保存退出启动服务。
1 systemctl start mysqld.service
1 mysql -u root #不用密码直接回车 2 use mysql 3 update user set authentication_string=password('Zgw-123') where User='root' and Host='localhost'; 4 flush privileges; 5 exit; 6 vi /etc/my.cnf #把 skip-grant-tables 一句删除保存退出重启mysql服务 7 systemctl restart mysqld.service
再次登录即可:
1 mysql -uroot -pZgw123
如果进行操作出现下面的提示:
1 You must reset your password using ALTER USER statement before executing this statement.
就再设置一遍密码:
1 set password = password('Zgw-123');
3.5.6. 开放3306端口
允许使用用户名root密码Root-123456从任何主机连接到mysql服务器。
1 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Zgw-123' WITH GRANT OPTION; 2 mysql>FLUSH PRIVILEGES; 3 mysql>exit;
开启防火墙mysql 3306端口的外部访问:
1 firewall-cmd --zOne=public --add-port=3306/tcp --permanent 2 firewall-cmd --reload
安装完成后创建ambari数据库及用户,登录root用户执行下面语句:
1 create database ambari character set utf8 ; 2 CREATE USER 'ambari'@'%'IDENTIFIED BY 'Ambari-123'; 3 GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%'; 4 FLUSH PRIVILEGES;
如果要安装Hive,再创建Hive数据库和用户 再执行下面的语句:
1 create database hive character set utf8 ; 2 CREATE USER 'hive'@'%'IDENTIFIED BY 'Hive-123'; 3 GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%'; 4 FLUSH PRIVILEGES;
如果要安装Oozie,再创建Oozie数据库和用户 再执行下面的语句:
1 create database oozie character set utf8 ; 2 CREATE USER 'oozie'@'%'IDENTIFIED BY 'Oozie-123'; 3 GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%'; 4 FLUSH PRIVILEGES;
安装mysql jdbc 驱动:
1 yum install mysql-connector-java
3.6 安装JDK
安装解压版JDK,先到官网下载jdk-8u121-Linux-x64.tar.gz ,再执行下面命令:
1 tar -zxvf jdk-8u121-linux-x64.tar.gz -C /opt/ 2 ln -snf /opt/jdk1.8.0_121 /opt/jdk
1 vim /etc/profile
1 #JAVA_SET 2 export JAVA_HOME=/opt/jdk 3 export JRE_HOME=/opt/jre 4 export CLASSPATH=$JAVA_HOME/lib 5 export PATH=:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
4.进行安装Ambari
4.1 安装Ambari2.4.2
4.1.1安装Ambari
1 yum install ambari-server
(如果提示找不到KEY,则执行如下命令:rpm --import /var/www/html/ambari/AMBARI-2.4.2.0/centos7/2.4.2.0-460/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins )
4.1.2配置Ambari
1 ambari-server setup
下面是配置执行流程,按照提示操作:
1.检查SELinux是否关闭,如果关闭不用操作。
1 Using python /usr/bin/python 2 Setup ambari-server 3 Checking SELinux... 4 SELinux status is 'disabled'
2.提示是否自定义设置。输入:y。
1 Customize user account for ambari-server daemon [y/n] (n)? y
3.ambari-server 账号。输入:ambari。
1 Enter user account for ambari-server daemon (root):ambariAdjusting ambari-server permissions and ownership...
4.检查防火墙,如果关闭则不用操作。
1 Checking firewall status... 2 Redirecting to /bin/systemctl status iptables.service
1 5.设置JDK。输入:3。 2 Checking JDK...Do you want to change Oracle JDK [y/n] (n)? y 3 [] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8 4 [] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7 5 [] Custom JDK 6 ============================================================================== 7 Enter choice (1): 3
6.如果上面选择3自定义JDK,则需要设置JAVA_HOME。输入:
1 /opt/jdk
1 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: /opt/java/jdk1.8.0_121Validating JDK on Ambari Server...done.Completing setup...
7.数据库配置。选择:y。
1 Configuring database...Enter advanced database configuration [y/n] (n)? y
8.选择数据库类型。输入:3。
1 Configuring database...============================================================================== 2 Choose one of the following options: 3 [1] - PostgreSQL (Embedded) 4 [2] - Oracle 5 [3] - MySQL 6 [4] - PostgreSQL 7 [5] - Microsoft SQL Server (Tech Preview) 8 [6] - SQL Anywhere============================================================================== 9 Enter choice (3): 3
9.设置数据库的具体配置信息,根据实际情况输入,如果和括号内相同,则可以直接回车。
1 Hostname (localhost): 2 Port (): 3 Database name (ambari): 4 Username (ambari): 5 Enter Database Password (Ambari-123):
10.提示必须安装MySQL JDBC,回车结束ambari配置。
1 WARNING: Before starting Ambari Server, you must copy the MySQL JDBC driver JAR file to /usr/share/java. 2 Pressto continue.
11.将Ambari数据库脚本导入到数据库。
如果使用自己定义的数据库,必须在启动Ambari服务之前导入Ambari的sql脚本。用Ambari用户(上面设置的用户)登录mysql
1 mysql -uambari -p 2 use ambari 3 source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
4.1.3启动Amabri。
执行启动命令,启动Ambari服务:
1 ambari-server start
成功启动后在浏览器输入Ambari地址:
1 http://www.namenode.zgw:8080/
出现登录界面,默认管理员账户登录, 账户:admin 密码:admin。
登录成功后出现下面的界面,至此Ambari的安装成功。
4.2 安装安装HDP 2.4.2 配置集群。(由于安装过程时没有打算写博客,所以没有截图,以后再次安装的时候一定截图补上)
点击上面登录成功页面的Launch Install Wizard 按钮进行集群配置。
4.2.1设置集群名称;
4.2.2设置HDP 安装源;
选择HDP2.4 ,并且设置Advanced Repository Options 的信息,本次使用本地源,所以修改对用系统的安装源为本地源地址。
4.2.3设置集群机器;
4.2.4 Host 确认;
确认前面配置集群中hosts列表 中的机器是否都可用,也可以移除相关机器,集群中机器Success后进行下一步操作。
4.2.5 选择要安装的服务;
4.2.6各个服务Master配置 ;
4.2.6 服务的Slaves 和 Clients节配置 ;
4.2.7 服务的客制化配置 (如果hive连接mysql失败,则执行:ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar);
4.2.8 显示配置信息 ;
4.2.9开始安装;
安装各个服务,并且完成安装后会启动相关服务,安装过程比较长,如果中途出现错误,请根据具体提示或者log进行操作。
安装过程可以随时查看每个节点的安装进度及日志 。
4.2.10安装完成。