ambari安装过程中的一些误区(跳坑指南)(ambari的两个bug修复)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: ambari安装过程中的一些误区(跳坑指南)(ambari的两个bug修复)

Ambari简介


Ambari概述


Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的创建、管理和监控。Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等;除此之外,Ambari还支持Spark、Storm等计算框架及资源调度平台YARN。

Apache Ambari 从集群节点和服务收集大量信息,并把它们表现为容易使用的,集中化的接口:Ambari Web.

Ambari Web显示诸如服务特定的摘要、图表以及警报信息。可通过Ambari Web对Hadoop集群进行创建、管理、监视、添加主机、更新服务配置等;也可以利用Ambari Web执行集群管理任务,例如启用 Kerberos 安全以及执行Stack升级。任何用户都可以查看Ambari Web特性。拥有administrator-level 角色的用户可以访问比 operator-level 或 view-only 的用户能访问的更多选项。例如,Ambari administrator 可以管理集群安全,一个 operator 用户可以监控集群,而 view-only 用户只能访问系统管理员授予他的必要的权限。

Ambari体系结构


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

Ambari Server 从整个集群上收集信息。每个主机上都有 Ambari Agent, Ambari Server 通过 Ambari Agent 控制每部主机

Ambari部署大数据集群阶段的误区

一,


Ambari是由Python,java混合编写的一个大数据管理工具,而大数据的很多组件也是基于Java环境运行的,因此,对于jdk的版本是有一定的要求的,Ambari-2.7.5版本应该使用jdk8-231或者以上的的jdk8版本,不宜过高或者过低。

二,时间服务器的选择问题


如果是离线环境,那么,时间服务器最好自己搭建并使用集群内的第一个服务器作为时间服务器,如果是非离线环境,选择一个互联网比较稳定的时间服务器,比如阿里云的时间服务器。

三,Ambari应该使用哪种数据库?


在执行 ambari-server setup  命令初始化ambari-server 的时候,有一个选择数据库的选项,看了n多博客,都是选择自建一个MySQL数据库,而Java使用MySQL需要驱动,这显然会提高一些难度,并且MySQL版本众多并不适合初学者使用,看到很多同学都迷失在数据库配置,数据库版本选择这一块了。

综上所述,在初始化ambari-server的时候,应该选择内建的postgresql数据库,优点有两个:1,专库专用 ,易于后期的维护    2,易于操作,不需要手动执行ddlSQL文件和导入数据库驱动。

在大数据集群搭建的时候,我们可能会选择有安装oozie,hive等等需要用到数据库的组件,这个时候建议搭建一个专有的独立的数据库,MySQL或者postgresql都可以,优先级应该是postgresql>mysql>oracle  ,此时搭建独立的数据库也是出于解耦的理念。

初始化ambari-server的时候建议是选择n的,如下所示:

Enter advanced database configuration [y/n] (n)? 
Configuring database...
Default properties detected. Using built-in database.

四,


安装前的环境检查是十分必须的,比如,原服务器安装过二进制原生Hadoop,此时,需要将原有的环境变量清除,重点检查hbase,hadoop和zookeeper的环境变量,ambari是不需要设置环境变量的。

检查方法如下(以检查HADOOP_HOME这个变量为例)(可以看到,所有变量里有java的变量,而没有HADOOP_HOME这个变量,如果有此变量,执行命令 unset HADOOP_HOME 即可):

[root@master ~]# env |grep JAVA
JAVA_HOME=/usr/local/jdk
[root@master ~]# env |grep HADOOP

此时还需要清除原来的安装包,当然,进程也需要清除掉的,这些都是基础的问题就不在此解释了。

五,ambari的离线安装bug


此bug不定时出现,通常是在离线安装的时候出现,即使 /etc/yum.reps.d/目录下写入的是正确的自己搭建的本地仓库地址,在ambari安装大数据集群的组件时,ambari仍会试图使用官方的repo仓库,从而导致安装失败(已经收费啦,自然不会让你使用官方的仓库啦。)

究其原因,是因为离线安装包内有写死官方的仓库地址,ambari有时候不会读取 /etc/yum.repo.d目录下的文件,而是寻找它自己的仓库文件,证据如下:

/home/HDP-GPL/centos7-ppc/3.0.0.0-1634/hdp.gpl.repo:baseurl=http://public-repo-1.hortonworks.com/HDP-GPL/centos7-ppc/3.x/updates/3.0.0.0
/home/HDP-GPL/centos7-ppc/3.0.0.0-1634/hdp.gpl.repo:gpgkey=http://public-repo-1.hortonworks.com/HDP-GPL/centos7-ppc/3.x/updates/3.0.0.0/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
/home/HDP/centos7/3.0.0.0-1634/hdp.repo:baseurl=http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.0.0
/home/HDP/centos7/3.0.0.0-1634/hdp.repo:gpgkey=http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.0.0/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
/home/HDP/centos7/3.0.0.0-1634/hdp.repo:baseurl=http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7
/home/HDP/centos7/3.0.0.0-1634/hdp.repo:gpgkey=http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.0.0/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
/home/HDP/centos7/3.0.0.0-1634/public_index.html:  var BUCKET_URL = 'http://public-repo-1.hortonworks.com';
/home/HDP/centos7/3.0.0.0-1634/HDP-3.0.0.0-1634-MAINT.xml:        <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.0.0</baseurl>
/home/HDP/centos7/3.0.0.0-1634/HDP-3.0.0.0-1634-MAINT.xml:        <baseurl>http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.0.0.0</baseurl>
/home/HDP/centos7/3.0.0.0-1634/HDP-3.0.0.0-1634-MAINT.xml:        <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7</baseurl>
/home/HDP/centos7/3.0.0.0-1634/HDP-3.0.0.0-1634.xml:        <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.0.0.0</baseurl>
/home/HDP/centos7/3.0.0.0-1634/HDP-3.0.0.0-1634.xml:        <baseurl>http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.0.0.0</baseurl>
/home/HDP/centos7/3.0.0.0-1634/HDP-3.0.0.0-1634.xml:        <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7</baseurl>
/home/HDP-UTILS/centos7/1.1.0.22/hdp-utils.repo:baseurl=http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7
/home/ambari/centos7/2.7.0.0-897/ambari.repo:#json.url = http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json
/home/ambari/centos7/2.7.0.0-897/ambari.repo:baseurl=http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.0.0
/home/ambari/centos7/2.7.0.0-897/ambari.repo:gpgkey=http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.0.0/RPM-GPG-KEY/RPM-GPG-KEY-Je

