zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

BUG安装 修复 指南 过程 一些 两个 误区
2023-09-14 09:13:13 时间

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"

 将这三个地址改成自己的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