一、Ambari概述
Ambari跟Hadoop等开源软件一样,也是Apache Software Foundation中的一个项目,并且是顶级项目。Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应、管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。提供Web UI进行可视化的集群管理,简化了大数据平台的安装、使用难度。
Ambari提供了对Hadoop更加方便快捷的管理功能,主要包含:
- 通过一步一步的安装向导简化了集群供应。
- 预先配置好关键的运维指标(metrics),可以直接查看Hadoop Core(HDFS和MapReduce)及相关项目(如HBase、Hive和HCatalog)是否健康。
- 支持作业与任务执行的可视化与分析,能够更好地查看依赖和性能。
- 通过一个完整的RESTful API把监控信息暴露出来,集成了现有的运维工具。
- 用户界面非常直观,用户可以轻松有效地查看信息并控制集群。
二、 Hadoop版本
目前Hadoop发行版本非常多,我个人接触的有HDP和CDH,Hortonworks版本(Hortonworks Data Platform,简称"HDP"),Cloudera版本(Cloudera Distribution Hadoop,简称"CDH"),还有其他的版本,目前中国公司我发现用的CDH版本较多,而界面上 HDP版本要比CDH要好。
Hadoop是一个开发和运行处理大规模数据的软件平台,是Apache的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。Hadoop框架中最核心设计就是:MapReduce和HDFS。MapReduce提供了对数据的分布式计算,HDFS提供了海量数据的分布式存储。
在Hadoop家族中,收入了20多个用于计算、分析、存储、监控、管理等组件和工具,这些家族成员极大的丰富了Hadoop的各方面的功能。
Hadoop常见家族成员
下面简单的列举几个常见的组件:
- Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。
- Apache Hive: 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
- Apache Pig: 是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。
- Apache HBase: 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
- Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
- Apache Zookeeper: 是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务
- Apache Mahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。
- Apache Cassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身
- Apache Avro: 是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制
- Apache Ambari: 是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。
- Apache Chukwa: 是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种各样类型的数据收集成适合 Hadoop 处理的文件保存在 HDFS 中供 Hadoop 进行各种 MapReduce 操作。
- Apache Hama: 是一个基于HDFS的BSP(Bulk Synchronous Parallel)并行计算框架, Hama可用于包括图、矩阵和网络算法在内的大规模、大数据计算。
- Apache Flume: 是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。
- Apache Giraph: 是一个可伸缩的分布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
- Apache Oozie: 是一个工作流引擎服务器, 用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapReduce)的任务。
- Apache Crunch: 是基于Google的FlumeJava库编写的Java库,用于创建MapReduce程序。与Hive,Pig类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库
- Apache Whirr: 是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr支持Amazon EC2和Rackspace的服务。
- Apache Bigtop: 是一个对Hadoop及其周边生态进行打包,分发和测试的工具。
- Apache HCatalog: 是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供关系视图。
- Cloudera Hue: 是一个基于WEB的监控和管理系统,实现对HDFS,MapReduce/YARN, HBase, Hive, Pig的web化操作和管理。
三、 HDP与CDH对比
1、据个人了解HDP是100%完全开源的,而CDH还不是100%完全开源。Hortonworks的工程师是社区的主要贡献者,Cloudera的发行版本也是比较清晰的。
2、HDP使用开源工具Ambari安装,CDH使用Cloudera Manager工具安装。对配置的修改与更新, Ambari的界面更方便,可以很方便的修改集群配置,Cloudera Manager的配置界面真的是太烂了,不方便,发现有些配置竟然没法改,后续版本也许有改善。
3、支持的组件,HDP基本上支持所有的开源大数据组件,CDH也基本上支持所有的开源大数据组件。
4、代码包依赖,如果是HDP平台,编写代码直接依赖hadoop版本即可,如果是CDH平台,编写代码要依赖CDH的版本,否则运行不成功,这是坑啊。
四、安装参考
1、HDP: https://docs.hortonworks.com/
2、CDH: https://www.cloudera.com/documentation.html
五、概述
Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应、管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。提供Web UI进行可视化的集群管理,简化了大数据平台的安装、使用难度。
六、Ambari安装部署
1、集群节点主机规划
序号 | IP地址 | 主机名 | 系统版本 |
1 | 172.168.1.248 | ambari-server | CentOS 7.4.1708 |
2 | 172.168.1.161 | node1 | CentOS 7.4.1708 |
3 | 172.168.1.162 | node2 | CentOS 7.4.1708 |
4 | 172.168.1.163 | node3 | CentOS 7.4.1708 |
2、部署HDP
2.2.1 基础环境部署
1)配置主机名
# 在ambari-server节点执行
[root@localhost ~]# hostnamectl set-hostname ambari-server
# 在Node1节点执行
[root@localhost ~]# hostnamectl set-hostname node1
# 在Node2节点执行
[root@localhost ~]# hostnamectl set-hostname node2
# 在Node3节点执行
[root@localhost ~]# hostnamectl set-hostname node3
2)配置hosts
# 在所有节点执行
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config
[root@localhost ~]# setenforce 0
# 添加各个节点hosts解析
[root@localhost ~]# cat >>/etc/hosts <<EOF
172.168.1.248 ambari-server
172.168.1.161 node1
172.168.1.162 node2
172.168.1.163 node3
EOF
3)配置免密钥登录其他节点
# 在ambari-server节点执行
[root@ambari-server ~]# ssh-keygen -t rsa
[root@ambari-server ~]# ssh-copy-id root@ambari-server
[root@ambari-server ~]# ssh-copy-id root@node1
[root@ambari-server ~]# ssh-copy-id root@node2
[root@ambari-server ~]# ssh-copy-id root@node3
4)安装数据库
在ambari的setup中我们可以选择使用默认的postgresql,也可以自定义使用其他数据库,此处选用mariadb,便于后期管理维护
[root@ambari-server ~]# yum -y install mariadb mariadb-devel mariadb-server mysql-connector-java
[root@ambari-server ~]# systemctl start mariadb
5)配置本地yum源
由于Ambari的各个组件包很大,HDP大约快7G,我们采取离线安装方式,将ambari-server配置为yum源,事先在网上下载HDP、HDP-UTILS和Ambari安装包。
[root@ambari-server ~]# yum -y install httpd httpd-devel && systemctl start httpd
参考url:
Ambari各版本参考链接
HDP和HDP UTILS参考链接
软件版本:
Ambari:2.4.1.0
HDP:2.5.0.0
HDP-UTILS:1.1.0.21
6)下载软件
[root@ambari-server ~]# wget -c http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.4.1.0/ambari-2.4.1.0-centos7.tar.gz
[root@ambari-server ~]# wget -c http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.0.0/HDP-2.5.0.0-centos7-rpm.tar.gz
[root@ambari-server ~]# wget -c http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7/HDP-UTILS-1.1.0.21-centos7.tar.gz
7)创建目录
[root@ambari-server ~]# mkdir -p /var/www/html/{ambari,HDP-UTILS-1.1.0.21}
8)解压软件
[root@ambari-server ~]# tar zxf ambari-2.4.1.0-centos7.tar.gz -C /var/www/html/ambari/
[root@ambari-server ~]# tar zxf HDP-UTILS-1.1.0.21-centos7.tar.gz -C /var/www/html/HDP-UTILS-1.1.0.21/
[root@ambari-server ~]# tar zxf HDP-2.5.0.0-centos7-rpm.tar.gz -C /var/www/html
[root@ambari-server ~]# chown -R root.root /var/www/html
9)配置Ambari(YUM源)
[root@ambari-server ~]# vim /etc/yum.repos.d/ambari.repo
# 添加以下内容
10)配置HDP(YUM源)
[root@ambari-server ~]# vim /etc/yum.repos.d/hdp.repo
# 添加以下内容
11)拷贝YUM源到各个Node节点(此步骤可省略)
[root@ambari-server ~]# scp /etc/yum.repos.d/ambari.repo root@node1:/etc/yum.repos.d/
[root@ambari-server ~]# scp /etc/yum.repos.d/ambari.repo root@node2:/etc/yum.repos.d/
[root@ambari-server ~]# scp /etc/yum.repos.d/ambari.repo root@node3:/etc/yum.repos.d/
[root@ambari-server ~]# scp /etc/yum.repos.d/hdp.repo root@node1:/etc/yum.repos.d/
[root@ambari-server ~]# scp /etc/yum.repos.d/hdp.repo root@node2:/etc/yum.repos.d/
[root@ambari-server ~]# scp /etc/yum.repos.d/hdp.repo root@node3:/etc/yum.repos.d/
2.2.2 安装配置Ambari
1)安装Ambari server
[root@ambari-server ~]# yum clean all
[root@ambari-server ~]# yum makecache
[root@ambari-server ~]# yum -y install ambari-server
2)进入数据库创建ambari库、授权和导入数据
[root@ambari-server ~]# mysql
MariaDB [(none)]> create database ambari default charset utf8;
MariaDB [(none)]> use ambari
MariaDB [(none)]> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
MariaDB [(none)]> grant all on ambari.* to ambari@'ambari-server' identified by '123456789';
MariaDB [(none)]> flush privileges;
3)配置Ambari
[root@ambari-server ~]# 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): # 输入Enter
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): 1
To download the Oracle JDK and the Java Cryptography Extension (JCE) Policy Files you must accept the license terms found at http://www.oracle.com/technetwork/java/javase/terms/license/index.html and not accepting will cancel the Ambari Server setup and you must install the JDK and JCE files manually.Do you accept the Oracle Binary Code License Agreement [y/n] (y)? y
Downloading JDK from http://public-repo-1.hortonworks.com/ARTIFACTS/jdk-8u77-linux-x64.tar.gz to /var/lib/ambari-server/resources/jdk-8u77-linux-x64.tar.gzjdk-8u77-linux-x64.tar.gz... 100% (173.0 MB of 173.0 MB)
Successfully downloaded JDK distribution to /var/lib/ambari-server/resources/jdk-8u77-linux-x64.tar.gz
Installing JDK to /usr/jdk64/
Successfully installed JDK to /usr/jdk64/
Downloading JCE Policy archive from http://public-repo-1.hortonworks.com/ARTIFACTS/jce_policy-8.zip to /var/lib/ambari-server/resources/jce_policy-8.zip
Successfully downloaded JCE Policy archive to /var/lib/ambari-server/resources/jce_policy-8.zip
Installing JCE policy...
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): localhost
Port (3306): 3306
Database name (ambari): ambari
Username (ambari): ambari
Enter Database Password (bigdata): # 输入密码123456789
Re-enter password: # 再次输入密码123456789
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-se
rver/resources/Ambari-DDL-MySQL-CREATE.sqlProceed 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.
4)启动Ambari-server服务
[root@ambari-server ~]# ambari-server start
Using python /usr/bin/python
Starting ambari-server
Ambari Server running with administrator privileges.
Organizing resource files at /var/lib/ambari-server/resources...
Ambari database consistency check started...
No errors were found.
Ambari database consistency check finished
Server PID at: /var/run/ambari-server/ambari-server.pid
Server out at: /var/log/ambari-server/ambari-server.out
Server log at: /var/log/ambari-server/ambari-server.log
Waiting for server start....................
Ambari Server 'start' completed successfully.
5)浏览器访问Ambari平台
# 浏览器访问:http://172.168.1.248:8080,默认用户名密码admin/admin
6)启动安装向导
7)添加将要创建的集群名称
8)下载HDP版本
9)选择本地HDP源,输入对应链接信息
# http://172.168.1.248/HDP/centos7/
# http://172.168.1.248/HDP-UTILS-1.1.0.21/
10)添加写需要安装的各个目标节点的主机名,填写Anbari-Server免密钥登录其他节点的私钥,确认注册
# 如果报如下错误
ERROR 2020-11-30 15:28:39,243 NetUtil.py:88 - EOF occurred in violation of protocol (_ssl.c:618)
ERROR 2020-11-30 15:28:39,243 NetUtil.py:89 - SSLError: Failed to connect. Please check openssl library versions.
注:这是由于Python 2.7.5的新版本中存在缺陷,导致无论证书状态如何,证书验证都失败。
解决方式:
1、关闭验证
# 所有Node节点执行,这里我用的python自带版本是python-2.7.5-58(Centos 7.4自带),亲测python-2.7.5-80(Centos 7.6自带)、python-2.7.5-88(Centos 7.8自带)版本还是一样报错。
# 查看Python版本
[root@ambari-server ~]# python -V
Python 2.7.5
这里只能看到2.7.5,不能看到具体子版本,可通过下面命令查看具体版本信息
[root@ambari-server ~]# rpm -qa |grep python
[root@node1 ~]# sed -i 's/verify=platform_default/verify=disable/' /etc/python/cert-verification.cfg
[root@node2 ~]# sed -i 's/verify=platform_default/verify=disable/' /etc/python/cert-verification.cfg
[root@node3 ~]# sed -i 's/verify=platform_default/verify=disable/' /etc/python/cert-verification.cfg
11)选择需要安装的服务(默认全选),我这里选择HDFS、YARM、Tez、HBase、Pig、Ambari Metrics、Zookeeper、Kafka(请根据实际情况选择)
12)选择安装软件所在的哪个节点上,这里选择默认分配(请根据实际情况选择)
13)自定义服务路径、JAVA堆大小、密码等,这里选择默认(请根据实际情况选择)
# 输入Grafana密码,点击Next即可
14)进行安装部署
# 等待安装完毕,出现Success表示安装成功。
15)查看Ambari的Dashboard界面
16)查看各组件的概况和配置
# HDFS
# Hbase
至此,大数据平台Ambari搭建完毕。
- 输入编号:7707,直达文章
- 输入m|M,直达目录列表