以上这些仓库文件是在ambari的离线安装包内找到的,因为这些文件导致安装失败(以上这些官方地址早已失效啦,即使你在互联网环境下也是无法使用的哦)

解决方法为更改ambari使用的数据库内的repo表的值即可。

SELECT * FROM "ambari"."repo_definition"

image.png

 将这三个地址改成自己的yum仓库内的地址即可,也就是数据库内的地址和这个文件内的地址一致即可解决此bug:

[root@master ~]# cat /etc/yum.repos.d/ambari-hdp-1.repo 
[HDP-UTILS-1.1.0.22-repo-1]
name=HDP-UTILS-1.1.0.22-repo-1
baseurl=http://192.168.0.16/HDP-UTILS/centos7/1.1.0.22
path=/
enabled=1
gpgcheck=0
[HDP-3.0-repo-1]
name=HDP-3.0-repo-1
baseurl=http://192.168.0.16/HDP/centos7/3.0.0.0-1634/
path=/
enabled=1
gpgcheck=0
[HDP-3.0-GPL-repo-1]
name=HDP-3.0-GPL-repo-1
baseurl=http://192.168.0.16/HDP-UTILS/centos7/1.1.0.22
path=/
enabled=1

六,ambari需不需要内核优化?答案是应该优化,那,不恰当的优化反而会造成很多麻烦,因此,内核的优化文件应该是这样的:


cat >> /etc/sysctl.conf << EOF
fs.file-max=1000000
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.tcp_max_syn_backlog = 16384
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_syncookies = 1
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.ip_local_port_range = 1024 65000
net.nf_conntrack_max = 6553500
net.netfilter.nf_conntrack_max = 6553500
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_established = 3600
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
kernel.numa_balancing = 0
kernel.shmmax = 68719476736
kernel.printk = 5
kernel.sysrq = 1
vm.overcommit_memory = 0
vm.swappiness = 0
EOF
### 调整文件描述符
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65535 
* hard nproc 65535 
* soft nofile 65535 
* hard nofile 65535 
EOF
##用户进程限制
cat >> /etc/security/limits.d/20-nproc.conf <<EOF
* soft nproc 8192
root soft nproc unlimited
EOF

其中,net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

这两个选项可以解决nfsgateways启动时报错从而导致启动失败:

Sep 29 09:39:47 myhost systemd: Starting Preprocess NFS configuration...
Sep 29 09:39:47 myhost systemd: rpcbind.socket failed to listen on sockets: Address family not supported by protocol
Sep 29 09:39:47 myhost systemd: Failed to listen on RPCbind Server Activation Socket.

编辑 /etc/systemd/system/sockets.target.wants/rpcbind.socket 文件,将其中 ListenStream 关于IPv6的部分注释掉,如下:

[Unit]
Description=RPCbind Server Activation Socket
[Socket]
ListenStream=/var/run/rpcbind.sock
#ListenStream=[::]:111
ListenStream=0.0.0.0:111
#BindIPv6Only=ipv6-only
[Install]
WantedBy=sockets.target


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
SQL 关系型数据库 网络安全
ambari 安装及注意事项
ambari从无到有安装
142 0
|
关系型数据库 MySQL Java
安装Ambari和HDP
安装Ambari和HDP
286 1
|
SQL Java 关系型数据库
HDP 01.Ambari安装和配置
HDP 01.Ambari安装和配置
496 0
HDP 01.Ambari安装和配置
|
分布式计算 安全 大数据
ambari安装HDFS组件(一)
ambari安装HDFS组件(一)
295 0
ambari安装HDFS组件(一)
|
数据安全/隐私保护
Ambari 2.7.3.0安装新组件
Ambari 2.7.3.0安装新组件和之前版本略有不同,本文将简述安装新组件的简单过程。 前提是大家已经安装好Ambari 2.7.3.0 这时候由于有一些组件没有添加,就需要安装新的组件。
340 0
Ambari 2.7.3.0安装新组件
安装 OushuDB Ambari 插件
我们假设用户已经安装了HDP Ambari,并且已经安装了HDFS和Zookeeper。安装步骤可以参考: ● https://docs.hortonworks.com/HDPDocuments/Ambari/Ambari-2.4.2.0/index.html ● https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.5.3/index.html
165 0
安装 OushuDB Ambari 插件
|
分布式计算 Hadoop
使用 Ambari 安装 Hadoop 集群
转自:使用 Ambari 安装 Hadoop 集群
938 0
|
关系型数据库 Java 网络安全